新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > STM32 NVIC嵌套向量中斷控制器函數分析

        STM32 NVIC嵌套向量中斷控制器函數分析

        作者: 時間:2016-11-30 來源:網絡 收藏

        IMR:中斷屏蔽寄存器Interrupt Mask Register 32位寄存器前19位有效
        EMR: 事件屏蔽寄存器Eventmaskregister 32位寄存器前19位有效
        RTST: 上升沿觸發選擇寄存器Rising edge trigger select register
        FTSR:下降沿觸發選擇寄存器Falling edge trigger select register
        SWIER:軟件中斷事件寄存器Software interrupt event register
        PR: 掛起寄存器Pending Register

        I/O口復用里的配置寄存器EXTICR 每個I/O口可以配置成中斷輸入


        STM32 任何一個IO口都可以配置成中斷輸入口,但是IO口的數目遠大于中斷線數(16個)。于是STM32就這樣設計,GPIOA~GPIOG的[15:0]分別對應中斷線15~0。這樣每個中斷線對應了最多7個IO口,以線0為例:它對應了GPIOA.0、PIOB.0、GPIOC.0、GPIOD.0、 GPIOE.0、GPIOF.0、GPIOG.0。而中斷線每次只能連接到1個IO口上,這樣就需要EXTICR來決定對應的中斷線配置到哪個GPIO上了。















        EXTICR在AFIO的結構體中定義如下

        typedef struct
        {
        vu32 EVCR;
        vu32 MAPR;
        vu32 EXTICR[4];
        } AFIO_TypeDef;

        EXTIRC寄存器總共4個,因為編譯器的寄存器都是從0號開始的,所以EXTICR[0]---EXTICR[3]對應
        <>中的EXTICR1---EXTICR4 每個EXTICR用了其中低16位.

        外部中斷配置函數:
        void Ex_NVIC_Config(u8 GPIOx,u8 BITx,u8 TRIM)
        {
        u8 EXTADDR;
        u8 EXTOFFSET;
        EXTADDR=BITx/4; //得到中斷寄存器組編號
        EXTOFFSET=(BITx%4)*4; //得到偏移量 具體哪個I/O口進行設置
        RCC->APB2ENR|=0x01; //使能復用I/O口
        AFIO->EXTICR[EXTADDR]|=GPIOx<EXTI->IMR|=1<EXTI->EMR|=1<if(TRIM&0x01) EXIT->FTSR|=1<if(TRIM&0x02) EXIT->RTSR|=1<}

        注:
        TRIM為觸發方式選擇變量; 0x01下降沿觸發 0x02 上升沿觸發 0x03任意電平觸發.


        上一頁 1 2 下一頁

        關鍵詞: STM32NVIC向量中斷控制器函數分

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 新泰市| 金溪县| 贺州市| 辰溪县| 东阿县| 北川| 南城县| 亚东县| 平泉县| 吉林省| 广昌县| 海盐县| 兰西县| 金溪县| 喀喇沁旗| 苏尼特右旗| 洛南县| 工布江达县| 伊宁县| 南江县| 灌阳县| 同江市| 康保县| 水城县| 五常市| 望都县| 黄梅县| 长春市| 光山县| 嘉义市| 康定县| 池州市| 贵阳市| 湖口县| 广河县| 承德市| 手机| 铁岭县| 佳木斯市| 盐津县| 叙永县|