zhy233090130 发表于 2019-9-5 22:01:13

STM32F051串口(232)死机

STM32F051串口1波特率配置成9600bits/s,将USB转232串口工具波特率设置成9600bits/s发命令时,MCU正常返回数值;将USB转232串口工具波特率设置成其他值如38400bits/s发命令时,MCU串口会死机,必须复位重启后串口才正常,不知道是何问题,请大神们指点?

yklstudent-1794 发表于 2019-9-6 09:08:06

仿真看看死哪里就知道什么问题了

wenyangzeng 发表于 2019-9-6 06:55:40

串口工具的波特率改成38400,STM32F051的波特率也要改成相同波特率。改完后当然要重启初始化串口才能生效。

zhy233090130 发表于 2019-9-6 08:20:28

wenyangzeng 发表于 2019-9-6 06:55
串口工具的波特率改成38400,STM32F051的波特率也要改成相同波特率。改完后当然要重启初始化串口才能生效。 ...

STM32F051串口的波特率必须是9600,我想表达的意思是如果串口工具的波特率不是9600,这时串口工具给STM32F051发命令时会造成MCU的串口死掉,必须复位或重新初始化串口才能恢复,一般来讲任何波特率发过来的数据MCU接收会是乱码但不会造成MCU串口死机,我这边遇到的情况就会造成MCU串口死机

哀歌与世无争 发表于 2019-9-6 08:41:37

zhy233090130 发表于 2019-9-6 08:20
STM32F051串口的波特率必须是9600,我想表达的意思是如果串口工具的波特率不是9600,这时串口工具给STM32 ...

正常是不会死机的,可能接收处理的代码有问题

mylovemcu 发表于 2019-9-6 10:24:14

提高波特率一般不会出现问题,现在出现死机情况可能是你程序的问题
检查一下中断函数,是不是中断函数中处理了太多事情,因为38400比9600快了不少,如果在中断里做了很多事情,会导致当前事件还没处理完,下一次中断又来了,这种情况就会导致程序死机

wudianjun2001 发表于 2019-9-6 15:02:17

程序处理的不好,建议一帧数据有完整的结构,包头包尾校验什么的,接收到包头才接收下面的数据,超时什么的都要处理好
页: [1]
查看完整版本: STM32F051串口(232)死机