使用freeRTOS串口中断调度的问题,在线程中接收数据死机的问题

void USART1_IRQHandler(void)

{

    unsigned char data;

    u8 val = taskENTER_CRITICAL_FROM_ISR();

    if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)

    {

        data = USART_ReceiveData(USART1); // clear IDLE flag

//        USART_SendData(USART1,data);

        USART_ClearITPendingBit(USART1, USART_IT_RXNE);

    }

    taskEXIT_CRITICAL_FROM_ISR( val );

}

void configcom_task(void *pvParameters)

{

//    unsigned char txData;

    USART1_Init(115200);

    while(1)

    {


        if(xQueueReceive(xRxQueue,&txData, portMAX_DELAY) == pdTRUE){--串口发送数据后,在这里就卡死了

            taskENTER_CRITICAL();

            printf("Received data:%s\n ",txData);

            taskEXIT_CRITICAL();

        }

}

你好,你没有发送xQueueSend这个函数吧,导致阻塞了,参考这个帖子看看https://blog.csdn.net/qq_38531460/article/details/117807671


还有这个函数的返回值是u32位的;taskENTER_CRITICAL_FROM_ISR();


只有登录才能回复,可以选择微信账号登录