日韩在线不卡免费视频一区,日韩欧美精品一区二区三区经典,日产精品码2码三码四码区,人妻无码一区二区三区免费,日本feerbbwdh少妇丰满

王超的小站
認(rèn)證:VIP會(huì)員
所在專題目錄 查看專題
FreeRTOS移植詳解1-專題概覽(基于Microchip dsPIC33C系列芯片)
FreeRTOS移植詳解2-滴答定時(shí)器實(shí)現(xiàn)(基于Microchip dsPIC33C系列芯片)
FreeRTOS移植詳解3-內(nèi)核裁剪(基于Microchip dsPIC33C系列芯片)
FreeRTOS移植詳解4-中斷配置(基于Microchip dsPIC33C系列芯片)
FreeRTOS移植詳解5-臨界段處理(基于Microchip dsPIC33C系列芯片)
FreeRTOS移植詳解6-任務(wù)堆棧初始化和啟動(dòng)(基于Microchip dsPIC33C系列芯片)
作者動(dòng)態(tài) 更多
PIC24 & dsPIC33 MCU Bootloader開(kāi)發(fā)
2021-11-08 15:12
PIC16 & PIC18 MCU Bootloader開(kāi)發(fā)
2021-11-08 15:00
Python開(kāi)發(fā)環(huán)境搭建(for Bootloader)
2021-11-08 14:58
Python開(kāi)發(fā)環(huán)境搭建 (for Control)
2021-01-27 18:43
MCU擴(kuò)展CAN/CAN FD接口方案-MCU軟件動(dòng)手實(shí)驗(yàn)
2020-11-25 14:11

FreeRTOS移植詳解4-中斷配置(基于Microchip dsPIC33C系列芯片)

      FreeRTOS的中斷配置是一個(gè)很重要的內(nèi)容,這里需要根據(jù)dsPIC33C的中斷知識(shí)來(lái)配置。我們首先了解下dsPIC33C的中斷向量表(IVT),IVT位于程序存儲(chǔ)器中,如下圖所示。起始單元地址是0x000004,IVT包含6個(gè)不可屏蔽陷阱向量和最多246個(gè)中斷源。一般來(lái)說(shuō)每個(gè)中斷源都有自己的中斷向量。每個(gè)中斷向量都包含一個(gè)24位寬的地址。每個(gè)中斷向量單元中編程的值是其相關(guān)的中斷服務(wù)程序(ISR)的起始地址。對(duì)于0x000014~0x001FE的中斷向量在指定的用戶優(yōu)先級(jí)內(nèi)具有固定的優(yōu)先級(jí),同一用戶優(yōu)先級(jí)的中斷向量根據(jù)其自然優(yōu)先級(jí)區(qū)分優(yōu)先順序。自然優(yōu)先級(jí)與中斷向量在向量表中的位置有關(guān)。一般來(lái)說(shuō),較低地址的中斷向量具有較高的自然優(yōu)先級(jí)。例如,與向量0(地址0x000014)相關(guān)的中斷比任何其他向量地址的中斷具有更高的自然優(yōu)先級(jí)。

      每個(gè)中斷可以指定的用戶優(yōu)先級(jí)有7個(gè)1~7。1是用戶可選的最低優(yōu)先級(jí),7是最高優(yōu)先級(jí)。滴答定時(shí)器Timer1初始化函數(shù)vApplicationSetupTickTimerInterrupt()中將中斷優(yōu)先級(jí)設(shè)為configKERNEL_INTERRUPT_PRIORITY,這里是最低優(yōu)先級(jí)1。每個(gè)用戶中斷優(yōu)先級(jí)最簡(jiǎn)單的設(shè)置方法為借助MAPLAB x IDE的插件MCC進(jìn)行圖形化的配置,如下圖。

      介紹完了每個(gè)用戶中斷的優(yōu)先級(jí)情況,我們繼續(xù)了解dsPIC33CK CPU的優(yōu)先級(jí)設(shè)定,CPU優(yōu)先級(jí)的設(shè)定由SR寄存器中的IPL[2:0]和CORCON寄存器中的IP[3]共同組合形成的IPL[3:0]制定。但從寄存器可以看出IPL[3]不可寫(xiě)'1',因此實(shí)際CPU的優(yōu)先級(jí)并不能大于7,所以用戶軟件不能屏蔽陷阱事件(不可屏蔽中斷的中斷優(yōu)先級(jí)大于7)。同時(shí)由SR寄存器可知,默認(rèn)CPU的優(yōu)先級(jí)IPL[2:0]為0,低于用戶中斷的最低優(yōu)先級(jí)1,因此所有的用戶中斷都可以打斷CPU。

      根據(jù)上一節(jié)FreeRTOS裁剪中關(guān)于中斷優(yōu)先級(jí)的宏定義配置情況,我們可以畫(huà)出下圖,也就是RTOS希望優(yōu)先級(jí)5~7的中斷永遠(yuǎn)不被禁止,不會(huì)因?yàn)閳?zhí)行FreeRTOS內(nèi)核而延遲,并且這些中斷不可調(diào)用FreeRTOS的API函數(shù);而優(yōu)先級(jí)1~4是可以被RTOS管理的,也就是RTOS可以根據(jù)需要禁止這些中斷,這些中斷可以調(diào)用FreeRTOS的API函數(shù)。

      FreeRTOS開(kāi)關(guān)中斷函數(shù)為portENABLE_INTERRUPTS()和portDISABLE_INTERRUPTS(),這兩個(gè)函數(shù)其實(shí)是宏定義,在portmacro.h中有定義,如下:

      可以看出,關(guān)中斷時(shí)將CPU的優(yōu)先級(jí)IPL[2:0]設(shè)置為configMAX_SYSCALL_INTERRUPT_PRIORITY,因此優(yōu)先級(jí)小于等于configMAX_SYSCALL_INTERRUPT_PRIORITY的中斷會(huì)被FreeRTOS內(nèi)核屏蔽;類似的開(kāi)中斷的實(shí)現(xiàn)通過(guò)將CPU的優(yōu)先級(jí)IPL[2:0]設(shè)置為0。

聲明:本內(nèi)容為作者獨(dú)立觀點(diǎn),不代表電子星球立場(chǎng)。未經(jīng)允許不得轉(zhuǎn)載。授權(quán)事宜與稿件投訴,請(qǐng)聯(lián)系:editor@netbroad.com
覺(jué)得內(nèi)容不錯(cuò)的朋友,別忘了一鍵三連哦!
贊 5
收藏 4
關(guān)注 43
成為作者 賺取收益
全部留言
0/200
  • 星球居民-RsPeIyMH 2020-11-19 21:55
    加油(? ??_??)?
    回復(fù)