2 Revīzijas

Autors SHA1 Ziņojums Datums
  JIU JIALIN e8a1f364cd 解决有卡顿的问题,添加正弦加减速功能 pirms 11 mēnešiem
  JIU JIALIN f301f764ea 曲线加速过程可以接受,但是减速过程效果很差 pirms 11 mēnešiem
75 mainītis faili ar 25165 papildinājumiem un 24915 dzēšanām
Dalītais skats
  1. +6
    -11
      PLSR/PLSR/Core/Inc/tim.h
  2. +26
    -11
      PLSR/PLSR/Core/Src/tim.c
  3. +316
    -325
      PLSR/PLSR/Core/Src/tools.c
  4. +3
    -3
      PLSR/PLSR/EWARM/settings/Project.wsdt
  5. +5
    -5
      PLSR/PLSR/EWARM/settings/test.1.dbgdt
  6. +13
    -13
      PLSR/PLSR/EWARM/settings/test.1.dnx
  7. +709
    -708
      PLSR/PLSR/EWARM/test.1.dep
  8. +2327
    -2197
      PLSR/PLSR/EWARM/test.1/Exe/test.1.hex
  9. Binārs
      PLSR/PLSR/EWARM/test.1/Exe/test.1.out
  10. Binārs
      PLSR/PLSR/EWARM/test.1/Exe/test.1.sim
  11. +761
    -733
      PLSR/PLSR/EWARM/test.1/List/test.1.map
  12. +101
    -61
      PLSR/PLSR/EWARM/test.1/Obj/.ninja_log
  13. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/app_hooks.o
  14. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/dma.o
  15. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/flash_save.o
  16. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/gpio.o
  17. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/gpio.pbi
  18. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/main.pbi
  19. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/modbus_crc.o
  20. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/modbus_log.o
  21. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/modbus_log.pbi
  22. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/os_cpu_a.o
  23. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/os_dbg.o
  24. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/startup_stm32f407xx.o
  25. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal.o
  26. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_cortex.o
  27. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_crc.o
  28. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_dma.o
  29. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_dma_ex.o
  30. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_exti.o
  31. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_flash.o
  32. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_flash_ex.o
  33. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_flash_ramfunc.o
  34. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_gpio.o
  35. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_i2c.o
  36. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_i2c_ex.o
  37. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_msp.o
  38. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_pwr.o
  39. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_pwr_ex.o
  40. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_rcc.o
  41. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_rcc_ex.o
  42. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_sram.o
  43. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_tim.o
  44. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_tim_ex.o
  45. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_timebase_tim.o
  46. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_uart.o
  47. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_usart.o
  48. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_wwdg.o
  49. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_it.o
  50. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_crc.o
  51. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_dac.o
  52. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_dma.o
  53. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_exti.o
  54. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_gpio.o
  55. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_i2c.o
  56. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_pwr.o
  57. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_rcc.o
  58. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_rng.o
  59. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_spi.o
  60. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_tim.o
  61. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_usart.o
  62. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/system_stm32f4xx.o
  63. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/test.1.pbd
  64. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/test.1.pbd.browse
  65. +20844
    -20790
      PLSR/PLSR/EWARM/test.1/Obj/test.1.pbw
  66. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/test.1_part0.pbi
  67. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/test.1_part1.pbi
  68. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/tim.o
  69. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/tim.pbi
  70. +54
    -58
      PLSR/PLSR/EWARM/test.1/Obj/tim.pbi.dep
  71. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/tools.o
  72. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/tools.pbi
  73. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/ucos_ii.o
  74. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/usart.o
  75. Binārs
      PLSR/PLSR/EWARM/test.1/Obj/usart.pbi

+ 6
- 11
PLSR/PLSR/Core/Inc/tim.h Parādīt failu

@@ -33,6 +33,7 @@ extern "C" {
#include "app_cfg.h"
#include "gpio.h"
#include <intrinsics.h>
#include <math.h>
/* USER CODE BEGIN Includes */

/* USER CODE END Includes */
@@ -108,16 +109,6 @@ typedef enum {
PLSR_DIR_REVERSE = 1 // 反向
} PLSR_Direction_t;

/**
* @brief PLSR错误代码枚举
*/
typedef enum {
PLSR_ERROR_NONE = 0, ///< 无错误
PLSR_ERROR_FREQ_OUT_OF_RANGE = 1, ///< 频率超出范围
PLSR_ERROR_PARAM_CALC_FAILED = 2, ///< 参数计算失败
PLSR_ERROR_TIMER_CONFIG_FAILED = 3, ///< 定时器配置失败
PLSR_ERROR_HARDWARE_FAULT = 4 ///< 硬件故障
} PLSR_ErrorCode_t;
/* USER CODE END Private defines */

void MX_TIM2_Init(void); // TIM2恢复用于脉冲计数
@@ -176,6 +167,8 @@ typedef struct
uint32_t part1_target_freq; ///< 第一部分目标频率
uint32_t part2_target_freq; ///< 第二部分目标频率(匀速频率)
uint32_t part3_target_freq; ///< 第三部分目标频率(通常是0)
uint32_t part1_time;
uint32_t part3_time;
uint32_t freq_step; ///< 频率步长
uint32_t default_freq; ///< 脉冲默认速度

@@ -214,7 +207,6 @@ typedef struct
uint8_t ext_port; ///< 外部事件端口选择
uint8_t dir_port; ///< 方向端口选择
uint8_t current_part; ///< 当前执行部分:1-第一部分,2-第二部分,3-第三部分
PLSR_ErrorCode_t error_code; ///< 错误代码
} PLSR_RouteConfig_t;

// 三部分执行状态枚举
@@ -260,6 +252,9 @@ void PLSR_Accel_Process(PLSR_RouteConfig_t* route); //<加减速执行函数(新
void PLSR_Accel_UpdateRates(PLSR_RouteConfig_t* route); //<更新加减速度
void PLSR_Accel_SetDefaultParams(PLSR_RouteConfig_t* route, uint32_t accel_time_ms, uint32_t decel_time_ms); //<设置默认加减速参数
uint32_t PLSR_Calculate_FreqByPosition(PLSR_RouteConfig_t* route, uint8_t is_accel); //<根据当前脉冲位置计算频率
uint32_t PLSR_Calculate_SCurve_FreqByPosition(PLSR_RouteConfig_t* route, uint8_t is_accel);
uint32_t PLSR_SCurve_Control(PLSR_RouteConfig_t* route);
void SCurve_InitializeParameters(PLSR_RouteConfig_t* route, uint32_t accel_time_ms, uint32_t decel_time_ms);

// ==================== PLSR TIM6频率配置函数 ====================
void PLSR_TIM6_SetUpdateFreq(uint32_t freq_us);


+ 26
- 11
PLSR/PLSR/Core/Src/tim.c Parādīt failu

@@ -949,7 +949,8 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
PLSR_Route_PWM_Stop();
}
else PLSR_Section_PWM_Stop();
else if(PlsrRoute.current_part == PLSR_PART_2 || PlsrRoute.current_part == PLSR_PART_3)
PLSR_Section_PWM_Stop();

// 精确累加当前段已发送的脉冲数
int64_t current_section_pulses = TIM2->ARR;
@@ -975,14 +976,11 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
PlsrRoute.run_state = PlsrRoute.part2_state;
PlsrRoute.target_freq = PlsrRoute.part2_target_freq;
PlsrRoute.initial_freq = PlsrRoute.part2_target_freq; // 更新加减速初始频率

PlsrRoute.current_freq = PlsrRoute.target_freq;
if(PlsrRoute.current_freq > 90000)
;
else
PLSR_PWM_SetFrequency(PlsrRoute.current_freq);
// if(PlsrRoute.current_freq >= 90000)
// HAL_TIM_GenerateEvent(&htim10, TIM_EVENTSOURCE_UPDATE);
PlsrRoute.current_freq = PlsrRoute.target_freq;
__HAL_TIM_SetAutoreload(&htim2, PlsrRoute.const_pulse_count);
__HAL_TIM_SET_COUNTER(&htim2, 1);
PLSR_PWM_Start();
@@ -1595,7 +1593,7 @@ uint8_t PLSR_Section_StartNewSection(PLSR_RouteConfig_t* route)
PLSR_ClearExtEvent(route);

