1 博客内容
博客内容基于STM32F103 RET6芯片,介绍PWM输出电压数据错乱的问题及更改方法。连续4个晚上整到凌晨1点左右,相关参考资料方面,参考官方文件《STM32中文参考手册_V10x》和 CSDN_Byhunpo转载:STM32 JTAG调试 。
2 PWM输出错误问题点
前文 STM32嵌入式基础开发03-使用基本定时器实现PWM输出 提到PWM输出电压使用万用表测试错乱问题,不纠结于程序而关注结果,但是后续使用PWM(TIM2 CH1/2/3/4)+DRV8848控制小车电机时出现问题。着手排查故障(Debug中PWM输出波形正常可是电压就是与目标不一致)。调整APB1和2的时钟、PWM1和2输出模式等等,试了很久,在网上找到JTAG模式影响,试过能用,而我手中板子的资料没有看到这块介绍,尚未弄明原理。
3 错误更改
-使能AFIO时钟(STM32中文参考手册8.4章节);
-JTAG做普通IO口,但SWD可用。
可参考STM32 JTAG调试的转载博客:
4 更改结果
TIM2 CH1和CH2控制左前轮;TIM2 CH3和CH4控制右边前轮。
算例1
TIM_SetCompare1(TIM2,0); //设置TIM2 CH1占空比输出 PA0
TIM_SetCompare2(TIM2,800); //设置TIM2 CH2占空比输出 PA1
TIM_SetCompare1(TIM2,0); //设置TIM2 CH3占空比输出 PA2
TIM_SetCompare2(TIM2,0); //设置TIM2 CH4占空比输出 PA3
算例2
TIM_SetCompare1(TIM2,0); //设置TIM2 CH1占空比输出 PA0
TIM_SetCompare2(TIM2,0); //设置TIM2 CH2占空比输出 PA1
TIM_SetCompare1(TIM2,800); //设置TIM2 CH3占空比输出 PA2
TIM_SetCompare2(TIM2,0); //设置TIM2 CH4占空比输出 PA3
算例1→原状态:左前轮不转,左前轮不转;更改后:左前轮正传且转速调节正常,右前轮不转;
算例2→原状态:左前轮反转,右前轮正传;更改后:左前轮不转,右前轮正传且转速调节正常。