Ver código fonte

优化代码规范

2
JIU JIALIN 1 mês atrás
pai
commit
61dc076839
4 arquivos alterados com 589 adições e 616 exclusões
  1. +58
    -82
      PLSR/PLSR/Core/Inc/tim.h
  2. +2
    -5
      PLSR/PLSR/Core/Src/tim.c
  3. +529
    -529
      PLSR/PLSR/EWARM/test.1.dep
  4. BIN
      PLSR/PLSR/EWARM/test.1/Exe/test.1.sim

+ 58
- 82
PLSR/PLSR/Core/Inc/tim.h Ver arquivo

@@ -49,7 +49,7 @@ extern TIM_HandleTypeDef htim13;
extern TIM_HandleTypeDef htim14;

/* 全局变量声明 */
extern uint32_t g_last_freq; // 上一次计算的频率,用于PLSR_Calculate_FreqByPosition函数

/* USER CODE BEGIN Private defines */
// PLSR系统配置参数
@@ -57,18 +57,11 @@ extern uint32_t g_last_freq; // 上一次计算的频率,用于PLSR_Calculate_
#define PLSR_PWM_FREQ_MIN 1 // 最小PWM频率 1Hz
#define PLSR_PWM_FREQ_MAX 100000 // 最大PWM频率 100kHz

// PWM输出引脚定义 (仅PF6)
#define PLSR_PWM_PIN GPIO_PIN_6 // PF6 - TIM10_CH1
#define PLSR_PWM_PORT GPIOF

// TIM2硬件计数器已删除 - 改用TIM10中断计数

// 等待条件类型枚举
typedef enum {
PLSR_WAIT_PLUSEEND = 0, // 脉冲发送完成
PLSR_WAIT_TIME = 4, // 等待时间
PLSR_WAIT_CONDITION = 2, // 等待条件
PLSR_WAIT_ACT_TIME = 3, // ACT时间
PLSR_WAIT_EXT_EVENT = 1, // 外部事件
PLSR_WAIT_EXT_OR_END = 5 // 外部事件或结束
} PLSR_WaitType_t;
@@ -120,87 +113,74 @@ void MX_TIM14_Init(void);

void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);

