|
楼主 |
发表于 2019-6-25 12:44:11
|
显示全部楼层
串口中断代码如下
void USART1_IRQHandler(void)
{
u8 byte_temp = 0;
BaseType_t xHigherPriorityTaskWoken = pdFALSE; /* Initialised to pdFALSE. */
if(USART_GetFlagStatus(USART1,USART_FLAG_ORE) == SET) // 检查 ORE 标志
{
USART_ReceiveData(USART1);
USART_ClearFlag(USART1,USART_FLAG_ORE);
}
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收到数据
{
USART_ClearITPendingBit(USART1, USART_IT_RXNE);
byte_temp = USART_ReceiveData(USART1);
if (xQueueIsQueueFullFromISR(xMessageBufferM2900Data) == pdFALSE)
{
xQueueSendFromISR(xMessageBufferM2900Data, (void *)&byte_temp, &xHigherPriorityTaskWoken);
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
}
}
}
|
|