初级会员

- 积分
- 79
- 金钱
- 79
- 注册时间
- 2015-9-10
- 在线时间
- 11 小时
|
不知道为啥,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ìí¼ó
{
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;
}
}
}
|
|