打印

STM32 uart 接收中断关闭后不能重新打开

[复制链接]
3059|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ys0fcheng|  楼主 | 2013-7-14 21:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问各位吧又有没有遇到如题情况?

我用了两个串口中断UART1,UART4,两个串口都可能接收到数据,但是我只需要用其中一组数据即可,所以我在第一个串口中断产生后关闭另一个串口的接收中断,以防其数据冲突,在处理完命令后,我再打开所有的串口中断接收功能,此时该串口的UARTx->CR的寄存器根本就配不进去,而用Keil Debug 手动配置则可以,这是STM32的BUG还是自己程序的问题呢?不知道各位大虾遇到如此问题没?

中断子程序:   
void USART1_IRQHandler(void)
{
static uint8_t i =0 ,idle ;
  static uint8_t NewFrameFlag = 0 ;
  if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//产生接收中断
  {
//        //LED1 ^= 1 ;
        if(CloseUT_Flag == 0)
        {
                CloseUT_Flag = 1 ;
                UART4->CR1 &=~ (1<<5) ; //关闭串口4的接收中断
        }
        RxBuf[i] = USART_ReceiveData(USART1);


主程序处理部分:
if(NewFEndFlag==1)
        {
                pro_process();
                if(Sleng!=0)
                {
                        if((CurFrame.DAddr==HUB_ADDR)&&(MyAddr==1))
                                UART_send_array(UART4,(uint8_t*)(&CurFrame),Sleng);
                        else
                                UART_send_array(USART1,(uint8_t*)(&CurFrame),Sleng);                       
                }
                Sleng = 0 ;
                NewFEndFlag = 0 ;
                CloseUT_Flag = 0 ;       
                UART4->CR1 |= 1<<5 ;         //打开串口中断
                USART1->CR1 |= 1<<5 ;         //打开串口中断       
        }



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

本版积分规则

12

主题

34

帖子

0

粉丝