初级会员

- 积分
- 151
- 金钱
- 151
- 注册时间
- 2016-2-14
- 在线时间
- 40 小时
|
本帖最后由 非同小可 于 2016-11-17 20:41 编辑
void USART1_IRQHandler(void)
{
u8 Res;
u8 flag;
#if SYSTEM_SUPPORT_OS
OSIntEnter();
#endif
flag=__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_RXNE); //求助:我在仿真时接受到字符,进入中断,为什么一执行这个语句,UART_FLAG_RXNE标志位就自动清零了,而且flag=0,然后就进不去下面的判断语句。这是原子的例程,我在官方的STM32F767ZI开发板上试的
if((flag!=RESET))
{
HAL_UART_Receive(&UART1_Handler,&Res,1,1000);
if((USART_RX_STA&0x8000)==0)
{
if(USART_RX_STA&0x4000)
{
if(Res!=0x0a)USART_RX_STA=0;
else USART_RX_STA|=0x8000;
}
else
{
if(Res==0x0d)USART_RX_STA|=0x4000;
else
{
USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
USART_RX_STA++;
if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;
}
}
}
}
HAL_UART_IRQHandler(&UART1_Handler);
#if SYSTEM_SUPPORT_OS
OSIntExit();
#endif
}
#endif
|
|