在用串口三接收数据的时候发现进入中断会死掉 一开始没加入清除标志位的函数,加了之后只能接收两位 中断函数与串口1串口2是一样的,但是前两个串口都正常,求大神解惑
void USART3_IRQHandler(void)
{
u8 Res=0;
if(USART_GetITStatus(USART3, USART_IT_RXNE) != RESET)
{
USART_ClearITPendingBit(USART3, USART_IT_RXNE); //清除中断标志位
Res=USART_ReceiveData(USART3);
*p_gprs_buf = Res; //将接收到的字符串存到缓存中
p_gprs_buf++; //缓存指针向后移动
M_printf("****************%c
",Res);
if(p_gprs_buf>=&Uart3_GPRS_Buf[GPRS_REV_BUF_LEN]) //如果缓存满,将缓存指针指向缓存的首地址
{
p_gprs_buf=Uart3_GPRS_Buf;
}
}
} |