if(PlsrRoute.accel_config.accel_algorithm == PLSR_ACCEL_CURVE)
SCurve_InitializeParameters(&PlsrRoute); //计算曲线加减速需要的参数.
SCurve_InitializeParameters(&PlsrRoute,route->part1_time,route->part3_time); //计算曲线加减速需要的参数.
return 1;
}

@@ -1950,9 +1948,17 @@ void PLSR_Accel_Process(PLSR_RouteConfig_t* route)
// ==================== 加速处理 ====================
if (route->run_state == PLSR_STATE_ACCEL)
{
// 根据当前脉冲位置计算频率(传入1表示加速过程)
uint32_t calculated_freq = PLSR_Calculate_FreqByPosition(route, 1);
uint32_t calculated_freq = 0;
if(route->accel_config.accel_algorithm == PLSR_ACCEL_LINEAR)
{
// 根据当前脉冲位置计算频率(传入1表示加速过程)
calculated_freq = PLSR_Calculate_FreqByPosition(route, 1);
}
else
{
// 参数有效,可以开始使用S曲线控制
calculated_freq = PLSR_SCurve_Control(route);
}
// 检查是否达到目标频率
if (calculated_freq >= route->target_freq)
{
@@ -1999,8 +2005,17 @@ void PLSR_Accel_Process(PLSR_RouteConfig_t* route)
{
// 根据当前脉冲位置计算频率(传入0表示减速过程)
// 使用速度位移公式 vt^2 = v0^2 - 2ax 计算当前脉冲的下一个脉冲频率
uint32_t calculated_freq = PLSR_Calculate_FreqByPosition(route, 0);
uint32_t calculated_freq = 0;
if(route->accel_config.accel_algorithm == PLSR_ACCEL_LINEAR)
{
// 根据当前脉冲位置计算频率(传入1表示加速过程)
calculated_freq = PLSR_Calculate_FreqByPosition(route, 0);
}
else
{
// 参数有效,可以开始使用S曲线控制
calculated_freq = PLSR_SCurve_Control(route);
}
// 检查是否达到目标频率
if (calculated_freq <= route->target_freq)
{


+ 316
- 325
PLSR/PLSR/Core/Src/tools.c Parādīt failu

@@ -225,9 +225,7 @@ void Calculate_PluseNum(PLSR_RouteConfig_t *route)
// 获取当前段配置(段号从1开始,数组索引从0开始)
PLSR_SectionConfig_t* current_section = &route->section[route->current_section_num - 1];
// 只处理线性加减速算法
if (route->accel_config.accel_algorithm == PLSR_ACCEL_LINEAR)
{

uint32_t v0 = route->current_freq; // 起始频率
uint32_t vt_desired = current_section->target_freq; // 期望目标频率
uint32_t vt = vt_desired; // 实际目标频率(可能会被调整)
@@ -424,6 +422,8 @@ void Calculate_PluseNum(PLSR_RouteConfig_t *route)
route->part1_state = part1_state;
route->part2_state = part2_state;
route->part3_state = part3_state;
route->part1_time = part1_time;
route->part3_time = part3_time;
route->part1_target_freq = vt;
route->part2_target_freq = vt;
route->part3_target_freq = 0;
@@ -446,7 +446,6 @@ void Calculate_PluseNum(PLSR_RouteConfig_t *route)
route->run_state = PLSR_STATE_CONST;
route->target_freq = v0;
}
}
}


@@ -618,363 +617,355 @@ void PLSR_Accel_UpdateRates(PLSR_RouteConfig_t* route)
}
}

/* ==================== 快速立方根近似 ==================== */
static uint32_t cbrt_approx(uint64_t x)
{
if (x == 0) return 0;
/* 使用位操作快速初始估算 */
uint32_t guess;
if (x >= 1000000000ULL) guess = 1000;
else if (x >= 1000000ULL) guess = 100;
else if (x >= 1000ULL) guess = 10;
else guess = 1;
/* 牛顿法迭代:x_{n+1} = (2*x_n + a/x_n²) / 3 */
for (int i = 0; i < 3; i++) {
uint64_t guess_sq = (uint64_t)guess * guess;
if (guess_sq == 0) break;
guess = (uint32_t)((2ULL * guess + x / guess_sq) / 3);
}
return guess;
}

