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

[复制链接]
 楼主| 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);
        }
就行了
zztishan 发表于 2012-2-13 16:55 | 显示全部楼层
进入中断后,应该要加上USART_ClearITPendingBit(USART2,USART_IT_RXNE);//清楚中断标注位
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

6

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部