void USART2_IRQHandler(void) //串口1中断服务程序 { uint8_t Res; BaseType_t xHigherPriorityTaskWoken; if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾) { Res =USART_ReceiveData(USART2);//(USART1->DR); //读取接收到的数据 xQueueSendFromISR(g_USART2_Queue,&Res,&xHigherPriorityTaskWoken); } }
时间: 2024-02-23 12:57:19 浏览: 103
USART_IRQ中断程序
这是一个USART2的中断服务程序,用于处理USART2接收中断。当USART2接收到数据时,会触发该中断程序,并通过USART_ReceiveData函数将接收到的数据读取到Res变量中。然后,使用xQueueSendFromISR函数将Res数据发送到g_USART2_Queue队列中。需要注意的是,该队列需要在其他任务中进行创建和初始化。另外,该函数中使用了FreeRTOS中的中断嵌套机制,即使用xHigherPriorityTaskWoken变量来判断是否需要进行任务切换。如果xHigherPriorityTaskWoken变量为pdTRUE,则需要进行任务切换,以确保高优先级任务得到及时处理。
阅读全文