本帖最后由 好整以暇 于 2019-4-21 15:12 编辑
调试项目的时候串口正常打印,单刚启动一个PWM的时候,串口乱码了,开始百度,搜到的结果都是更改文件编码格式,然鹅并不能解决我的问题,于是又回到STM32的官方手册(有问题看手册,真的有用),然后就发现问题了。
主函数如下,初始化了串口一和TIM1 的pwm的Channel1和 Channel2
[mw_shl_code=c,true]int main(void)
{ char i;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // 设置中断优先级分组2
uart_init(9600); //串口初始化为9600
TIM1_PWM_Init(899, 0); //不分频。PWM频率=72000/(899+1)=80Khz
while (1)
{
i++;
printf("正常打印过程
");
if(i>=3)
{
assert_param(IS_TIM_LIST6_PERIPH(TIM1));
TIM1->CCR2 = 1000; //舵机动作,之后加入延时
i=0;
}
}
delay_ms(2000);
delay_ms(2000);
}[/mw_shl_code]
运行后串口打印结果如图1。
查看了手册之后发现
PB14 与PA9 都是定时器1 的 Channel2,如图2。
总结一下串口乱码的几种情况,小伙伴如果遇到乱码,对照这几个问题,排查试试。
- 检查波特率是否一致,校验位,停止位是否一致。
- 传输线是否过长,波特率较高的情况下传输线过长也可能导致乱码。
- 检查系统时钟与板子上的晶振是否一致。
- 更换上位机试试。
- 检查文件格式,右键使用记事本打开输出代码所在的.C,另存为,如图3,选择ANIS。
- 检查一下串口输出所在的定时器通道有没有跟其他用到的外设冲突。
有问题查手册,手册能帮我解决很多问题,养成仔细读手册的好习惯。
一周热门 更多>