/* ==================== S曲线参数初始化函数 ==================== */
void SCurve_InitializeParameters(PLSR_RouteConfig_t* route)
/**
* @brief S曲线加减速参数初始化
* @param route 路径配置结构体指针
* @param accel_time_ms 加速时间(毫秒)
* @param decel_time_ms 减速时间(毫秒)
*/
void SCurve_InitializeParameters(PLSR_RouteConfig_t* route, uint32_t accel_time_ms, uint32_t decel_time_ms)
{
if (route == NULL) return;
/* 输入参数验证和预处理 */
const uint32_t accel_rate = (route->accel_rate == 0) ? 1 : route->accel_rate; // Hz/ms
const uint32_t decel_rate = (route->decel_rate == 0) ? 1 : route->decel_rate; // Hz/ms
/* ============ 加速段参数计算 ============ */
uint32_t vel_start_accel = route->initial_freq;
uint32_t vel_target_accel = route->part1_target_freq;
if (vel_target_accel > PLSR_PWM_FREQ_MAX) {
vel_target_accel = PLSR_PWM_FREQ_MAX;
}
uint32_t delta_vel_accel = (vel_target_accel > vel_start_accel) ?
(vel_target_accel - vel_start_accel) : 0;
if (delta_vel_accel > 0)
if (accel_time_ms > 0)
{
/* 计算加速时间参数 */
uint32_t total_accel_time_ms = CLAMP_MIN(delta_vel_accel / accel_rate, 1);
uint32_t jerk_time_ms = CLAMP_MIN(total_accel_time_ms / 2, 1);
/* 关键公式:Δv = J·Tj²,因此 J = Δv / Tj² */
uint32_t jerk = (uint32_t)DIV_ROUND((uint64_t)delta_vel_accel * 1000ULL,
(uint64_t)jerk_time_ms * jerk_time_ms);
uint32_t max_accel = (jerk * jerk_time_ms) / 1000; // 转换单位
/* 脉冲数计算 - 使用精确积分公式 */
uint64_t T = jerk_time_ms;
uint64_t T_sq = T * T;
uint64_t T_cu = T_sq * T;
/* 第一阶段: s₁ = v₀·T + (1/6)·J·T³ */
uint64_t phase1_displacement = (uint64_t)vel_start_accel * T +
((uint64_t)jerk * T_cu) / 6000; // 除以6000而不是6是因为单位换算
uint32_t phase1_pulses = (uint32_t)DIV_ROUND(phase1_displacement, 1000);
/* 第二阶段:中间速度计算 */
uint32_t vel_mid = vel_start_accel + (uint32_t)((jerk * T_sq) / 2000);
uint32_t vel_start = route->initial_freq; // V0
uint32_t vel_target = route->part1_target_freq; // Vt
/* 第二阶段位移:s₂ = v_mid·T - (1/6)·J·T³ (注意减号,因为是减jerk阶段)*/
uint64_t phase2_displacement = (uint64_t)vel_mid * T -
((uint64_t)jerk * T_cu) / 6000;
uint32_t phase2_pulses = (uint32_t)DIV_ROUND(phase2_displacement, 1000);
/* 归一化到实际脉冲总数,防止舍入误差 */
uint32_t calculated_total = phase1_pulses + phase2_pulses;
uint32_t actual_total = route->accel_pulse_count;
if (calculated_total != actual_total && calculated_total > 0) {
if (actual_total > calculated_total)
{
phase2_pulses += (actual_total - calculated_total);
}
else
{
phase1_pulses = (uint32_t)(((uint64_t)phase1_pulses * actual_total) / calculated_total);
phase2_pulses = actual_total - phase1_pulses;
}
if (vel_target > vel_start)
{
uint32_t delta_v = vel_target - vel_start;
uint32_t Tj = accel_time_ms / 2; // 到达最大加速度的时间(加速时间的一半)
// 加加速度计算:J = 4*Vt/(Tt^2) = 4*delta_v/(accel_time_ms^2)
uint64_t jerk_numerator = 4ULL * delta_v * 1000ULL; // 乘1000进行单位换算
uint64_t jerk_denominator = (uint64_t)accel_time_ms * accel_time_ms;
uint32_t jerk = (uint32_t)(jerk_numerator / jerk_denominator); // Hz/ms²
// 最大加速度:Amax = J * Tj
uint32_t max_accel = (jerk * Tj) / 1000; // Hz/ms
// 加加速过程的脉冲数:N1 = (1/6) * J * Tj^3
uint64_t Tj_cubed = (uint64_t)Tj * Tj * Tj;
uint64_t phase1_pulses_calc = (jerk * Tj_cubed) / (6ULL * 1000ULL * 1000ULL); // 单位换算
// 减加速过程的脉冲数:N2 = V0*Tj + (5/6)*J*Tj^3
uint64_t phase2_term2 = (5ULL * jerk * Tj_cubed) / (6ULL * 1000ULL * 1000ULL);
uint64_t phase2_pulses_calc = phase2_term2;
// 存储加速段参数
route->scurve.accel_jerk = jerk;
route->scurve.accel_max = max_accel;
route->scurve.accel_jerk_time_ms = Tj;
route->scurve.accel_phase1_pulses = (uint32_t)phase1_pulses_calc;
route->scurve.accel_phase2_pulses = (uint32_t)phase2_pulses_calc;
}
else
{
// 无需加速,清零参数
route->scurve.accel_jerk = 0;
route->scurve.accel_max = 0;
route->scurve.accel_jerk_time_ms = 0;
route->scurve.accel_phase1_pulses = 0;
route->scurve.accel_phase2_pulses = 0;
}
/* 存储加速段参数 */
route->scurve.accel_jerk = jerk;
route->scurve.accel_max = max_accel;
route->scurve.accel_jerk_time_ms = jerk_time_ms;
route->scurve.accel_phase1_pulses = phase1_pulses;
route->scurve.accel_phase2_pulses = phase2_pulses;
}
else
{
/* 无加速段,清零参数 */
route->scurve.accel_jerk = 0;
route->scurve.accel_max = 0;
route->scurve.accel_jerk_time_ms = 0;
route->scurve.accel_phase1_pulses = 0;
route->scurve.accel_phase2_pulses = 0;
}
/* ============ 减速段参数计算 ============ */
uint32_t vel_start_decel = route->initial_freq;
uint32_t vel_target_decel = route->part3_target_freq;
if (vel_start_decel > PLSR_PWM_FREQ_MAX) {
vel_start_decel = PLSR_PWM_FREQ_MAX;
}
uint32_t delta_vel_decel = (vel_start_decel > vel_target_decel) ?
(vel_start_decel - vel_target_decel) : 0;
if (delta_vel_decel > 0) {
/* 计算减速时间参数 */
uint32_t total_decel_time_ms = CLAMP_MIN(delta_vel_decel / decel_rate, 1);
uint32_t jerk_time_ms = CLAMP_MIN(total_decel_time_ms / 2, 1);
/* 减速jerk计算 */
uint32_t jerk = (uint32_t)DIV_ROUND((uint64_t)delta_vel_decel * 1000ULL,
(uint64_t)jerk_time_ms * jerk_time_ms);
uint32_t max_decel = (jerk * jerk_time_ms) / 1000;
/* 减速段脉冲数计算 */
uint64_t T = jerk_time_ms;
uint64_t T_sq = T * T;
uint64_t T_cu = T_sq * T;
/* 第一阶段(减速开始): s₁ = v₀·T - (1/6)·J·T³ (减号,因为是减速)*/
uint64_t phase1_displacement = (uint64_t)vel_start_decel * T -
((uint64_t)jerk * T_cu) / 6000;
/* 防止负数 */
if ((int64_t)phase1_displacement < 0) phase1_displacement = 0;
uint32_t phase1_pulses = (uint32_t)DIV_ROUND(phase1_displacement, 1000);
/* 第二阶段:中间速度 */
uint32_t vel_mid = (vel_start_decel > (jerk * T_sq) / 2000) ?
vel_start_decel - (jerk * T_sq) / 2000 : 0;
/* 第二阶段位移:s₂ = v_mid·T + (1/6)·J·T³ (加号,因为是减jerk阶段)*/
uint64_t phase2_displacement = (uint64_t)vel_mid * T +
((uint64_t)jerk * T_cu) / 6000;
uint32_t phase2_pulses = (uint32_t)DIV_ROUND(phase2_displacement, 1000);
if (decel_time_ms > 0)
{
uint32_t vel_start_decel = route->part2_target_freq; // 减速起始速度
uint32_t vel_target_decel = route->part3_target_freq; // 减速目标速度
/* 归一化到实际脉冲总数 */
uint32_t calculated_total = phase1_pulses + phase2_pulses;
uint32_t actual_total = route->decel_pulse_count;
if (calculated_total != actual_total && calculated_total > 0) {
if (actual_total > calculated_total) {
phase2_pulses += (actual_total - calculated_total);
} else {
phase1_pulses = (uint32_t)(((uint64_t)phase1_pulses * actual_total) / calculated_total);
phase2_pulses = actual_total - phase1_pulses;
}
if (vel_start_decel > vel_target_decel)
{
uint32_t delta_v = vel_start_decel - vel_target_decel;
uint32_t Tj = decel_time_ms / 2; // 到达最大减速度的时间
// 减加速度计算:J = 4*delta_v/(decel_time_ms^2)
uint64_t jerk_numerator = 4ULL * delta_v * 1000ULL;
uint64_t jerk_denominator = (uint64_t)decel_time_ms * decel_time_ms;
uint32_t jerk = (uint32_t)(jerk_numerator / jerk_denominator);
// 最大减速度
uint32_t max_decel = (jerk * Tj) / 1000;
// 减减速过程的脉冲数:N1 = (1/6) * J * Tj^3
uint64_t Tj_cubed = (uint64_t)Tj * Tj * Tj;
uint64_t phase1_pulses_calc = (jerk * Tj_cubed) / (6ULL * 1000ULL * 1000ULL);
// 加减速过程的脉冲数:N2 = V0*Tj + (5/6)*J*Tj^3
uint64_t phase2_term2 = (5ULL * jerk * Tj_cubed) / (6ULL * 1000ULL * 1000ULL);
uint64_t phase2_pulses_calc = phase2_term2;
// 存储减速段参数
route->scurve.decel_jerk = jerk;
route->scurve.decel_max = max_decel;
route->scurve.decel_jerk_time_ms = Tj;
route->scurve.decel_phase1_pulses = (uint32_t)phase2_pulses_calc;
route->scurve.decel_phase2_pulses = (uint32_t)phase1_pulses_calc;
}
else
{
// 无需减速,清零参数
route->scurve.decel_jerk = 0;
route->scurve.decel_max = 0;
route->scurve.decel_jerk_time_ms = 0;
route->scurve.decel_phase1_pulses = 0;
route->scurve.decel_phase2_pulses = 0;
}
/* 存储减速段参数 */
route->scurve.decel_jerk = jerk;
route->scurve.decel_max = max_decel;
route->scurve.decel_jerk_time_ms = jerk_time_ms;
route->scurve.decel_phase1_pulses = phase1_pulses;
route->scurve.decel_phase2_pulses = phase2_pulses;
}
else
{
/* 无减速段,清零参数 */
route->scurve.decel_jerk = 0;
route->scurve.decel_max = 0;
route->scurve.decel_jerk_time_ms = 0;
route->scurve.decel_phase1_pulses = 0;
route->scurve.decel_phase2_pulses = 0;
}
}



/**
* @brief 重置S曲线计算状态(用于段切换)
*/
void PLSR_Reset_SCurve_State(void) {
// 通过调用函数并传入无效参数来触发状态重置
// 实际使用中,在段切换时调用此函数
}

/* ==================== 第一阶段多项式求解(加速或减速开始阶段)==================== */
static uint32_t SCurve_SolvePhase1_Polynomial(uint32_t vel_start, uint32_t jerk,
uint64_t displacement, uint8_t is_deceleration)
{
if (jerk == 0) return vel_start;
/* 方程: s = v₀·t ± (1/6)·J·t³
对于加速: s = v₀·t + (1/6)·J·t³ (正号)
对于减速: s = v₀·t - (1/6)·J·t³ (负号)
*/
if (vel_start == 0)
{
/* 特殊情况:从零速开始 */
if (is_deceleration) return 0; /* 减速从0开始不合理 */
/* 纯立方方程: s = (1/6)·J·t³ => t = ∛(6s/J) */
uint64_t t_cubed = (6000ULL * displacement) / jerk; /* 乘1000是单位换算 */
uint32_t time_ms = cbrt_approx(t_cubed);
/* v = (1/2)·J·t² */
uint64_t velocity = ((uint64_t)jerk * time_ms * time_ms) / 2000;
return CLAMP_FREQUENCY(velocity);

static double cbrt_approx(double x) {
if (x == 0) return 0;
if (x < 0) return -cbrt_approx(-x);
double guess = x / 3.0;
for (int i = 0; i < 10; i++) {
guess = (2.0 * guess + x / (guess * guess)) / 3.0;
}
/* 使用多项式近似求解 */
/* 设 x = J·s/(v₀³), 则 t/τ ≈ 1 + x/6 - x²/36,其中 τ = s/v₀ */
uint64_t v0_sq = (uint64_t)vel_start * vel_start;
uint64_t v0_cu = v0_sq * vel_start;
/* 基础时间估计: τ = s/v₀ */
uint64_t tau_ms = displacement / vel_start;
/* 修正项计算: x = J·s/(v₀³) */
uint64_t x_numerator = (uint64_t)jerk * displacement;
uint64_t x = x_numerator / v0_cu;
/* 多项式修正: t ≈ τ·(1 + x/6 - x²/36) */
uint64_t correction = x / 6;
if (x < 36) { /* 防止溢出和负数 */
uint64_t x_sq = x * x;
if (correction > x_sq / 36) {
correction -= x_sq / 36;
return guess;
}

/**
* @brief 第一阶段:根据脉冲数计算时间(加加速段,牛顿迭代)
* 方程: (1/6)*J_real*t^3 - S*1000 = 0
* @param pulse_num 当前脉冲数
* @param jerk 加加速度 (Hz/ms²)
* @return 时间 (ms)
*/
static double SCurve_GetTimeFromPulses_Phase1(uint32_t pulse_num, uint32_t jerk) {
if (pulse_num == 0 || jerk == 0) return 0.0;

double S_cont = (double)pulse_num * 1000.0; // 脉冲转换为连续量
double J_real = (double)jerk / 1000.0; // Hz/ms²

// 初始猜测:用反函数近似值作为初始点
double t = cbrt_approx((6.0 * S_cont) / J_real);
if (t <= 0.0) t = 1.0; // 避免负数或零

// 牛顿迭代
for (int i = 0; i < 40; ++i) {
double t2 = t * t;
double t3 = t2 * t;
double F = (1.0 / 6.0) * J_real * t3 - S_cont;
double dF = 0.5 * J_real * t2;

if (fabs(dF) < 1e-12) break;

double t_new = t - F / dF;
if (t_new <= 0.0) {
t_new = t * 0.5;
}
if (fabs(t_new - t) < 1e-7) {
t = t_new;
break;
}
t = t_new;
}
uint64_t time_ms = tau_ms + (tau_ms * correction) / 1000;
if (time_ms == 0) time_ms = 1;
/* 计算速度: v = v₀ ± (1/2)·J·t² */
uint64_t time_sq = (time_ms * time_ms) / 1000; /* 防止溢出 */
uint64_t accel_term = ((uint64_t)jerk * time_sq) / 2;
uint64_t velocity;
if (is_deceleration) {
/* 减速: v = v₀ - (1/2)·J·t² */
velocity = ((uint64_t)vel_start * 1000 > accel_term) ?
((uint64_t)vel_start * 1000 - accel_term) / 1000 : 0;
} else {
/* 加速: v = v₀ + (1/2)·J·t² */
velocity = vel_start + accel_term / 1000;
}
return CLAMP_FREQUENCY(velocity);

if (t < 0.0) t = 0.0;
return t; // ms
}

/* ==================== 第二阶段多项式求解(jerk减小阶段)==================== */
static uint32_t SCurve_SolvePhase2_Polynomial(uint32_t vel_start, uint32_t jerk,
uint32_t jerk_time_ms, uint64_t displacement,
uint8_t is_deceleration)
{
if (jerk == 0 || jerk_time_ms == 0) return vel_start;
/* 第二阶段的起点速度计算 */
uint64_t T_sq = (uint64_t)jerk_time_ms * jerk_time_ms;
uint32_t vel_mid;
if (is_deceleration) {
/* 减速段:第二阶段起点是第一阶段结束点 */
vel_mid = ((uint64_t)vel_start * 1000 > (jerk * T_sq) / 2) ?
vel_start - (uint32_t)((jerk * T_sq) / 2000) : 0;

/* Phase2: pulses*1000 = Vmid*t + 0.5*Amax*t^2 - (1/6)*J_real*t^3
其中 Amax = J_real * Tj (Tj 单位 ms), J_real = jerk / 1000 */
static double SCurve_GetTimeFromPulses_Phase2(uint32_t pulse_num, uint32_t V0,
uint32_t jerk, uint32_t Tj) {
if (pulse_num == 0) return 0.0;

double J_real = (double)jerk / 1000.0; /* Hz / ms^2 */
double Tj_d = (double)Tj; /* ms */
double Amax = J_real * Tj_d; /* Hz / ms (注意单位:a in Hz per ms) */
double Vmid = (double)V0; /* V0 parameter here is vmid (caller should pass vmid) */

double S_cont = (double)pulse_num * 1000.0; /* 连续量 */

double t;
if (Vmid > 0.0)
{
t = S_cont / Vmid;
if (t <= 0.0) t = Tj_d / 2.0;
} else {
/* 加速段:第二阶段起点 */
vel_mid = vel_start + (uint32_t)((jerk * T_sq) / 2000);
t = Tj_d / 2.0;
}
/* 第二阶段方程求解 */
/* 加速第二阶段: s = v_mid·t - (1/6)·J·t³ (减jerk)
减速第二阶段: s = v_mid·t + (1/6)·J·t³ (减jerk,但整体仍是减速)*/
if (vel_mid == 0) {
/* 特殊情况处理 */
uint64_t t_cubed = (6000ULL * displacement) / jerk;
uint32_t time_ms = cbrt_approx(t_cubed);
uint64_t velocity;
if (is_deceleration) {
velocity = ((uint64_t)jerk * time_ms * time_ms) / 2000;
} else {
velocity = vel_mid > ((uint64_t)jerk * time_ms * time_ms) / 2000 ?
vel_mid - ((uint64_t)jerk * time_ms * time_ms) / 2000 : 0;

/* 牛顿迭代求解 F(t) = Vmid*t + 0.5*Amax*t^2 - (1/6)*J_real*t^3 - S_cont = 0 */
for (int i = 0; i < 40; ++i) {
double t2 = t * t;
double t3 = t2 * t;
double F = Vmid * t + 0.5 * Amax * t2 - (1.0/6.0) * J_real * t3 - S_cont;
double dF = Vmid + Amax * t - 0.5 * J_real * t2;

if (fabs(dF) < 1e-12) break;
double t_new = t - F / dF;
if (t_new <= 0.0) {
t_new = t * 0.5;
}
return CLAMP_FREQUENCY(velocity);
}
/* 多项式近似求解 */
uint64_t v_mid_sq = (uint64_t)vel_mid * vel_mid;
uint64_t v_mid_cu = v_mid_sq * vel_mid;
/* 基础时间: τ = s/v_mid */
uint64_t tau_ms = displacement / vel_mid;
/* 修正项: x = J·s/(v_mid³) */
uint64_t x = ((uint64_t)jerk * displacement) / v_mid_cu;
/* 第二阶段的修正(负jerk效应)*/
uint64_t correction = x / 6;
uint64_t time_ms = (tau_ms > correction) ? tau_ms - correction : tau_ms;
if (time_ms == 0) time_ms = 1;
/* 计算最终速度 */
uint64_t time_sq = (time_ms * time_ms) / 1000;
uint64_t jerk_term = ((uint64_t)jerk * time_sq) / 2000;
uint64_t velocity;
if (is_deceleration) {
/* 减速第二阶段: v = v_mid + (1/2)·J·t² (注意这里是加号,因为jerk方向改变)*/
velocity = vel_mid + jerk_term;
} else {
/* 加速第二阶段: v = v_mid - (1/2)·J·t² (减jerk阶段)*/
velocity = (vel_mid > jerk_term) ? vel_mid - jerk_term : 0;
if (fabs(t_new - t) < 1e-7) {
t = t_new;
break;
}
t = t_new;
}
return CLAMP_FREQUENCY(velocity);

if (t < 0.0) t = 0.0;
return t; /* ms */
}

/* ==================== 主要的多项式近似速度计算函数 ==================== */
uint32_t SCurve_CalculateVelocityByPosition_Polynomial(PLSR_RouteConfig_t* route,
uint8_t is_acceleration,
uint32_t executed_pulses)
{
/* 主函数:使用上述两个反函数,并在计算频率时用 J_real */
uint32_t PLSR_Calculate_SCurve_FreqByPulses_Exact(PLSR_RouteConfig_t* route, uint8_t is_accel) {
if (route == NULL) return 0;
uint32_t vel_start, jerk, jerk_time_ms;
uint32_t phase1_pulses, phase2_pulses;
if (is_acceleration) {
/* 加速段参数 */
vel_start = route->initial_freq;
jerk = route->scurve.accel_jerk;
jerk_time_ms = route->scurve.accel_jerk_time_ms;

static uint32_t s_last_freq = 0;
int64_t current_tim2_count = __HAL_TIM_GET_COUNTER(&htim2);
uint32_t executed_pulses = current_tim2_count;

uint32_t V0, jerk, Tj, phase1_pulses, phase2_pulses;

if (is_accel) {
V0 = route->initial_freq;
jerk = route->scurve.accel_jerk; /* NOTE: assumed scaled = J_real * 1000 */
Tj = route->scurve.accel_jerk_time_ms;
phase1_pulses = route->scurve.accel_phase1_pulses;
phase2_pulses = route->scurve.accel_phase2_pulses;
} else {
/* 减速段参数 */
vel_start = route->initial_freq;
V0 = route->part2_target_freq;
jerk = route->scurve.decel_jerk;
jerk_time_ms = route->scurve.decel_jerk_time_ms;
Tj = route->scurve.decel_jerk_time_ms;
phase1_pulses = route->scurve.decel_phase1_pulses;
phase2_pulses = route->scurve.decel_phase2_pulses;
}

if (jerk == 0 || Tj == 0) return V0;

uint32_t calculated_freq = V0;

if (executed_pulses == 0) {
return V0;
}
else if (executed_pulses <= phase1_pulses)
{
/* Phase1 */
double t; /* ms */
double J_real = (double)jerk / 1000.0; /* Hz / ms^2 */
double vmid_double;
double Amax = J_real * Tj;
if (is_accel) {
vmid_double = (double)V0 + 0.5 * J_real * Tj * Tj;
} else
{
vmid_double = (double)V0 - 0.5 * J_real * Tj * Tj;
if (vmid_double < 1.0) vmid_double = 1.0;
}
if (is_accel) {
t = SCurve_GetTimeFromPulses_Phase1(executed_pulses, jerk);
double freq_double = (double)V0 + 0.5 * J_real * t * t; /* Hz */
calculated_freq = (uint32_t)(freq_double + 0.5);
}
else
{
uint32_t phase2_pulse_num = phase1_pulses - executed_pulses;
t = SCurve_GetTimeFromPulses_Phase2(phase2_pulse_num, (uint32_t)vmid_double, jerk, Tj);
double freq_double = vmid_double + Amax * t - 0.5 * J_real * t * t;
calculated_freq = (uint32_t)(freq_double + 0.5);
}
}
else if (executed_pulses <= (phase1_pulses + phase2_pulses))
{
/* Phase2 */
double Tj_d = (double)Tj;
double J_real = (double)jerk / 1000.0;
double vmid_double;
if (is_accel) {
vmid_double = (double)V0 + 0.5 * J_real * Tj_d * Tj_d;
} else {
vmid_double = (double)V0 - 0.5 * J_real * Tj_d * Tj_d;
if (vmid_double < 1.0) vmid_double = 1.0;
}

double Amax = J_real * Tj_d; /* Hz / ms */

if (is_accel)
{
uint32_t phase2_pulse_num = executed_pulses - phase1_pulses;
double t_phase2 = SCurve_GetTimeFromPulses_Phase2(phase2_pulse_num, (uint32_t)vmid_double, jerk, Tj); /* ms */
double freq_double = vmid_double + Amax * t_phase2 - 0.5 * J_real * t_phase2 * t_phase2;
calculated_freq = (uint32_t)(freq_double + 0.5);
}
else
{
uint32_t phase2_pulse_num = phase2_pulses + phase1_pulses - executed_pulses + 1;
double t_phase2 = SCurve_GetTimeFromPulses_Phase1(phase2_pulse_num, jerk); /* ms */
double freq_double = (double)0 + 0.5 * J_real * t_phase2 * t_phase2; /* Hz */
calculated_freq = (uint32_t)(freq_double + 0.5);
}
} else {
calculated_freq = is_accel ? route->part1_target_freq : route->part3_target_freq;
}
if(calculated_freq != 0 && calculated_freq <PLSR_PWM_FREQ_MAX)
s_last_freq = calculated_freq;
if (calculated_freq > PLSR_PWM_FREQ_MAX) calculated_freq = PLSR_PWM_FREQ_MAX;
if (calculated_freq == 0) calculated_freq = s_last_freq;

return calculated_freq;
}


/**
* @brief 获取下一个脉冲的周期时间
* @param current_freq 当前计算得到的频率
* @return 下一个脉冲的周期时间(微秒)
*/
uint32_t PLSR_GetNextPulsePeriod_us(uint32_t current_freq) {
if (current_freq == 0) return 0xFFFFFFFF; // 无效频率
/* 参数有效性检查 */
if (jerk == 0 || jerk_time_ms == 0) return vel_start;
if ((phase1_pulses + phase2_pulses) == 0) return vel_start;
// 周期 = 1/频率,转换为微秒
uint32_t period_us = 1000000 / current_freq;
return period_us;
}

/**
* @brief 修改后的主控制函数,使用精确的反函数计算
*/
uint32_t PLSR_SCurve_Control(PLSR_RouteConfig_t* route) {
if (route == NULL) return 0;
/* 将脉冲转换为位移 (Hz·ms) */
uint64_t displacement = (uint64_t)executed_pulses * 1000ULL;
uint32_t current_freq = 0;
/* 判断当前处于哪个阶段并求解 */
if (executed_pulses <= phase1_pulses) {
/* 第一阶段:正jerk或负jerk开始 */
return SCurve_SolvePhase1_Polynomial(vel_start, jerk, displacement, !is_acceleration);
} else if (executed_pulses <= (phase1_pulses + phase2_pulses)) {
/* 第二阶段:jerk减小阶段 */
uint64_t phase2_displacement = (uint64_t)(executed_pulses - phase1_pulses) * 1000ULL;
return SCurve_SolvePhase2_Polynomial(vel_start, jerk, jerk_time_ms,
phase2_displacement, !is_acceleration);
} else {
/* 超出范围,返回目标速度 */
if (is_acceleration) {
return CLAMP_FREQUENCY(route->part1_target_freq);
} else {
return CLAMP_FREQUENCY(route->part3_target_freq);
}
switch(route->run_state) {
case PLSR_STATE_ACCEL:
// 加速阶段使用精确S曲线计算
current_freq = PLSR_Calculate_SCurve_FreqByPulses_Exact(route, 1);
break;
case PLSR_STATE_DECEL:
// 减速阶段使用精确S曲线计算
current_freq = PLSR_Calculate_SCurve_FreqByPulses_Exact(route, 0);
break;
case PLSR_STATE_CONST:
// 匀速阶段保持目标频率
current_freq = route->target_freq;
break;
default:
current_freq = route->current_freq;
break;
}
return current_freq;
}

+ 3
- 3
PLSR/PLSR/EWARM/settings/Project.wsdt
Failā izmaiņas netiks attēlotas, jo tās ir par lielu
Parādīt failu


+ 5
- 5
PLSR/PLSR/EWARM/settings/test.1.dbgdt
Failā izmaiņas netiks attēlotas, jo tās ir par lielu
Parādīt failu


+ 13
- 13
PLSR/PLSR/EWARM/settings/test.1.dnx Parādīt failu

@@ -14,13 +14,13 @@
<StLinkDriver>
<stlinkserialNo>46232557</stlinkserialNo>
<stlinkfoundProbes />
<CStepIntDis>_ 0</CStepIntDis>
<LeaveTargetRunning>_ 0</LeaveTargetRunning>
<stlinkResetStyle>0</stlinkResetStyle>
<stlinkResetStrategy>2</stlinkResetStrategy>
<CStepIntDis>_ 0</CStepIntDis>
<LeaveTargetRunning>_ 0</LeaveTargetRunning>
</StLinkDriver>
<DebugChecksum>
<Checksum>3379969080</Checksum>
<Checksum>1483733799</Checksum>
</DebugChecksum>
<Exceptions>
<StopOnUncaught>_ 0</StopOnUncaught>
@@ -84,13 +84,6 @@
<LogFile>_ ""</LogFile>
<Category>_ 0</Category>
</LogFile>
<DisassembleMode>
<mode>0</mode>
</DisassembleMode>
<Aliases>
<Count>0</Count>
<SuppressDialog>0</SuppressDialog>
</Aliases>
<Trace2>
<Enabled>0</Enabled>
<ShowSource>0</ShowSource>
@@ -136,9 +129,6 @@
<ShowTimeSum>1</ShowTimeSum>
<SumSortOrder>0</SumSortOrder>
</EventLog>
<Breakpoints2>
<Count>0</Count>
</Breakpoints2>
<DriverProfiling>
<Enabled>0</Enabled>
<Mode>3</Mode>
@@ -152,4 +142,14 @@
<CallStackStripe>
<ShowTiming>1</ShowTiming>
</CallStackStripe>
<DisassembleMode>
<mode>0</mode>
</DisassembleMode>
<Breakpoints2>
<Count>0</Count>
</Breakpoints2>
<Aliases>
<Count>0</Count>
<SuppressDialog>0</SuppressDialog>
</Aliases>
</settings>

+ 709
- 708
PLSR/PLSR/EWARM/test.1.dep
Failā izmaiņas netiks attēlotas, jo tās ir par lielu
Parādīt failu


+ 2327
- 2197
PLSR/PLSR/EWARM/test.1/Exe/test.1.hex
Failā izmaiņas netiks attēlotas, jo tās ir par lielu
Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Exe/test.1.out Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Exe/test.1.sim Parādīt failu


+ 761
- 733
PLSR/PLSR/EWARM/test.1/List/test.1.map
Failā izmaiņas netiks attēlotas, jo tās ir par lielu
Parādīt failu


+ 101
- 61
PLSR/PLSR/EWARM/test.1/Obj/.ninja_log Parādīt failu

@@ -1,64 +1,104 @@
# ninja log v5
556 591 7784095308609417 stm32f4xx_ll_rng.pbi 5e12b9ea00d0b826
38 105 7784095303419003 stm32f4xx_ll_gpio.pbi df8b54563945d41d
583 646 7784095308935140 stm32f4xx_ll_tim.pbi b88554c6464192f5
1057 1444 7784095316950350 stm32f4xx_hal_flash_ex.pbi ac2d035774fe6a2e
1051 1448 7784095316960349 stm32f4xx_hal_pwr.pbi b347497fce55b6a8
141 175 7784095304450158 stm32f4xx_ll_pwr.pbi 952cb4e4f4edb65b
1578 1657 7784095318867766 test.1_part7.pbi 500429da32d98820
1524 2108 7784095323780438 test.1_part3.pbi 351715abf331fd8f
45 458 7784095307257064 stm32f4xx_hal_rcc_ex.pbi c1d751d24d77a2df
597 666 7784095309345140 app_hooks.pbi ffd399489d189d5a
1450 2093 7784095323353785 test.1_part4.pbi 56a4af6f8e33d2b8
42 433 7784095307007069 stm32f4xx_hal_pwr_ex.pbi b84426bf5a4ce0cf
600 685 7784095309395131 os_cpu_c.pbi eb75b848b406ea34
1145 1524 7784095317900360 stm32f4xx_hal_rcc.pbi 50976e6b18f3b8bc
103 599 7784095308679416 stm32f4xx_hal_tim.pbi 71840baae88d57c4
1054 1450 7784095316880351 stm32f4xx_hal_usart.pbi b368fafd8b8b8bb9
4151 5857 7784095360879135 test.1.pbw f11e09b552b4c82f
503 538 7784905999900596 stm32f4xx_ll_rng.pbi 5e12b9ea00d0b826
40 71 7784905995236899 stm32f4xx_ll_gpio.pbi df8b54563945d41d
147 542 7784905999950612 stm32f4xx_hal_flash_ex.pbi ac2d035774fe6a2e
47 438 7784905998849550 stm32f4xx_hal_pwr.pbi b347497fce55b6a8
45 79 7784905995286895 stm32f4xx_ll_pwr.pbi 952cb4e4f4edb65b
41 74 7784905995236899 stm32f4xx_ll_tim.pbi b88554c6464192f5
619 677 7784906001271479 test.1_part7.pbi 500429da32d98820
1098 1738 7784906011909270 test.1_part3.pbi 351715abf331fd8f
980 1370 7784906008199754 stm32f4xx_hal_rcc_ex.pbi c1d751d24d77a2df
74 141 7784905995934806 app_hooks.pbi ffd399489d189d5a
77 146 7784905995994802 os_cpu_c.pbi eb75b848b406ea34
677 1097 7784906004872212 stm32f4xx_hal_pwr_ex.pbi b84426bf5a4ce0cf
1374 2019 7784906014714303 test.1_part4.pbi 56a4af6f8e33d2b8
587 980 7784906004332215 stm32f4xx_hal_rcc.pbi 50976e6b18f3b8bc
36 425 7784905998551969 stm32f4xx_hal_usart.pbi b368fafd8b8b8bb9
439 950 7784906003781095 stm32f4xx_hal_tim.pbi 71840baae88d57c4
43 76 7784905995266903 stm32f4xx_ll_dac.pbi 7dfc4be0933cdfaf
2014 2487 7762488664073707 uart.pbi 5ce52444157923c9
1282 1328 7784095315920352 stm32f4xx_ll_dac.pbi 7dfc4be0933cdfaf
495 556 7784095308065863 stm32f4xx_ll_crc.pbi dcf41d4b97590765
456 494 7784095307637066 stm32f4xx_ll_rcc.pbi fb9ace481decf8ab
2369 2693 7784095329629266 stm32f4xx_hal_msp.pbi 8144db72f01a260b
558 596 7784095308659413 stm32f4xx_ll_spi.pbi ce805017b70a4f43
1415 1578 7784095318480350 os_dbg.pbi f7287a072fe86a55
592 772 7784095310045139 stm32f4xx_ll_usart.pbi 783190689e783d9
2545 2884 7784095331409267 stm32f4xx_hal_crc.pbi 881b29e4c80746b3
33 103 7784095303369004 stm32f4xx_ll_dma.pbi f9e6142ede2883b4
36 108 7784095303399009 stm32f4xx_ll_exti.pbi 883a2fd463949e02
1386 1414 7784095316700350 test.1_part5.pbi 6e09abdb5099df5f
1328 1572 7784095318370346 ucos_ii.pbi 4e0ab25e0060431e
1657 2027 7784095322863806 stm32f4xx_hal.pbi a073c739b6b34173
108 140 7784095304100165 stm32f4xx_ll_i2c.pbi 7f1151d8874c40c9
459 879 7784095311115129 stm32f4xx_hal_sram.pbi 4652c5af4efd4e19
667 1054 7784095313095130 stm32f4xx_hal_flash.pbi eccf13860e1d0c6a
1445 1468 7784095317390342 test.1_part6.pbi 1f990020cfbdc2d2
880 1386 7784095316550352 stm32f4xx_hal_tim_ex.pbi 3c68a2e86514987f
646 1051 7784095312665144 stm32f4xx_hal_flash_ramfunc.pbi ae498685b336a49c
433 816 7784095310855143 stm32f4xx_hal_wwdg.pbi fca2b44f67349f99
106 558 7784095308245789 stm32f4xx_hal_uart.pbi e7ca7ebbb4330340
3970 5650 7784906050685098 test.1.pbw f11e09b552b4c82f
71 103 7784905995539064 stm32f4xx_ll_crc.pbi dcf41d4b97590765
957 996 7784906004482217 stm32f4xx_ll_rcc.pbi fb9ace481decf8ab
464 502 7784905999549267 stm32f4xx_ll_spi.pbi ce805017b70a4f43
1854 2232 7784906016719795 stm32f4xx_hal_msp.pbi 8144db72f01a260b
481 518 7784905999710625 stm32f4xx_ll_usart.pbi 783190689e783d9
551 618 7784906000714119 os_dbg.pbi f7287a072fe86a55
538 574 7784906000256720 stm32f4xx_ll_dma.pbi f9e6142ede2883b4
1620 1981 7784906014335546 stm32f4xx_hal_crc.pbi 881b29e4c80746b3
425 480 7784905999168351 stm32f4xx_ll_exti.pbi 883a2fd463949e02
141 310 7784905997266114 ucos_ii.pbi 4e0ab25e0060431e
575 586 7784906000398041 test.1_part5.pbi 6e09abdb5099df5f
518 554 7784906000056714 stm32f4xx_ll_i2c.pbi 7f1151d8874c40c9
1981 2339 7784906017916397 stm32f4xx_hal.pbi a073c739b6b34173
716 1094 7784906005193626 stm32f4xx_hal_sram.pbi 4652c5af4efd4e19
996 1091 7784906004752222 test.1_part6.pbi 1f990020cfbdc2d2
1738 2101 7784906015542605 stm32f4xx_hal_flash.pbi eccf13860e1d0c6a
950 1373 7784906008199754 stm32f4xx_hal_tim_ex.pbi 3c68a2e86514987f
953 1356 7784906008069749 stm32f4xx_hal_wwdg.pbi fca2b44f67349f99
79 463 7784905999128352 stm32f4xx_hal_flash_ramfunc.pbi ae498685b336a49c
104 551 7784905999980595 stm32f4xx_hal_uart.pbi e7ca7ebbb4330340
35 454 7762489045860992 timer.pbi 8f8acc6a162957f
817 1281 7784095315510351 stm32f4xx_hal_i2c.pbi 74395538aa12fa10
2579 3023 7784095332931819 stm32f4xx_hal_dma.pbi 2d6aa8f3983bf80a
2028 2402 7784095326633620 stm32f4xx_hal_timebase_tim.pbi b6f5ce0feaca8054
685 1057 7784095313215134 stm32f4xx_hal_dma_ex.pbi 1960c5ab56ffede7
176 583 7784095308534324 stm32f4xx_hal_i2c_ex.pbi 7798e48f8e6ef374
39 455 7784095307177070 stm32f4xx_hal_exti.pbi 373789209d565f00
2108 2578 7784095328313628 main.pbi 9c0a6aa02351636a
2402 2827 7784095330459267 stm32f4xx_it.pbi d01766022cb163bc
2422 2883 7784095331169269 stm32f4xx_hal_cortex.pbi 2c6d2473a153fb5a
2828 3211 7784095334201534 system_stm32f4xx.pbi f50e519d7e78a5de
2094 2545 7784095328073625 gpio.pbi a088b5271f02118a
3777 4151 7784095344123703 test.1.pbd 363d5d355a216cdf
2693 3312 7784095335559038 test.1_part0.pbi 60db414ccd7a80f4
773 1145 7784095313986274 stm32f4xx_hal_gpio.pbi 53b438f48be9a8d0
3212 3777 7784095340331742 test.1_part1.pbi 132c9eecf11b0e50
3024 3555 7784095338269031 test.1_part2.pbi 9358ff0702a0a659
2062 2421 7784095326913633 dma.pbi 4f5ebe00ac67ed57
1468 2062 7784095323280687 tim.pbi f07c6d790a519d93
2537 2985 7784095332441816 usart.pbi 7c2d93866867ab60
1903 2369 7784095326383628 modbus_log.pbi 596603da5f343c45
1573 2030 7784095323003812 modbus_crc.pbi 9b76681ddf289794
1448 1903 7784095321727763 flash_save.pbi dc7405226be28cc6
2030 2536 7784095327803633 tools.pbi 50c1b905eccec5a9
310 716 7784906001535050 stm32f4xx_hal_i2c.pbi 74395538aa12fa10
1095 1510 7784906009628406 stm32f4xx_hal_dma.pbi 2d6aa8f3983bf80a
2264 2623 7784906020742722 stm32f4xx_hal_timebase_tim.pbi b6f5ce0feaca8054
542 953 7784906003680996 stm32f4xx_hal_i2c_ex.pbi 7798e48f8e6ef374
1511 1902 7784906013479985 stm32f4xx_hal_dma_ex.pbi 1960c5ab56ffede7
1902 2360 7784906018132419 main.pbi 9c0a6aa02351636a
1874 2264 7784906017054568 stm32f4xx_hal_exti.pbi 373789209d565f00
2396 2870 7784906023223742 stm32f4xx_it.pbi d01766022cb163bc
2623 2999 7784906023983113 stm32f4xx_hal_cortex.pbi 2c6d2473a153fb5a
2465 2803 7784906022507497 system_stm32f4xx.pbi f50e519d7e78a5de
2339 2770 7784906022184342 gpio.pbi a088b5271f02118a
555 956 7784906003860996 stm32f4xx_hal_gpio.pbi 53b438f48be9a8d0
2771 3337 7784906027909005 test.1_part0.pbi 60db414ccd7a80f4
3571 3970 7784906034025292 test.1.pbd 363d5d355a216cdf
2871 3438 7784906028921550 test.1_part1.pbi 132c9eecf11b0e50
3000 3570 7784906029571553 test.1_part2.pbi 9358ff0702a0a659
2020 2395 7784906018488587 dma.pbi 4f5ebe00ac67ed57
2360 2825 7784906022773747 tim.pbi f07c6d790a519d93
1371 1853 7784906012969969 usart.pbi 7c2d93866867ab60
2232 2678 7784906021193269 modbus_log.pbi 596603da5f343c45
1091 1619 7784906010590373 flash_save.pbi dc7405226be28cc6
2102 2464 7784906019147050 modbus_crc.pbi 9b76681ddf289794
1356 1873 7784906013259981 tools.pbi 50c1b905eccec5a9
43 582 7784915618440897 tim.pbi f07c6d790a519d93
583 1325 7784915625876327 test.1_part1.pbi 132c9eecf11b0e50
1326 1767 7784915630302801 test.1.pbd 363d5d355a216cdf
1768 3779 7784915649985852 test.1.pbw f11e09b552b4c82f
45 562 7784917494463934 tim.pbi f07c6d790a519d93
563 1285 7784917501703826 test.1_part1.pbi 132c9eecf11b0e50
1286 1767 7784917506520187 test.1.pbd 363d5d355a216cdf
1768 3893 7784917527374567 test.1.pbw f11e09b552b4c82f
39 509 7784928623168062 tim.pbi f07c6d790a519d93
510 1220 7784928630292184 test.1_part1.pbi 132c9eecf11b0e50
1221 1677 7784928634860123 test.1.pbd 363d5d355a216cdf
1677 3707 7784928654757887 test.1.pbw f11e09b552b4c82f
41 492 7784928682875712 tim.pbi f07c6d790a519d93
493 1162 7784928689567952 test.1_part1.pbi 132c9eecf11b0e50
1163 1600 7784928693956627 test.1.pbd 363d5d355a216cdf
1601 3646 7784928714013822 test.1.pbw f11e09b552b4c82f
42 507 7784929504874213 tim.pbi f07c6d790a519d93
508 1217 7784929511969174 test.1_part1.pbi 132c9eecf11b0e50
1218 1691 7784929516709113 test.1.pbd 363d5d355a216cdf
1692 4068 7784929539993199 test.1.pbw f11e09b552b4c82f
44 524 7784929568784599 tim.pbi f07c6d790a519d93
524 1252 7784929576084917 test.1_part1.pbi 132c9eecf11b0e50
1253 1705 7784929580604105 test.1.pbd 363d5d355a216cdf
1706 3866 7784929601822108 test.1.pbw f11e09b552b4c82f
48 721 7784931433466139 tim.pbi f07c6d790a519d93
721 1573 7784931441998409 test.1_part1.pbi 132c9eecf11b0e50
1574 2160 7784931447880427 test.1.pbd 363d5d355a216cdf
2161 4862 7784931474512163 test.1.pbw f11e09b552b4c82f
55 654 7784932500994422 tim.pbi f07c6d790a519d93
655 1523 7784932509680475 test.1_part1.pbi 132c9eecf11b0e50
1524 2052 7784932514983677 test.1.pbd 363d5d355a216cdf
2053 4809 7784932542008043 test.1.pbw f11e09b552b4c82f
47 543 7784933276338789 tim.pbi f07c6d790a519d93
544 1299 7784933283907452 test.1_part1.pbi 132c9eecf11b0e50
1300 1771 7784933288637568 test.1.pbd 363d5d355a216cdf
1772 4061 7784933311146536 test.1.pbw f11e09b552b4c82f
47 683 7784933341606110 tim.pbi f07c6d790a519d93
684 1547 7784933350245080 test.1_part1.pbi 132c9eecf11b0e50
1548 1999 7784933354770500 test.1.pbd 363d5d355a216cdf
2000 4664 7784933380938479 test.1.pbw f11e09b552b4c82f

Binārs
PLSR/PLSR/EWARM/test.1/Obj/app_hooks.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/dma.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/flash_save.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/gpio.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/gpio.pbi Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/main.pbi Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/modbus_crc.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/modbus_log.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/modbus_log.pbi Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/os_cpu_a.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/os_dbg.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/startup_stm32f407xx.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_cortex.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_crc.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_dma.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_dma_ex.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_exti.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_flash.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_flash_ex.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_flash_ramfunc.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_gpio.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_i2c.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_i2c_ex.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_msp.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_pwr.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_pwr_ex.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_rcc.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_rcc_ex.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_sram.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_tim.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_tim_ex.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_timebase_tim.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_uart.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_usart.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_hal_wwdg.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_it.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_crc.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_dac.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_dma.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_exti.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_gpio.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_i2c.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_pwr.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_rcc.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_rng.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_spi.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_tim.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/stm32f4xx_ll_usart.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/system_stm32f4xx.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/test.1.pbd Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/test.1.pbd.browse Parādīt failu


+ 20844
- 20790
PLSR/PLSR/EWARM/test.1/Obj/test.1.pbw
Failā izmaiņas netiks attēlotas, jo tās ir par lielu
Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/test.1_part0.pbi Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/test.1_part1.pbi Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/tim.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/tim.pbi Parādīt failu


+ 54
- 58
PLSR/PLSR/EWARM/test.1/Obj/tim.pbi.dep Parādīt failu

@@ -1,59 +1,55 @@
tim.pbi: e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\Core\Src\tim.c \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Core/Inc\tim.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Core/Inc/main.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc\stm32f4xx_hal.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Core/Inc\stm32f4xx_hal_conf.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc\stm32f4xx_hal_rcc.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_def.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/CMSIS/Device/ST/STM32F4xx/Include\stm32f4xx.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/CMSIS/Device/ST/STM32F4xx/Include/stm32f407xx.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/CMSIS/Include\core_cm4.h \
E:\Software\IAR\arm\inc\c\stdint.h E:\Software\IAR\arm\inc\c\ycheck.h \
E:\Software\IAR\arm\inc\c\yvals.h \
E:\Software\IAR\arm\inc\c\DLib_Defaults.h \
E:\\Software\\IAR\\arm\\inc\\c\\DLib_Config_Full.h \
E:\Software\IAR\arm\inc\c\DLib_Product.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/CMSIS/Include/cmsis_version.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/CMSIS/Include/cmsis_compiler.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/CMSIS/Include\cmsis_iccarm.h \
E:\Software\IAR\arm\inc\c\iccarm_builtin.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/CMSIS/Include/mpu_armv7.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/CMSIS/Device/ST/STM32F4xx/Include/system_stm32f4xx.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h \
E:\Software\IAR\arm\inc\c\stddef.h E:\Software\IAR\arm\inc\c\ysizet.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_rcc_ex.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc\stm32f4xx_hal_gpio.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio_ex.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc\stm32f4xx_hal_exti.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc\stm32f4xx_hal_dma.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_dma_ex.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc\stm32f4xx_hal_cortex.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc\stm32f4xx_hal_flash.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ex.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_flash_ramfunc.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc\stm32f4xx_hal_pwr.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_pwr_ex.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc\stm32f4xx_hal_tim.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_tim_ex.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Drivers/STM32F4xx_HAL_Driver/Inc\stm32f4xx_hal_uart.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Core/Inc/usart.h \
E:\Software\IAR\arm\inc\c\stdio.h E:\Software\IAR\arm\inc\c\string.h \
E:\Software\IAR\arm\inc\c\DLib_Product_string.h \
E:\Software\IAR\arm\inc\c\ctype.h E:\Software\IAR\arm\inc\c\stdlib.h \
E:\Software\IAR\arm\inc\c\DLib_Product_stdlib.h \
E:\Software\IAR\arm\inc\c\stdarg.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Core/Inc/modbus_crc.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Core/Inc/flash_save.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Core/Inc/modbus_log.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Core/Inc/tim.h \
E:\Software\IAR\arm\inc\c\math.h \
E:\Software\IAR\arm\inc\c\DLib_float_setup.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\UCOS\Source\ucos_ii.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\UCOS\Config\app_cfg.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\UCOS\Config\os_cfg.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\UCOS\Ports\os_cpu.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\UCOS\Source/os_trace.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Core/Inc/gpio.h \
tim.pbi: E:\Software\IAR\arm\inc\c\iar_intrinsics_common.h \
E:\Software\IAR\arm\inc\c\intrinsics.h \
E:\Software\IAR\arm\inc\c\iar_intrinsics_common.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Core/Inc\flash_save.h
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Core\Inc\tim.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Core\Inc\gpio.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\UCOS\Source\os_trace.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\UCOS\Ports\os_cpu.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\UCOS\Config\os_cfg.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\UCOS\Config\app_cfg.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\UCOS\Source\ucos_ii.h \
E:\Software\IAR\arm\inc\c\DLib_float_setup.h \
E:\Software\IAR\arm\inc\c\ycheck.h E:\Software\IAR\arm\inc\c\math.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Core\Inc\usart.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Core\Inc\modbus_log.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Core\Inc\flash_save.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Core\Inc\modbus_crc.h \
E:\Software\IAR\arm\inc\c\stdarg.h \
E:\Software\IAR\arm\inc\c\DLib_Product_stdlib.h \
E:\Software\IAR\arm\inc\c\stdlib.h E:\Software\IAR\arm\inc\c\ctype.h \
E:\Software\IAR\arm\inc\c\DLib_Product_string.h \
E:\Software\IAR\arm\inc\c\string.h E:\Software\IAR\arm\inc\c\stdio.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr_ex.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_pwr.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ramfunc.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash_ex.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_flash.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_cortex.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma_ex.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_dma.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_exti.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio_ex.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_gpio.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc_ex.h \
E:\Software\IAR\arm\inc\c\ysizet.h E:\Software\IAR\arm\inc\c\stddef.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\Legacy\stm32_hal_legacy.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\system_stm32f4xx.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\CMSIS\Include\mpu_armv7.h \
E:\Software\IAR\arm\inc\c\iccarm_builtin.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\CMSIS\Include\cmsis_iccarm.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\CMSIS\Include\cmsis_compiler.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\CMSIS\Include\cmsis_version.h \
E:\Software\IAR\arm\inc\c\DLib_Product.h \
E:\Software\IAR\arm\inc\c\DLib_Defaults.h \
E:\Software\IAR\arm\inc\c\yvals.h E:\Software\IAR\arm\inc\c\stdint.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\CMSIS\Include\core_cm4.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f407xx.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Core\Inc\stm32f4xx_hal_conf.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Core\Inc\main.h \
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\Core\Src\tim.c

Binārs
PLSR/PLSR/EWARM/test.1/Obj/tools.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/tools.pbi Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/ucos_ii.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/usart.o Parādīt failu


Binārs
PLSR/PLSR/EWARM/test.1/Obj/usart.pbi Parādīt failu


Notiek ielāde…
Atcelt
Saglabāt