完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
芯片是STM32F0系列的。调试的时候,板子进入某个断点,而PC端一直在发串口数据,这个时候只要再按F10就会跑到串口中断里面,但是不一定是收数据,也不知道串口的什么标记置位了,在串口状态寄存器有好多错误标记都置位了。
错误原因估计是中断的时候串口的硬件缓存区溢出了或什么的,反正它知道有很多数据没有来得及接收。 请问下这个时候怎么恢复串口,有库函数吗? |
|
相关推荐
11个回答
|
|
基本的中断服务函数:
if(USART_GetFlagStatus(USART2, USART_FLAG_ORE) != RESET) { USART_ClearFlag(USART2, USART_FLAG_ORE); //清除溢出中断 } if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) { USART_ClearITPendingBit(USART2, USART_IT_RXNE); //rebuf[num++] = USART_ReceiveData(USART2); 读取串口数据 } 具体的可以参考以下链接: https://blog.csdn.net/qq_34401994/article/details/76359581 http://www.stmcu.org/module/foru ... p;page=1#pid2346823 |
|
|
|
|
|
|
|
我看着有点混乱,要不你先把程序发上来,说说大概哪些有问题
|
|
|
|
库函数 和 寄存器都有 防止串口溢出错误的。
比如放2个进去 if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET) // { // USART_ITConfig(USART1, USART_IT_TXE, DISABLE); // } // if(USART_GetFlagStatus(USART1,USART_FLAG_ORE)==SET) // { // USART_ClearFlag(USART1,USART_FLAG_ORE); // USART_ReceiveData(USART1); // } |
|
|
|
检测到串口错误后进行清除处理
|
|
|
|
我的经验是,如果使用RTE的串口库,就没有这样的问题,所有出错情况无需理会。
|
|
|
|
这是在仿真模式吗,进入中断后,清除标志位会不会有改善啊。
|
|
|
|
你使用的JLink调试吗?还是用的仿真调试?
一般情况是,出现串口错误,把串口的GPIO配置、工作模式什么的都全重新设置一遍,就可以恢复了。不过这是治标不治本,一定要定位到出错的地方 |
|
|
|
60user36 发表于 2019-1-7 07:48 本帖最后由 everkimage 于 2018-6-21 10:17 编辑 jlink调试。程序正常运行是没事的,就是调试的时候有点别扭。PC端没100毫秒发一次数据,某一次执行到我们设定的中断了,人的反映当然没那么快,所以CPU处于停止状态,而串口一直有数据到,但是因为没有执行中断来接收数据,串口状态寄存器很多错误标记被置位了。我用的是IAR,调试不论是单步还是连续执行,程序中设置的断点就不会被执行到,也不知道在执行什么,串口中断也不再进去了,似乎串口硬件也不再响应数据了,所以想怎么复位串口。 如果说重新初始化,不知道那个错误标记被设置时,重新初始化。 有没有官方的处理方式? |
|
|
|
调试的时候肯定会打乱单片机运行的时序,尤其是单步运行,设置断点,虽然单片机程序停止不运行了,但是内部的时钟,外设却不一定停下,对于通讯类的代码调试有时不是特别好用
|
|
|
|
谢谢你,帮助很大。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
OV7670摄像头使用串口发送数据到另一个板子上的lcd,出现花屏
1169 浏览 1 评论
572 浏览 0 评论
530 浏览 0 评论
STM32CUBEMX(12)--IIC,12864OLED(0.96寸)移植
611 浏览 0 评论
STM32CUBEMX(5)--自定义红外NEC解码,定时器TIM捕获方式
561 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-18 21:43 , Processed in 0.843324 second(s), Total 60, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号