STM32中斷應用總結

2021-10-08 00:17:42 字數 2400 閱讀 5239

本文為野火教程的學習筆記。

中斷程式設計順序

可以參考參考手冊中的中斷向量表

巢狀向量中斷控制器,屬於核心外設,管理核心和片上所以外設相關的功能。其功能可以參考核心程式設計手冊

stm32f10*** cortex-m3程式設計手冊-英文版 的4.3節

也可從韌體庫中觀察。重要的有兩個庫檔案core_cm3.hmisc.h

下面是core_cm3.hnvic_type結構體

typedef

struct

nvic_type;

misc.h中有關於nvic的韌體庫函式

設定優先順序需要使用nviciprx暫存器。

arm公式在設計時,優先順序編碼是8位的,但st公司只用了其高4位。

把前四位分組,分為主優先順序和子優先順序。先比較主優先順序,相同則比較子優先順序,相同則比較硬體編碼,硬體編碼可以在參考手冊的中斷向量表中查到。

優先順序由scbaircr:prigroup[10:8]配置。配置的方案可以在misc.h中找到

nvic_prioritygroup_0時,主優先順序被分配0位,子優先順序4位。以此類推

1.配置外設中斷

2.配置中斷優先順序分組

3.配置nvic暫存器,初始化nvic_inittypedef

4.編寫中斷服務函式

要配置外設的中斷,還要開啟nvic的中斷使能暫存器。

優先順序由scbaircr:prigroup[10:8]配置。韌體庫程式設計使用nvic_prioritygroupconfig函式。一般關於nvic的函式都在miss.c中。

我們知道有關nvic的庫是misc,我們開啟標頭檔案,可以看到初始化函式

void nvic_init(nvic_inittypedef* nvic_initstruct);

其中初始化結構體nvic_inittypedef如下。

nvic_irqchannel:用來選擇對應的中斷型別和埠號,後面詳細介紹;

nvic_irqchannelpreemptionpriority:設定主優先順序

nvic_irqchannelsubpriority:設定子優先順序

nvic_irqchannelcmd:選擇開啟還是關閉,fuctionalstate型別;

注意第乙個nvic_irqchannel的配置值在stm32f10x.h中找出,要對應自己晶元的型號,如指南者是hd

然後呼叫nvic_init函式完成配置

函式名稱

中斷服務函式名稱必須和啟動檔案中一致。啟動檔案為startup_stm32f10x_hd.s。如果名稱寫錯,則會執行啟動檔案中的中斷,即無限迴圈。

函式放置位置

為了便於管理,要把所有中斷服務函式放在stm32f10x_it.c檔案中。在這個檔案中核心的中斷都已經寫好,外設的中斷服務函式要自己寫。

本節中的例子請見stm32中斷應用總結。

STM32中斷總結

線0 15 對應外部io口的輸入中斷 線16 連線到pvd輸出 線17 連線到rtc鬧鐘事件 線18 連線到usb喚醒事件 void gpio extilineconfig uint8 t gpio portsource,uint8 t gpio pinsource 例如 gpio extiline...

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個可遮蔽中斷。優先順序的判...