@@ -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); | |||
@@ -1595,7 +1595,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 +1950,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 +2007,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) | |||
{ | |||
@@ -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,366 @@ 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_term1 = (uint64_t)vel_start * Tj / 1000; // V0*Tj转换为脉冲数 | |||
uint64_t phase2_term2 = (5ULL * jerk * Tj_cubed) / (6ULL * 1000ULL * 1000ULL); | |||
uint64_t phase2_pulses_calc = phase2_term1 + 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_term1 = (uint64_t)vel_start_decel * Tj / 1000; | |||
uint64_t phase2_term2 = (5ULL * jerk * Tj_cubed) / (6ULL * 1000ULL * 1000ULL); | |||
uint64_t phase2_pulses_calc = phase2_term1 + 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)phase1_pulses_calc; | |||
route->scurve.decel_phase2_pulses = (uint32_t)phase2_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); | |||
// /** | |||
// * @brief 快速立方根计算(用于脉冲数反算时间) | |||
// * @param x 输入值 | |||
// * @return 立方根近似值 | |||
// */ | |||
// 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; | |||
// } | |||
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; | |||
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 = SCurve_GetTimeFromPulses_Phase1(executed_pulses, jerk); /* ms */ | |||
double J_real = (double)jerk / 1000.0; /* Hz / ms^2 */ | |||
if (is_accel) { | |||
double freq_double = (double)V0 + 0.5 * J_real * t * t; /* Hz */ | |||
calculated_freq = (uint32_t)(freq_double + 0.5); | |||
} else { | |||
double freq_double = (double)V0 - 0.5 * J_real * t * t; /* Hz */ | |||
if (freq_double < 1.0) freq_double = 1.0; | |||
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; | |||
} | |||
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 Amax = J_real * Tj_d; /* Hz / ms */ | |||
if (is_accel) | |||
{ | |||
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 | |||
{ | |||
double freq_double = vmid_double - Amax * t_phase2 + 0.5 * J_real * t_phase2 * t_phase2; | |||
if (freq_double < 1.0) freq_double = 1.0; | |||
calculated_freq = (uint32_t)(freq_double + 0.5); | |||
} | |||
} else { | |||
calculated_freq = is_accel ? route->part1_target_freq : route->part3_target_freq; | |||
} | |||
if (calculated_freq > PLSR_PWM_FREQ_MAX) calculated_freq = PLSR_PWM_FREQ_MAX; | |||
if (calculated_freq == 0) calculated_freq = 1; | |||
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; | |||
} |
@@ -178,11 +178,11 @@ | |||
<RecentlyUsedMenus>1</RecentlyUsedMenus> | |||
<MenuShadows>1</MenuShadows> | |||
<ShowAllMenusAfterDelay>1</ShowAllMenusAfterDelay> | |||
<CommandsUsage>CE0400001800138600002B00000010860000EC01000023920000030000000F810000010000005F860000030000000C8100000F000000568600003A01000000840000010000000C860000010000000E810000010000001A860000010000001F8100002200000009860000010000000B8100000200000000E1000001000000148600002C00000011860000C500000027810000060000004681000045000000028100000100000060860000010000005D8600000100000000B00000010000000886000003000000</CommandsUsage> | |||
<CommandsUsage>CF0400001800138600002B00000010860000EC01000023920000030000005F860000030000000F810000010000000C8100000F000000568600003A01000000840000010000000C8600000100000009860000010000001F810000220000001A860000010000000E8100000100000000E10000010000000B81000002000000148600002C000000278100000600000011860000C5000000028100000100000046810000460000006086000001000000088600000300000000B00000010000005D86000001000000</CommandsUsage> | |||
</MFCToolBarParameters> | |||
<CommandManager> | |||
<CommandsWithoutImages>1500FFFFFFFF838600005886000004DC00007486000000B0000001B0000002B0000003B0000004B0000005B0000006B0000007B0000008B0000009B000000AB000000BB000000C840000338400007884000011840000</CommandsWithoutImages> | |||
<MenuUserImages>2800578600001C00000002860000130000001386000031000000048100004D000000108600002F000000768600003B000000D9860000100000002392000000000000848600003C0000000D860000190000000A8600002D0000009A8600001A000000018600001200000056860000350000000084000079000000D88600000F0000000C86000018000000098600002C0000001A860000340000005E860000370000008E8600003D000000698600003A00000003860000140000001486000032000000058100004E000000558600000800000000860000110000001186000030000000DA860000060000000E8600001B00000046810000640000000B8600002E0000006086000039000000088600002B000000C386000004000000A18600003E0000005D860000360000001686000033000000C08600000E0000003787000003000000</MenuUserImages> | |||
<MenuUserImages>280013860000310000000286000013000000578600001C000000768600003B000000108600002F000000048100004D0000000D86000019000000848600003C0000002392000000000000D9860000100000000A8600002D000000568600003500000001860000120000009A8600001A00000000840000790000000C86000018000000D88600000F0000005E860000370000001A86000034000000098600002C0000008E8600003D00000014860000320000000386000014000000698600003A000000118600003000000000860000110000005586000008000000058100004E00000046810000640000000E8600001B000000DA8600000600000060860000390000000B8600002E0000005D86000036000000A18600003E000000C386000004000000088600002B0000003787000003000000C08600000E0000001686000033000000</MenuUserImages> | |||
</CommandManager> | |||
<Pane-59393> | |||
<ID>0</ID> | |||
@@ -1133,7 +1133,7 @@ | |||
</BasePane-34048> | |||
<MFCToolBar-34049> | |||
<Name>Debug</Name> | |||
<Buttons>00200000010000000800FFFF01001100434D4643546F6F6C426172427574746F6E568600000000040035000000FFFEFF0000000000000000000000000001000000010000000180138600000000040031000000FFFEFF00000000000000000000000000010000000100000001805E8600000000040037000000FFFEFF0000000000000000000000000001000000010000000180608600000000040039000000FFFEFF00000000000000000000000000010000000100000001805D8600000000040036000000FFFEFF000000000000000000000000000100000001000000018010860000000004002F000000FFFEFF0000000000000000000000000001000000010000000180118600000000000030000000FFFEFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E148600000000040032000000FFFEFF205200650073006500740020007400680065002000640065006200750067006700650064002000700072006F006700720061006D000A00520065007300650074000000000000000000000000000100000001000000000000000000000001000000060009802087000000000000FFFFFFFFFFFEFF06530079007300740065006D000100000000000000000000000100000001000000000000000000000001000000000009802387000000000000FFFFFFFFFFFEFF0443006F00720065000100000000000000000000000100000001000000000000000000000001000000000009802487000000000000FFFFFFFFFFFEFF0853006F006600740077006100720065000100000000000000000000000100000001000000000000000000000001000000000009802187000000000000FFFFFFFFFFFEFF12480061007200640077006100720065002000720065007300650074002000700069006E000100000000000000000000000100000001000000000000000000000001000000000009800000000000000400FFFFFFFFFFFEFF000000000000000000000000000100000001000000000000000000000001000000000009801986000000000000FFFFFFFFFFFEFF000100000000000000000000000100000001000000000000000000000001000000000000000000FFFEFF0544006500620075006700C6000000</Buttons> | |||
<Buttons>00200000010000000800FFFF01001100434D4643546F6F6C426172427574746F6E568600000000000035000000FFFEFF0000000000000000000000000001000000010000000180138600000000000031000000FFFEFF00000000000000000000000000010000000100000001805E8600000000000037000000FFFEFF0000000000000000000000000001000000010000000180608600000000000039000000FFFEFF00000000000000000000000000010000000100000001805D8600000000000036000000FFFEFF000000000000000000000000000100000001000000018010860000000000002F000000FFFEFF0000000000000000000000000001000000010000000180118600000000040030000000FFFEFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E148600000000000032000000FFFEFF205200650073006500740020007400680065002000640065006200750067006700650064002000700072006F006700720061006D000A00520065007300650074000000000000000000000000000100000001000000000000000000000001000000060009802087000000000000FFFFFFFFFFFEFF06530079007300740065006D000100000000000000000000000100000001000000000000000000000001000000000009802387000000000000FFFFFFFFFFFEFF0443006F00720065000100000000000000000000000100000001000000000000000000000001000000000009802487000000000000FFFFFFFFFFFEFF0853006F006600740077006100720065000100000000000000000000000100000001000000000000000000000001000000000009802187000000000000FFFFFFFFFFFEFF12480061007200640077006100720065002000720065007300650074002000700069006E000100000000000000000000000100000001000000000000000000000001000000000009800000000000000400FFFFFFFFFFFEFF000000000000000000000000000100000001000000000000000000000001000000000009801986000000000000FFFFFFFFFFFEFF000100000000000000000000000100000001000000000000000000000001000000000000000000FFFEFF0544006500620075006700C6000000</Buttons> | |||
</MFCToolBar-34049> | |||
<Pane-34049> | |||
<ID>34049</ID> | |||
@@ -1150,7 +1150,7 @@ | |||
</BasePane-34049> | |||
<MFCToolBar-34050> | |||
<Name>Main</Name> | |||
<Buttons>00200000010000002100FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000066000000FFFEFF000000000000000000000000000100000001000000018001E100000000000067000000FFFEFF000000000000000000000000000100000001000000018003E100000000000069000000FFFEFF000000000000000000000000000100000001000000018000810000000000004A000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E10000000000006C000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E10000000004006E000000FFFEFF000000000000000000000000000100000001000000018022E10000000004006D000000FFFEFF000000000000000000000000000100000001000000018025E100000000000070000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040073000000FFFEFF00000000000000000000000000010000000100000001802CE100000000040074000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000000FFFFFFFFFFFEFF0000000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000200FFFEFF04630061006C006C00FFFEFF1C50004C00530052005F005300650074007500700054006800720065006500500061007200740045007800650063007500740069006F006E000000000000000000018021810000000004005D000000FFFEFF000000000000000000000000000100000001000000018024E10000000000006F000000FFFEFF000000000000000000000000000100000001000000018028E100000000040071000000FFFEFF000000000000000000000000000100000001000000018029E100000000000072000000FFFEFF000000000000000000000000000100000001000000018002810000000000004C000000FFFEFF0000000000000000000000000001000000010000000180298100000000000061000000FFFEFF000000000000000000000000000100000001000000018027810000000000005F000000FFFEFF0000000000000000000000000001000000010000000180288100000000000060000000FFFEFF00000000000000000000000000010000000100000001801D8100000000040059000000FFFEFF00000000000000000000000000010000000100000001801E810000000004005A000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B8100000000000050000000FFFEFF00000000000000000000000000010000000100000001800C8100000000000051000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000065000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001801F810000000000005B000000FFFEFF000000000000000000000000000100000001000000018020810000000000005C000000FFFEFF0000000000000000000000000001000000010000000180468100000000020063000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00FF020000</Buttons> | |||
<Buttons>00200000010000002100FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000066000000FFFEFF000000000000000000000000000100000001000000018001E100000000000067000000FFFEFF000000000000000000000000000100000001000000018003E100000000000069000000FFFEFF000000000000000000000000000100000001000000018000810000000000004A000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018007E10000000000006C000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000018023E10000000004006E000000FFFEFF000000000000000000000000000100000001000000018022E10000000004006D000000FFFEFF000000000000000000000000000100000001000000018025E100000000000070000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001802BE100000000040073000000FFFEFF00000000000000000000000000010000000100000001802CE100000000040074000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6E4281000000000000FFFFFFFFFFFEFF0001000000000000000100000000000000010000007800000002002050FFFFFFFFFFFEFF0096000000000000000200FFFEFF04630061006C006C00FFFEFF1C50004C00530052005F005300650074007500700054006800720065006500500061007200740045007800650063007500740069006F006E000000000000000000018021810000000004005D000000FFFEFF000000000000000000000000000100000001000000018024E10000000000006F000000FFFEFF000000000000000000000000000100000001000000018028E100000000040071000000FFFEFF000000000000000000000000000100000001000000018029E100000000000072000000FFFEFF000000000000000000000000000100000001000000018002810000000000004C000000FFFEFF0000000000000000000000000001000000010000000180298100000000000061000000FFFEFF000000000000000000000000000100000001000000018027810000000000005F000000FFFEFF0000000000000000000000000001000000010000000180288100000000000060000000FFFEFF00000000000000000000000000010000000100000001801D8100000000040059000000FFFEFF00000000000000000000000000010000000100000001801E810000000004005A000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001800B8100000000040050000000FFFEFF00000000000000000000000000010000000100000001800C8100000000000051000000FFFEFF00000000000000000000000000010000000100000001805F8600000000000065000000FFFEFF00000000000000000000000000010000000100000001800000000001000000FFFFFFFFFFFEFF00000000000000000000000000010000000100000001801F810000000000005B000000FFFEFF000000000000000000000000000100000001000000018020810000000000005C000000FFFEFF0000000000000000000000000001000000010000000180468100000000020063000000FFFEFF00000000000000000000000000010000000100000000000000FFFEFF044D00610069006E00FF020000</Buttons> | |||
</MFCToolBar-34050> | |||
<Pane-34050> | |||
<ID>34050</ID> | |||
@@ -20,7 +20,7 @@ | |||
<stlinkResetStrategy>2</stlinkResetStrategy> | |||
</StLinkDriver> | |||
<DebugChecksum> | |||
<Checksum>3379969080</Checksum> | |||
<Checksum>1173251154</Checksum> | |||
</DebugChecksum> | |||
<Exceptions> | |||
<StopOnUncaught>_ 0</StopOnUncaught> | |||
@@ -287,7 +287,7 @@ | |||
<option> | |||
<name>CCAllowList</name> | |||
<version>1</version> | |||
<state>11111110</state> | |||
<state>00000000</state> | |||
</option> | |||
<option> | |||
<name>CCDebugInfo</name> | |||
@@ -374,7 +374,7 @@ | |||
</option> | |||
<option> | |||
<name>CCOptLevel</name> | |||
<state>3</state> | |||
<state>0</state> | |||
</option> | |||
<option> | |||
<name>CCOptStrategy</name> | |||
@@ -383,7 +383,7 @@ | |||
</option> | |||
<option> | |||
<name>CCOptLevelSlave</name> | |||
<state>3</state> | |||
<state>0</state> | |||
</option> | |||
<option> | |||
<name>CompilerMisraRules98</name> | |||
@@ -1,64 +1,88 @@ | |||
# 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 | |||
1179 1316 7784167807236548 stm32f4xx_ll_rng.pbi 5e12b9ea00d0b826 | |||
482 706 7784167800296124 stm32f4xx_ll_gpio.pbi df8b54563945d41d | |||
851 882 7784167802887048 stm32f4xx_ll_tim.pbi b88554c6464192f5 | |||
947 1309 7784167807088128 stm32f4xx_hal_flash_ex.pbi ac2d035774fe6a2e | |||
175 703 7784167800206123 stm32f4xx_hal_pwr.pbi b347497fce55b6a8 | |||
879 914 7784167803217106 stm32f4xx_ll_pwr.pbi 952cb4e4f4edb65b | |||
1485 1528 7784167809346973 test.1_part7.pbi 500429da32d98820 | |||
979 1565 7784167809593242 test.1_part3.pbi 351715abf331fd8f | |||
490 879 7784167802677036 stm32f4xx_hal_rcc_ex.pbi c1d751d24d77a2df | |||
883 946 7784167803517033 app_hooks.pbi ffd399489d189d5a | |||
1488 2181 7784167815668558 test.1_part4.pbi 56a4af6f8e33d2b8 | |||
488 851 7784167802567047 stm32f4xx_hal_pwr_ex.pbi b84426bf5a4ce0cf | |||
914 982 7784167803867031 os_cpu_c.pbi eb75b848b406ea34 | |||
485 978 7784167803577050 stm32f4xx_hal_rcc.pbi 50976e6b18f3b8bc | |||
704 1147 7784167805475020 stm32f4xx_hal_tim.pbi 71840baae88d57c4 | |||
983 1313 7784167807168158 stm32f4xx_hal_usart.pbi b368fafd8b8b8bb9 | |||
1314 3003 7784279571085987 test.1.pbw f11e09b552b4c82f | |||
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 | |||
450 490 7784167798971037 stm32f4xx_ll_dac.pbi 7dfc4be0933cdfaf | |||
447 487 7784167798941039 stm32f4xx_ll_crc.pbi dcf41d4b97590765 | |||
706 743 7784167801506126 stm32f4xx_ll_rcc.pbi fb9ace481decf8ab | |||
2795 3229 7784167826369586 stm32f4xx_hal_msp.pbi 8144db72f01a260b | |||
40 73 7784167794814239 stm32f4xx_ll_spi.pbi ce805017b70a4f43 | |||
1313 1484 7784167807878362 os_dbg.pbi f7287a072fe86a55 | |||
1186 1350 7784167807410203 stm32f4xx_ll_usart.pbi 783190689e783d9 | |||
1930 2414 7784167818085080 stm32f4xx_hal_crc.pbi 881b29e4c80746b3 | |||
1109 1145 7784167805495019 stm32f4xx_ll_dma.pbi f9e6142ede2883b4 | |||
1309 1481 7784167808498366 stm32f4xx_ll_exti.pbi 883a2fd463949e02 | |||
1481 1496 7784167809026978 test.1_part5.pbi 6e09abdb5099df5f | |||
34 174 7784167795819338 ucos_ii.pbi 4e0ab25e0060431e | |||
2191 2698 7784167820919536 stm32f4xx_hal.pbi a073c739b6b34173 | |||
1145 1178 7784167805842337 stm32f4xx_ll_i2c.pbi 7f1151d8874c40c9 | |||
849 1186 7784167805942199 stm32f4xx_hal_sram.pbi 4652c5af4efd4e19 | |||
37 446 7784167798521034 stm32f4xx_hal_flash.pbi eccf13860e1d0c6a | |||
1350 1478 7784167807808372 test.1_part6.pbi 1f990020cfbdc2d2 | |||
42 484 7784167798901038 stm32f4xx_hal_tim_ex.pbi 3c68a2e86514987f | |||
44 450 7784167798511157 stm32f4xx_hal_flash_ramfunc.pbi ae498685b336a49c | |||
1148 1488 7784167808711460 stm32f4xx_hal_wwdg.pbi fca2b44f67349f99 | |||
743 1109 7784167805164109 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 | |||
38 460 7784167798631034 stm32f4xx_hal_i2c.pbi 74395538aa12fa10 | |||
2182 2695 7784167820789536 stm32f4xx_hal_dma.pbi 2d6aa8f3983bf80a | |||
1316 1689 7784167810970779 stm32f4xx_hal_timebase_tim.pbi b6f5ce0feaca8054 | |||
2411 2797 7784167821919543 stm32f4xx_hal_dma_ex.pbi 1960c5ab56ffede7 | |||
461 848 7784167802356119 stm32f4xx_hal_i2c_ex.pbi 7798e48f8e6ef374 | |||
2414 2794 7784167821959537 stm32f4xx_hal_exti.pbi 373789209d565f00 | |||
40 614 7784278404872903 main.pbi 9c0a6aa02351636a | |||
1478 1932 7784167813252468 stm32f4xx_it.pbi d01766022cb163bc | |||
2179 2548 7784167819384369 stm32f4xx_hal_cortex.pbi 2c6d2473a153fb5a | |||
1982 2411 7784167817604177 system_stm32f4xx.pbi f50e519d7e78a5de | |||
37 583 7784278404462865 gpio.pbi a088b5271f02118a | |||
965 1313 7784279554645077 test.1.pbd 363d5d355a216cdf | |||
615 1215 7784278410929298 test.1_part0.pbi 60db414ccd7a80f4 | |||
73 481 7784167798891047 stm32f4xx_hal_gpio.pbi 53b438f48be9a8d0 | |||
413 965 7784279551162514 test.1_part1.pbi 132c9eecf11b0e50 | |||
2797 3379 7784167827809588 test.1_part2.pbi 9358ff0702a0a659 | |||
2549 3013 7784167824209538 dma.pbi 4f5ebe00ac67ed57 | |||
33 413 7784279545631682 tim.pbi f07c6d790a519d93 | |||
43 713 7784278405910659 usart.pbi 7c2d93866867ab60 | |||
45 615 7784278404722903 modbus_log.pbi 596603da5f343c45 | |||
1528 1982 7784167813442479 modbus_crc.pbi 9b76681ddf289794 | |||
1497 1929 7784167813162477 flash_save.pbi dc7405226be28cc6 | |||
38 425 7784279164337861 tools.pbi 50c1b905eccec5a9 | |||
38 456 7784279700485335 tim.pbi f07c6d790a519d93 | |||
457 1051 7784279706446586 test.1_part1.pbi 132c9eecf11b0e50 | |||
1051 1480 7784279710723042 test.1.pbd 363d5d355a216cdf | |||
1481 3195 7784279727551414 test.1.pbw f11e09b552b4c82f | |||
40 494 7784279796326999 tim.pbi f07c6d790a519d93 | |||
495 1103 7784279802455313 test.1_part1.pbi 132c9eecf11b0e50 | |||
1103 1509 7784279806571254 test.1.pbd 363d5d355a216cdf | |||
1510 3258 7784279823678588 test.1.pbw f11e09b552b4c82f | |||
35 526 7784286750342297 tools.pbi 50c1b905eccec5a9 | |||
526 1115 7784286755983960 test.1_part1.pbi 132c9eecf11b0e50 | |||
1115 1496 7784286759952451 test.1.pbd 363d5d355a216cdf | |||
1496 3153 7784286776198971 test.1.pbw f11e09b552b4c82f | |||
42 421 7784286865146048 tools.pbi 50c1b905eccec5a9 | |||
421 968 7784286870626236 test.1_part1.pbi 132c9eecf11b0e50 | |||
969 1324 7784286874186105 test.1.pbd 363d5d355a216cdf | |||
1324 3024 7784286890790863 test.1.pbw f11e09b552b4c82f | |||
38 524 7784287000838654 tools.pbi 50c1b905eccec5a9 | |||
525 1104 7784287006633794 test.1_part1.pbi 132c9eecf11b0e50 | |||
1104 1473 7784287010334258 test.1.pbd 363d5d355a216cdf | |||
1474 3178 7784287026954716 test.1.pbw f11e09b552b4c82f | |||
34 407 7784289088070313 tools.pbi 50c1b905eccec5a9 | |||
408 952 7784289093572070 test.1_part1.pbi 132c9eecf11b0e50 | |||
953 1302 7784289097071205 test.1.pbd 363d5d355a216cdf | |||
1303 2947 7784289113149025 test.1.pbw f11e09b552b4c82f |
@@ -1,57 +1,64 @@ | |||
main.pbi: \ | |||
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM\..\Core\Inc\dma.h \ | |||
E:\Software\IAR\arm\inc\c\iar_intrinsics_common.h \ | |||
E:\Software\IAR\arm\inc\c\intrinsics.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\tim.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:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\Core\Src\main.c \ | |||
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\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\main.c | |||
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\gpio.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/../Core/Inc/tim.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:\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 \ | |||
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\tim.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\dma.h \ | |||
e:\Users\Mortal\Desktop\Train_Camp_PLSR\PLSR\PLSR\EWARM/../Core/Inc\flash_save.h |
@@ -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 |