OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2983|回复: 1

USART2中断死机问题

[复制链接]

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2015-9-10
在线时间
11 小时
发表于 2016-5-23 15:47:54 | 显示全部楼层 |阅读模式
不知道为啥,USART2接收大量数据之后老死机,数据是通过485口一直读写循环的,但是老死机,串口中断配置和原程序如下,请原子哥和各位大神帮帮忙,谢谢了!!
void Usart2_Init(void)
{                                                                                                                                                       
        GPIOD->CRL&=~0xeb400000;                       
        GPIOD->CRL|=0x14b00000;

         USART2->BRR=0xEA6;                //波特率9600
        USART2->CR1=0x202c;
        USART2->CR3=0x0000;               
       Set_485_In();                               
        NVIC_SetPriority(USART2_IRQn,10);        
        NVIC->ISER[1]|=(u32)1<<(38-32);                                  //中断使能
        USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开接收中断
        USART_ITConfig(USART2,USART_IT_TC,ENABLE);           //开发送中断
}

void USART2_IRQHandler(void)
{     
    if ((USART_GetFlagStatus(USART2, USART_FLAG_ORE) != RESET)||USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)  //2016.5.10ìí&#188;ó
    {                                                                                                                                                                                                                                                                                                                                                                                               
          USART_ClearITPendingBit(USART2, USART_FLAG_ORE);  
          USART_ClearITPendingBit(USART2,USART_IT_ORE);                                                                                                                                                                                                                       
         aRxBuff[RS485_RX_CNT]= USART_ReceiveData(USART2);         
          RS485_RX_CNT++;        
        Timer3_enable();
        }

        else if(USART_GetITStatus(USART2,USART_IT_TC) == SET)
        {
                USART_ClearFlag(USART2,USART_FLAG_TC);                 
                if(TS485_TX_CNT < SendCount)
            {                        
              USART_SendData(USART2,aTxBuff[TS485_TX_CNT]);
                                TS485_TX_CNT++;
                               
            }
            else
            {
                Set_485_In();          
                RS485_RX_CNT = 0;  
            }
        }
  }


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2015-9-10
在线时间
11 小时
 楼主| 发表于 2016-5-24 18:31:24 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 14:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表