#define USART_RECEIVE_LENGTH 200
uint16_t USART_RECEIVE_STATE = 0;
uint8_t USART_RECEIVE_BUFF[USART_RECEIVE_LENGTH];
void USART1_IRQHandler(void)
{
uint8_t RECEIVE_DATA;
if(USART_GetITFlag(USART1, USART_IT_RXNE) != RESET)
{
RECEIVE_DATA = USART_ReceiveData(USART1);
if(USART_RECEIVE_STATE & 0x8000 == 0)
{
if(RECEIVE_DATA & 0x4000)
{
if(RECEIVE_DATA != 0x0A)
USART_RECEIVE_STATE = 0;
else
USART_RECEIVE_STATE = 0x8000;
}
else
{
if(RECEIVE_DATA == 0x0D)
USART_RECEIVE_STATE = USART_RECEIVE_STATE | 0x4000;
else
{
USART_RECEIVE_BUFF[USART_RECEIVE_STATE & 0x3FFF] = RECEIVE_DATA;
USART_RECEIVE_STATE++;
if(USART_RECEIVE_STATE > USART_RECEIVE_LENGTH - 1)
USART_RECEIVE_STATE = 0;
}
}
}
}
}
stm32串口通信中断函数
于 2024-03-23 08:04:01 首次发布
![](https://img-home.csdnimg.cn/images/20240611030827.png)