电子说
1.修改工程目录 (个人习惯)
源文档是这样目录



整改后的目录

2.使用的工具 keil 作为编译器 vscode 作为浏览和编辑器
3.软件工程分析

4.工程文件分析
1)BLDC-MOTOR文件夹里面
①compu采样文件
// 用于采集速度样本数据
void SampleSpeed(void);
// 用于采集开环电流相关样本数据
void SampleOI(void);
// 用于采集电流样本数据
void SampleI(void);
// :用于采集电压样本数据
void SampleV(void);
②control控制文件
// 检查电机是否满足启动条件(如电源、信号、传感器等)
void MotorStartCheck(void);
// 控制电机启动前的延时(如软启动、防止瞬时电流过大)
void MotorStartDealy(void);
// 执行电机开环启动操作(如PWM输出、继电器吸合等)
void MotorStartOPEN(void);
// 电机运行 开环 :维持电机正常运行(如速度调节、电流控制等)
void MotorRunOPEN(void);
// 控制电机停止(如关闭PWM、刹车、自由停车等)
void MotorStop(void);
// 检测到电机异常(如过流、堵转、温度过高)时执行
void MotorError(void);
// 当错误超过阈值(如多次重启失败)时执行保护动作
void MotorErrorOver(void);
// 等待启动条件 : 信号(如按键、通信指令)以允许电机启动
void WaitStart(void);
// EN 检查电机使能信号是否有效(如硬件使能引脚状态)
void ENCheck(void);
③global.参数文件 各种参数的初始化 和系数校准


④init初始化文件
以名字为准 顾名思义 就是各种初始化 包含 主控内部rcc io gpio 电机pwm adc 等操作
⑤MOTOR 电机文件
void PWMtimer_init(void);// PWM 定时器初始化函数 设置 PWM 频率、占空比、死区时间等
void Halltimer_init(void);//霍尔传感器定时器初始化 计算转速/位置
void Commutation(unsigned int step,unsigned int PWM_ON_flag);//电机换相控制函数
void UPPWM(void);// 更新 PWM 占空比函数
unsigned char HALL_Check(void);// 霍尔信号检测函数
void Hall_init(void);// 霍尔传感器初始化函数 感觉这个应该在霍尔函数里面吧
void HALL_MOTOR_START(void);// 霍尔启动电机函数
void MOTOR_STOP0(void);// 电机制动/停止函数
⑥sensorless 传感器文件 现在这个应该就是无感里面的反电动势输入初始化了
extern void SENSORLESS_TIM_Config(void);/// 定时器初始化 函数好像不用加 全局声明吧?
extern unsigned char Sensorless_START(void); //传感器启动
2)USER文件夹里面之后主函数文件 还有 cw的中断文件 以及启动文件
我添加了一些注释进去
循环之前的初始化部分
初始化电位器的斜率
初始化相关外设
检测电流偏执
上电检测电位器是否归零

20mS采集一次速度设定值,并检查传感器
开环电流检测

每100ms做一次电流检测 和电压检测 做做一次速度计算

故障判断是实时判断的 这个优先级最高了

接下来是任务调度 包含启动 开环启动 闭环启动 开环转 闭环转 停止模式 刹车模式 错误模式

中断函数 计时器 任务函数时间调度 就是用来各个任务调度的时间的 恩

审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !