学习正点原子讲解FreeRTOS中断管理心得和cortex-M3权威指南笔记
1、一個任務恢復運行:
(1)恢復一個任務的運行:將一個任務從掛起態恢復到就緒態,只有通過函數vTaskSuspend()設置為掛起態的任務才能使用vTaskResume()恢復,函數原型為void vTaskResume(TaskHandle_t xTaskToResume),xTaskToResume要恢復任務的句柄。
(2)中斷服務函數中恢復一個任務的運行:用于中斷服務函數中恢復一個任務,函數的原型如下:
BaseType_t xTaskResumeFromISR(TaskHandle_t xTaskToResume),xTaskToResume是要恢復任務的句柄。返回值為pdTRUE:恢復運行的任務的任務優先級等于或高于正在運行的任務(被中斷打斷的任務),這意味著在退出中斷服務函數以后必須進行一次上下文切換。返回值為pdFALSE:恢復運行的任務的任務優先級低于當前正在運行的任務(被中斷打斷的任務),這意味著在退出中斷服務函數以后不需要進行上下文切換。
2、中斷是微控制器一個很常見的特性,中斷有硬件產生,當中斷產生以后,CPU就會中斷當前的流程轉而去處理中斷服務,Cotex-M內核的MCU提供了一個用于中斷管理的嵌套向量中斷控制器(NVIC)。
3、Cotex-M3和M4的NVIC最多能支持240個IRQ(中斷請求)、1個不可屏蔽中斷(NMI)、一個Systick(滴答定時器)中斷和多個系統異常。
4、與中斷有關的寄存器都在NVIC和SCB中。Cotex-M3\M4中的異常就是中斷。
5、在使用FreeRTOS的時候,最關心的是使用系統異常中的第14號系統異常--PendSV(為系統設備而設的“可懸掛請求”)和第15號系統異常SysTick(系統滴答定時器--也是周期性溢出的時基定時器)。系統異常從0號-15號。外部中斷從16號到225號共240個中斷,如下圖所示:
6、Cortex-M3/M4中斷優先級的數值越小,則優先級越高。
7、每一個中斷都有一個寄存器(8位的寄存器)去設置對應的優先級。
8、Cortex-M3/M4有3個系統異常,復位、NMI以及硬fault,它們有固定的優先級(不可編程),并且它們的優先級號是負數,從而高于所有其它異常。所有其它異常的優先級則都是可編程的(但不能編程為負數)。
9、復位的優先級為最高、NMI第二(不可屏蔽中斷)、硬fault第三,注:這三個系統異常不可編程。
10、中斷屏蔽寄存器有三個:PRIMASK、FAULTMASK、BASEPRI。
11、FreeRTOS操作的屏蔽中斷是BASEPRI。
12、FreeRTOS任務優先級數值越小,優先級越低。
待續。。。。。。
總結
以上是生活随笔為你收集整理的学习正点原子讲解FreeRTOS中断管理心得和cortex-M3权威指南笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CodeBlacks程序调试的那些事
- 下一篇: 学习《FreeRTOS源码详解与应用开发