一、中斷核心:
stm32的中斷很強大,每個外設都可以產生中斷,f103在核心水平上搭載了異常響應系統,系統異常有8個(算上reset和hardfault也就10個),外部中斷有60個,但是根據nvic(巢狀向量中斷控制器,控制整個晶元中斷相關的功能),ip(中斷優先順序暫存器)陣列中預留了240個位置(nvic結構如上圖),可見眼光之遠,用於擴充套件,這是stm32f103用不到這麼多。
如果以後要找跟核心相關的函式,都存在core_cm3.c和misc.c中,包括nvic的函式的宣告,但是其具體的庫函式內容並不是和韌體庫標頭檔案core_cm3.h一致(不在core_cm3.c),而是放在庫函式的misc.c中,這點需要注意。
二、中斷優先順序的定義和分組:
三、中斷程式設計的順序:
1、使能中斷請求
如何使能,需要配置哪個暫存器?
注意:這裡與nvic中的中斷使能暫存器不是等同概念,中斷使能可以理解成有2個大門,外設使能(小門,比如串列埠有傳送完成中斷,接收完成中斷,這兩個中斷由串列埠控制暫存器的相關中斷使能位來控制)和nvic(大門,接受請求)。
2、配置中斷優先順序分組
如何配置,需要配置哪個暫存器?
通過nvic_prioritygroup函式。
3、配置nvic暫存器,初始化nvic_inittypedef;(定義在misc.h中,成員如下)
1-nvic_irqchannel:指定中斷源(中斷型別列表參考stm32f10x.h中已列舉給出
2-nvic_irqchannelpreemptionpriority:搶占優先順序(根據分組表和選擇來給)
3-nvic_irqchannelsubpriority:子優先順序(根據分組表和選擇來給)
4-nvic_irqchannelcmd:使能或者失能(核心使能,相當於上面說的大門,enable或disable)
4、編寫中斷服務函式
1-中斷服務函式名要怎麼寫?寫錯了怎麼辦?
在啟動檔案
2-中斷服務函式要寫在什麼地方?
為了程式設計方便管理,我們可以把程式直接可以寫在
四、中斷小結
stm32f10x中斷的方法還是比較清晰的,和微控制器類似,多了乙個優先順序巢狀和分組的功能,另外要注意一些使用庫函式程式設計的細節即可,後續再通過實驗例子來測試各類中斷的具體使用方法。
STM32F103中斷系統
一 中斷介紹 1.1 中斷概念 cpu執行程式時,由於發生了某種隨機的事件 外部或內部 引起cpu暫時中斷正在執行的程式,轉去執行一段特殊的服務程式 中斷服務子程式或中斷處理程式 以處理該事件,該事件處理完後又返回被中斷的程式繼續執行,這一過程稱為中斷。引發中斷的稱為中斷源。比如 看電視時突然門鈴響...
stm32f103外部中斷
void extix init void 外部中斷0服務程式 void exti9 5 irqhandler void 這是簡單的外部中斷的配置,pc7作為中斷輸入 上面補充io口的初始化 gpio initstructure.gpio mode gpio mode ipu pc6配置為快充指示 1...
STM32f103之外部中斷
一 背景 有個需求,io口檢測上公升沿,然後做相應的動作。在此記錄stm32f103的外部中斷結構及配置方法,以備下次快速上手使用。有許多不太明白,又是老司機 d 幫忙,真的是站在別人的肩膀上會讓你看的更遠,走的更快,感謝老司機。二 正文 stm32f103有68個可遮蔽中斷。但是,真正能用的其實遠...