你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
查看全部评分
stm1024 发表于 2018-6-21 08:49 你使用的JLink调试吗?还是用的仿真调试? 一般情况是,出现串口错误,把串口的GPIO配置、工作模式什么的都 ...
zhdzhd-174422 发表于 2018-6-21 10:14 基本的中断服务函数: if(USART_GetFlagStatus(USART2, USART_FLAG_ORE) != RESET) {
1,清除错误标志。
2,读一次DR寄存器。
但是要不要记录错误,并作一些处理,就是你应用程序的事了。
评分
查看全部评分
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); 读取串口数据
}
具体的可以参考以下链接:
http://blog.csdn.net/qq_34401994/article/details/76359581
https://www.stmcu.org.cn/module/ ... 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);
// }
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
一般情况是,出现串口错误,把串口的GPIO配置、工作模式什么的都全重新设置一遍,就可以恢复了。不过这是治标不治本,一定要定位到出错的地方
评分
查看全部评分
jlink调试。程序正常运行是没事的,就是调试的时候有点别扭。PC端没100毫秒发一次数据,某一次执行到我们设定的中断了,人的反映当然没那么快,所以CPU处于停止状态,而串口一直有数据到,但是因为没有执行中断来接收数据,串口状态寄存器很多错误标记被置位了。我用的是IAR,调试不论是单步还是连续执行,程序中设置的断点就不会被执行到,也不知道在执行什么,串口中断也不再进去了,似乎串口硬件也不再响应数据了,所以想怎么复位串口。
如果说重新初始化,不知道那个错误标记被设置时,重新初始化。
有没有官方的处理方式?
评分
查看全部评分
谢谢你,帮助很大。
点评