打印

STM32 串口很奇怪的问题啊。没有数据缺一直进中断

[复制链接]
9300|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
achang85|  楼主 | 2012-1-4 16:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
香主,急救啊!!
我做一个项目,导师叫6号必须做完,但是我遇到了个很奇怪的问题啊!
我是这样做的:我的项目用到3个带STM32的板子。其中一个为主模块,另外两个位从模块。我们设主模块为A,两个模块分别为B和C。A要通过串口来控制B,C,并且从B.C来接收数据。A还要通过串口来和上位机通信。我是这样设置的
A的USART3——PC
A的USART1——B的USART2
A的USART2——C的USART2
也就是A的三个串口要同时工作。所有的串口的接收都是用中断来实现的。
出现了很奇怪的问题啊
我单步的时候,在A的USART2的接收中断中
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)         
          {   
           RxData = USART_ReceiveData(USART2);
        USART_ClearFlag(USART2,USART_FLAG_RXNE);        
                  }
每次可以到if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
这一句,但是到不了RxData = USART_ReceiveData(USART2);这一句。也就是进入了中断。但是USART_IT_RXNE又没有 置位!怎么会这样啊。按理说,进入了中断函数,USART_IT_RXNE就应该被置位了啊。USART1也有是这个情况
香主,求救啊。我很急啊
谢谢啊
沙发
香水城| | 2012-1-4 16:31 | 只看该作者
可以在中断中检查一下USART_SR寄存器,看看是什么引起了中断?

使用特权

评论回复
板凳
achang85|  楼主 | 2012-1-4 16:37 | 只看该作者
哦,解决了,是溢出中断的问题

使用特权

评论回复
地板
achang85|  楼主 | 2012-1-4 16:38 | 只看该作者
在中断最前边加上       
        if (USART_GetFlagStatus(USART3, USART_FLAG_ORE) != RESET)
        {
          (u16)(USART3->DR & (u16)0x01FF);
        }
就行了

使用特权

评论回复
5
zztishan| | 2012-2-13 16:55 | 只看该作者
进入中断后,应该要加上USART_ClearITPendingBit(USART2,USART_IT_RXNE);//清楚中断标注位

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

6

帖子

0

粉丝