J斌(´・ω・`)  

UART接收异常

用uart2与移远的EC20模块通讯,打log发现初始化失败。
将TTL转USB工具的RX口接到uart2的RX口监控,发现初始化正常了!!!
将uart2的RX引脚由浮空输入改为上拉输入后,一切都正常了!

默认接收引脚为浮空输入

/* rx pin initialize */
GPIO_InitStruct.Pin = rx_pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(rx_port, &GPIO_InitStruct);

更改接收引脚为上拉输入

/* rx pin initialize */
GPIO_InitStruct.Pin = rx_pin;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_PULLUP;
HAL_GPIO_Init(rx_port, &GPIO_InitStruct);

原因分析

因为RX不上拉,悬空的话,电路的某些信号影响(比如射频,大功率器件),就容易误触发,进入接收中断。改成上拉就可以解决。
而当RX脚转USB接到电脑的时候,RX再也不是悬空状态,也就不容易误触发接收中断。

参考至:https://blog.csdn.net/kangweijian/article/details/78720302

posted on 2021-02-25 16:59  J斌(´・ω・`)  阅读(1559)  评论(0编辑  收藏  举报