)STATUS寄存器的上电初始值有问题造成的,Usart的发送数据寄存器有一个缓冲移位寄存器。并且发送有两个状态,一个是发送数据寄存器为空,一个是移位寄存器发送完成。上电后Usart的状态寄存器的发送完成位为0,造成了上电以后会始终会有一个值被发送,这个值就是发送移位寄存器中的值,而这个值有时候是0X00有时候是0XFE 。在上电后至端口初始化,STM32的I/O端口处于高阻状态,有些RS232转换芯片在输入端为高阻时,可能会输出0,从而造成接收端收到0,我们已经多次看到这种现象;这时只需要在STM32的TX端加一个上拉电阻就可以解决。
最简单的解决方法:
(1)将串口的GPIO配置放在串口初始化的后面。
Stm32_Clock_Init(9); //系统时钟设置
UartNvicInit(); //串口中断初始化
InitUart1Mode(115200); //串口1初始化
InitUart2Mode(115200); //串口2初始化
UartPortInit(); //串口端口初始化
作者: minicaihong, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-1521958.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
文章评论(0条评论)
登录后参与讨论