STM32
直播中

凌章致

7年用户 934经验值
私信 关注
[问答]

为什么stm32一上电串口就会发送0x00呢

为什么STM32一上电串口就会发送0x00呢?有什么解决办法吗?

回帖(1)

王华

2021-12-6 15:51:46
现象:stm32 一上电串口发送0x00。
原因
(1)STATUS寄存器的上电初始值有问题造成的,Usart的发送数据寄存器有一个缓冲移位寄存器。并且发送有两个状态,一个是发送数据寄存器为空,一个是移位寄存器发送完成。上电后Usart的状态寄存器的发送完成位为0,造成了上电以后会始终会有一个值被发送,这个值就是发送移位寄存器中的值,而这个值有时候是0X00有时候是0XFE 。
(2)在上电后至端口初始化,STM32的I/O端口处于高阻状态,有些RS232转换芯片在输入端为高阻时,可能会输出0,从而造成接收端收到0,我们已经多次看到这种现象;这时只需要在STM32的TX端加一个上拉电阻就可以解决(还未验证)。
解决方法:
(1)将main函数中的所有函数都屏蔽掉,就留个while(1);
(2)看此时是否还有此现象?如果没有,请参考第3步解决;如果有,说明是串口转换芯片问题。
(3)将串口的GPIO配置放在串口初始化的后面。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分