close
FreeRTOS中斷簡介

configMAX_SYSCALL_INTERRUPT_PRIORITY 高於此優先級的中斷,不能被禁止。

測試過程

1、創建中斷測試任務
xTaskCreate((TaskFunction_t)interrupt_task,//任務函數(constchar*)"interrupt_task",//任務名稱(uint16_t)INTERRUPT_STK_SIZE,//任務堆棧大小(void*)NULL,//傳遞給任務函數的參數(UBaseType_t)INTERRUPT_TASK_PRIO,//任務優先級(TaskHandle_t*)&INTERRUPTTask_Handler);//任務句柄2、中斷測試任務函數voidinterrupt_task(void*pvParameters){staticu32count_num=0;while(1){count_num++;if(count_num==5){printf("關閉中斷.............\r\n");portDISABLE_INTERRUPTS();//關閉中斷delay_xms(5000);//延時5sprintf("打開中斷.............\r\n");portENABLE_INTERRUPTS();//打開中斷}vTaskDelay(1000);//延時1000個時鐘節拍,就是1sconfigTICK_RATE_HZ}}3、定時器中斷服務函數voidTIM6_IRQHandler(void){if(TIM_GetITStatus(TIM6,TIM_IT_Update))//是否產生中斷{printf("TIM6中斷\r\n");TIM_ClearITPendingBit(TIM6,TIM_IT_Update);//清除中斷標誌位}}voidTIM7_IRQHandler(void){if(TIM_GetITStatus(TIM7,TIM_IT_Update))//是否產生中斷{printf("TIM7中斷\r\n");TIM_ClearITPendingBit(TIM7,TIM_IT_Update);//清除中斷標誌位}}4、測試結果
臨界區、中斷服務函數、開關中斷中不能使用vTaskDelay()函數,此函數就是要交出CPU一段時間,如果任務一直不延時或者掛起,那麼低優先級的任務會無法獲得CPU。
作者:李肖遙
來源:技術讓夢想更偉大
因最近微信公眾平台推送規則改變,很多讀者反饋沒有及時看到更新的文章。根據最新規則,建議多點擊「推薦閱讀、分享、收藏」等,成為常讀用戶。
推薦閱讀:
為什麼國產芯片也用英文寫「datasheet」?
老闆捨不得報廢服務器主板,逼我出具X光報告
耗時2個月拆解一輛特斯拉,沒想到扒出這些秘密!
請點下【在看】給小編加雞腿

全站熱搜