lib_v3.0.0 的標頭檔案misc.c的void nvic_init(nvic_inittypedef* nvic_initstruct)說:
/* enable the selected irq channels ---------------*/
nvic->iser[nvic_initstruct->nvic_irqchannel >> 0x05] = (uint32_t)0x01 << (nvic_initstruct->nvic_irqchannel & (uint8_t)0x1f);
*************************===
stm32有"60 maskable interrupt channels (not including the 16 interrupt lines of cortex-m3)"[翻譯]60個可遮蔽中斷通道(不包含16個cortex-m3的中斷線),這60個可遮蔽中斷通道的position依次為0——59
其中position0——31的使能位放到iser[0]裡,position32——59的使能位放到iser[1]裡。
因此nvic_initstruct->nvic_irqchannel >> 0x05的值要麼等於0,要麼等於1。(position0——31右移5位得0,position32——59右移5位得1)
****************************************
注意 : 0x1f的資料型別是(uint8_t)
注意: mdk無符號位右移為"邏輯右移",即右移後,左邊空出的部分用0填補。
stm32中斷優先順序 STM32中斷系統
stm32 中斷非常強大,幾乎每個外設都可以產生中斷,因此這裡我們單獨使用一章來介紹它,為後面介紹外設中斷做鋪墊。學習本章可以參考 stm32f10x中文參考手冊 9 中斷和事件章節,cortex m3 權威指南 中文 chpt08 nvic與中斷控制章節。中斷概念 在學習 51 微控制器時,我們就...
STM32中斷巢狀
cortex m3核心支援256個中斷,其中包括16個核心中斷和240個外部中斷,且具有256級的可程式設計中斷設定,而stm32只用了其中一部分。stm32有84個中斷,包括16個核心中斷和68個可遮蔽中斷,具有16級可程式設計中斷優先順序。而我所使用的103系列只有60個可遮蔽中斷。優先順序的判...
STM32 中斷使用
stm32中斷有時候用多了容易亂,特此記錄一下,因為之前一直是m3 m0交叉用,韌體庫有些區別容易弄混,這裡說一下m3外部中斷的配置 步驟 1.將對應的io配置為輸入 2.將io對應的中斷的優先等級用nvic配置好 3.設定好對應io的中斷模式和觸發方式 4.將io所屬的中斷線設為中斷輸入源 1 以...