请问串口错误怎么恢复?

2019-07-14 14:46发布

芯片STM32F0系列的。调试的时候,板子进入某个断点,而PC端一直在发串口数据,这个时候只要再按F10就会跑到串口中断里面,但是不一定是收数据,也不知道串口的什么标记置位了,在串口状态寄存器有好多错误标记都置位了。
错误原因估计是中断的时候串口的硬件缓存区溢出了或什么的,反正它知道有很多数据没有来得及接收。
请问下这个时候怎么恢复串口,有库函数吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
60user36
1楼-- · 2019-07-15 16:48
 精彩回答 2  元偷偷看……
dang28
2楼-- · 2019-07-15 21:14
60user36 发表于 2019-1-7 07:48
你使用的JLink调试吗?还是用的仿真调试?
一般情况是,出现串口错误,把串口的GPIO配置、工作模式什么的都全重新设置一遍,就可以恢复了。不过这是治标不治本,一定要定位到出错的地方

本帖最后由 everkimage 于 2018-6-21 10:17 编辑

jlink调试。程序正常运行是没事的,就是调试的时候有点别扭。PC端没100毫秒发一次数据,某一次执行到我们设定的中断了,人的反映当然没那么快,所以CPU处于停止状态,而串口一直有数据到,但是因为没有执行中断来接收数据,串口状态寄存器很多错误标记被置位了。我用的是IAR,调试不论是单步还是连续执行,程序中设置的断点就不会被执行到,也不知道在执行什么,串口中断也不再进去了,似乎串口硬件也不再响应数据了,所以想怎么复位串口。
如果说重新初始化,不知道那个错误标记被设置时,重新初始化。
有没有官方的处理方式?
ldd1211_
3楼-- · 2019-07-16 02:17
调试的时候肯定会打乱单片机运行的时序,尤其是单步运行,设置断点,虽然单片机程序停止不运行了,但是内部的时钟,外设却不一定停下,对于通讯类的代码调试有时不是特别好用
dang28
4楼-- · 2019-07-16 05:00
Wu雨雨雨 发表于 2019-1-7 06:20
基本的中断服务函数:
if(USART_GetFlagStatus(USART2, USART_FLAG_ORE) != RESET)
{

谢谢你,帮助很大。

一周热门 更多>