// PLSR等待条件结构体
typedef struct {
PLSR_WaitType_t wait_type; // 等待条件类型
uint32_t wait_time_ms; // 等待时间(ms)
uint32_t act_time_ms; // ACT时间(ms)
uint8_t condition_flag; // 等待条件标志
uint8_t ext_event_flag; // 外部事件标志
typedef struct
{
PLSR_WaitType_t wait_type; ///< 等待条件类型
uint8_t ext_event_flag; ///< 外部事件标志
} PLSR_WaitCondition_t;

// PLSR加减速配置结构体
typedef struct {
uint32_t accel_time_ms; // 加速时间(ms)
uint32_t decel_time_ms; // 减速时间(ms)
PLSR_AccelAlgorithm_t accel_algorithm; // 加减速算法
PLSR_AccelAlgorithm_t accel_algorithm; ///< 加减速算法
} PLSR_AccelConfig_t;

// PLSR段配置结构体
typedef struct {
uint8_t section_num; // 段号(1-10)
uint32_t target_freq; // 目标频率(Hz)
int32_t target_pulse; // 目标脉冲数
int32_t actual_pulse; ///< 实际可发脉冲数
uint8_t next_section; // 下一段号(0表示结束)
PLSR_WaitCondition_t wait_condition; // 等待条件

typedef struct
{
uint32_t target_freq; ///< 目标频率(Hz)
int32_t target_pulse; ///< 目标脉冲数
int32_t actual_pulse; ///< 实际可发脉冲数
PLSR_WaitCondition_t wait_condition; ///< 等待条件
uint8_t section_num; ///< 段号(1-10)
uint8_t next_section; ///< 下一段号(0表示结束)
} PLSR_SectionConfig_t;

// PLSR路径控制结构体 - 添加三部分状态管理
typedef struct {
PLSR_RouteState_t route_state; // 路径状态
uint8_t current_section_num; // 当前段号
uint32_t current_freq; // 当前频率
uint32_t target_freq; // 目标频率
uint32_t initial_freq; // 加减速初始频率,专门用于存储加减速开始时的频率
int32_t pulse_count; // 当前脉冲计数
int32_t prevPulseCount; // 上阶段目标脉冲
uint32_t start_freq; // 起始频率
uint32_t end_freq; // 结束频率
uint8_t output_port; // 输出端口选择
uint8_t ext_port; // 外部事件端口选择
uint8_t dir_port; ///< 方向端口选择:
uint16_t dir_delay; //<方向延时时间
uint16_t dir_logic; //<脉冲方向逻辑,0-正逻辑(脉冲递增),1-负逻辑(脉冲递减)
PLSR_Mode_t mode; // 模式(相对/绝对)
PLSR_Direction_t direction; // 方向
PLSR_AccelConfig_t accel_config; // 加减速配置
// 运行状态参数
PLSR_RunState_t run_state; // 当前运行状态
// 三部分脉冲计数(重新定义用途)
int32_t accel_pulse_count; // 第一部分脉冲数(可能是加速、减速或匀速)
int32_t const_pulse_count; // 第二部分脉冲数(匀速)
int32_t decel_pulse_count; // 第三部分脉冲数(减速到0)
// 新增:三部分状态标识
PLSR_RunState_t part1_state; // 第一部分状态(ACCEL/DECEL/CONST)
PLSR_RunState_t part2_state; // 第二部分状态(通常是CONST)
PLSR_RunState_t part3_state; // 第三部分状态(通常是DECEL)
typedef struct
{
uint32_t current_freq; ///< 当前频率
uint32_t target_freq; ///< 目标频率
uint32_t initial_freq; ///< 加减速初始频率,专门用于存储加减速开始时的频率
uint32_t start_freq; ///< 起始频率
uint32_t end_freq; ///< 结束频率
uint32_t part1_target_freq; ///< 第一部分目标频率
uint32_t part2_target_freq; ///< 第二部分目标频率(匀速频率)
uint32_t part3_target_freq; ///< 第三部分目标频率(通常是0)
uint32_t freq_step; ///< 频率步长
uint32_t default_freq; ///< 脉冲默认速度

int32_t pulse_count; ///< 当前脉冲计数
int32_t prevPulseCount; ///< 上阶段目标脉冲
int32_t accel_pulse_count; ///< 第一部分脉冲数(可能是加速、减速或匀速)
int32_t const_pulse_count; ///< 第二部分脉冲数(匀速)
int32_t decel_pulse_count; ///< 第三部分脉冲数(减速到0)
// 新增:三部分目标频率
uint32_t part1_target_freq; // 第一部分目标频率
uint32_t part2_target_freq; // 第二部分目标频率(匀速频率)
uint32_t part3_target_freq; // 第三部分目标频率(通常是0)
uint32_t wait_start_tick; ///< 等待开始时间
uint32_t act_start_tick; ///< ACT开始时间
uint32_t default_accel_time_ms; ///< 默认加速时间(ms)
uint32_t default_decel_time_ms; ///< 默认减速时间(ms)
uint32_t accel_rate; ///< 加速度(Hz/ms) = default_freq / default_accel_time_ms
uint32_t decel_rate; ///< 减速度(Hz/ms) = default_freq / default_decel_time_ms
// 新增:当前执行部分
uint8_t current_part; // 当前执行部分:1-第一部分,2-第二部分,3-第三部分
PLSR_AccelConfig_t accel_config; ///< 加减速配置
PLSR_SectionConfig_t section[PLSR_MAX_SECTIONS]; ///< 段配置数组
uint32_t freq_step; // 频率步长
uint32_t wait_start_tick; // 等待开始时间
uint32_t act_start_tick; // ACT开始时间
uint16_t section_num; //<脉冲总段数
uint16_t start_section; //<起始段数
uint32_t default_freq; //<脉冲默认速度
uint16_t dir_delay; ///< 方向延时时间
uint16_t dir_logic; ///< 脉冲方向逻辑,0-正逻辑(脉冲递增),1-负逻辑(脉冲递减)
uint16_t section_num; ///< 脉冲总段数
uint16_t start_section; ///< 起始段数
// 默认加减速参数
uint32_t default_accel_time_ms; // 默认加速时间(ms)
uint32_t default_decel_time_ms; // 默认减速时间(ms)
uint32_t accel_rate; // 加速度(Hz/ms) = default_freq / default_accel_time_ms
uint32_t decel_rate; // 减速度(Hz/ms) = default_freq / default_decel_time_ms
PLSR_RouteState_t route_state; ///< 路径状态
PLSR_RunState_t run_state; ///< 当前运行状态
PLSR_RunState_t part1_state; ///< 第一部分状态(ACCEL/DECEL/CONST)
PLSR_RunState_t part2_state; ///< 第二部分状态(通常是CONST)
PLSR_RunState_t part3_state; ///< 第三部分状态(通常是DECEL)
PLSR_Mode_t mode; ///< 模式(相对/绝对)
PLSR_Direction_t direction; ///< 方向
PLSR_SectionConfig_t section[PLSR_MAX_SECTIONS]; // 段配置数组
uint8_t current_section_num; ///< 当前段号
uint8_t output_port; ///< 输出端口选择
uint8_t ext_port; ///< 外部事件端口选择
uint8_t dir_port; ///< 方向端口选择
uint8_t current_part; ///< 当前执行部分:1-第一部分,2-第二部分,3-第三部分
} PLSR_RouteConfig_t;

// 三部分执行状态枚举
@@ -212,11 +192,7 @@ typedef enum {
} PLSR_PartState_t;

// 默认参数定义
#define PLSR_DEFAULT_STEP_FREQ_US 1000 // 默认TIM6更新频率1000微秒(1ms)
#define PLSR_DEFAULT_ACCEL_TIME_MS 100 // 默认加速时间100ms
#define PLSR_DEFAULT_DECEL_TIME_MS 100 // 默认减速时间100ms
#define PLSR_DEFAULT_ACT_TIME_MS 200 // 默认ACT时间200ms
#define PLSR_DEFAULT_WAIT_TIME_MS 200 // 默认等待时间200ms
#define PLSR_DEFAULT_STEP_FREQ_US 100 // 默认TIM6更新频率1000微秒(1ms)
#define SCALE_FACTOR 2000ULL

void Calculate_PluseNum(PLSR_RouteConfig_t *route); //<计算段脉冲数,根据加减速率和目标频率计算每段的加速、匀速、减速脉冲数


+ 2
- 5
PLSR/PLSR/Core/Src/tim.c Ver arquivo

@@ -2117,11 +2117,8 @@ uint8_t PLSR_Section_CheckWaitCondition(PLSR_RouteConfig_t* route)
// 根据等待条件类型进行相应的检查
switch (wait_cond->wait_type) {
case PLSR_WAIT_PLUSEEND:
return PLSR_Section_CheckPulseComplete(route);
case PLSR_WAIT_CONDITION:
// 该标志可通过PLSR_SetSectionCondition函数设置
return wait_cond->condition_flag;
return PLSR_Section_CheckPulseComplete(route);
case PLSR_WAIT_EXT_EVENT:
// 外部事件条件:等待外部事件触发
// 外部事件可通过PLSR_SetExtEvent函数设置


+ 529
- 529
PLSR/PLSR/EWARM/test.1.dep
Diferenças do arquivo suprimidas por serem muito extensas
Ver arquivo


BIN
PLSR/PLSR/EWARM/test.1/Exe/test.1.sim Ver arquivo


Carregando…
Cancelar
Salvar