typedef struct
nvic_type;
其中最常用的就是中斷優先順序暫存器。
同時,在「misc.h」韌體庫中也實現了部分與中斷相關的函式
void nvic_prioritygroupconfig(uint32_t nvic_prioritygroup);
void nvic_init(nvic_inittypedef* nvic_initstruct);
void nvic_setvectortable(uint32_t nvic_vecttab, uint32_t offset);
void nvic_systemlpconfig(uint8_t lowpowermode, functionalstate newstate);
void systick_clksourceconfig(uint32_t systick_clksource);
暫存器層面上,通過操作nvic->iprx來實現(ipr:interrupt priority registers)
通過優先順序分組來設定搶占優先順序。同樣地,在暫存器層面上是通過操作scb->aircr:prigroup[10:8]來實現
韌體庫層面則是misc.h裡面提供的函式來配置。
在misc.h中找到「void nvic_prioritygroupconfig(uint32_t nvic_prioritygroup);」來配置
注意,這個設定在整個系統執行過程中,只能設定一次。
typedef struct
nvic_inittypedef;
配置完成後,呼叫misc.h中的void nvic_init(nvic_inittypedef* nvic_initstruct);來將配置的各引數寫入對應的暫存器中。
//以設定串列埠1中斷為例
/usart1 nvic 配置
nvic_initstructure.nvic_irqchannel = usart1_irqn;
nvic_initstructure.nvic_irqchannelpreemptionpriority=3 ;//搶占優先順序3
nvic_initstructure.nvic_irqchannelsubpriority = 3; //子優先順序3
nvic_initstructure.nvic_irqchannelcmd = enable; //irq通道使能
nvic_init(&nvic_initstructure); //根據指定的引數初始化vic暫存器
1.首先要強調的是中斷服務函式已經被定義好,不能自己隨意寫,具體參考startup_stm32f10x_hd.s檔案
2.建議終端服務函式統一寫在stm32f10x_it.c中
STM32學習心得(1)
學stm32的目的只是為了可以讓乙個電機轉動起來,哈哈哈是不是感覺沒什麼大目標。但是能讓電機轉起來就覺得很有成就感。我在學之前有的概念就是 pwm,can,輸入輸出啥的,然而卻並不知道是幹什麼的。前一段時間在 上買了一款stmf103的板子,買回來後裝了keil4花了好幾個小時,又花了好幾個小時配置...
STM32中斷優先順序 學習心得
剛開始學習stm32微控制器時,對中斷優先順序的規則不是很明白,通過今天的學習,對這方面的內容有了新的了解,記錄下來以便日後檢視。首先說一下stm32的中斷 stm32有84個中斷,包括16個核心中斷和68個可遮蔽中斷,具有16級可程式設計的中斷優先順序。stm32f103系列上面,又只有60個可遮...
STM32學習心得十三 NVIC中斷優先順序管理
記錄一下,方便以後翻閱 主要內容 1 nvic中斷優先順序分組 2 nvic中斷優先順序設定。官方資料 stm32中文參考手冊v10 第9章 中斷和事件 1.nvic中斷優先順序分組 1.1 cm3核心支援256個中斷,其中包含16個核心中斷和240個外部中斷,並且具有256級的可程式設計中斷設定 ...