stm32f407vet6 通过串口助手用错误波特率通信导致串口崩溃

我用串口DMA方式 收发都已经调试通了。

我现在下位机波特率是9600,串口助手也设置为9600这时收发正常。其他波特率也一样是收发正常的。

然后我把串口助手波特率设置为其他值,比如115200 然后发送一个数据。由于波特率不一样肯定是通信不上的。

然后我在把串口助手波特率改回9600 这个时候在用串口助手发送数据,下位机就接受不到数据了。查看进不了串口回调函数。

这个问题应该怎么处理?有遇到过的吗?


已邀请:

admin

赞同来自:

DMA貌似要收到一定数量的数据才会产生中断, 你这样发错误的数据帧率, 它检测到的可能只有几个数据,没有达到触发中断的条件,你如果下位机用超时接收,应该就没这样的错误了.

你这样是不是想要动态自判断波特率用?

如果是这样,你应该首先设置串口为超时接收,然后上位机一个一个波特率发送一个特定字符, 下位机只有接收到这个特定字符才发送一个回应字符,上位机接受到之后,就认为找到了波特率值. 之后上位机发送确认信息,下位机再调整串口为dma方式或者其他方式

admin

赞同来自:

当然dma加空闲中断也可以

要回复问题请先登录注册