FreeRTOS关闭中断时不能使用系统延时

在实现中断开关试验中,发现不能正常的关闭中断,由于使用系统自带的延时函数(vTaskDelay)会打开中断,所以不能正确的关闭中断。注释掉相关代码即可,改用其他延时函数(也不可以使用HAL_Delay延时)

static void AppTask_1(void* parameter) 
{    
    static uint32_t total_num=0;
    while (1)
    {
        total_num++;
        if (total_num >= 5)
        {
            printf("关闭中断.............\r\n");
            portDISABLE_INTERRUPTS();            //关闭中断
            //vTaskDelay(5000);                    //不能使用该函数延时
            SOFTWARE_DelayMS(5000);                //延时5s,这里的延时函数不能使用系统延时,因为系统自带的延时会打开中断
            printf("打开中断.............\r\n");    //打开中断
            portENABLE_INTERRUPTS();
            total_num = 0;
        }
        LED1_TOGGLE;        
        vTaskDelay(500);    
    }
}

 

posted @ 2024-05-16 11:25  孤情剑客  阅读(138)  评论(0)    收藏  举报