1、基礎知識函數
一、cortex-m3支持256箇中斷,其中包含了16個內核中斷,240個外部中斷spa
二、STM32只有84箇中斷,包括16個內核中斷和68個可屏蔽中斷設計
三、STM32F103上只有60個可屏蔽中斷(本文重點講解F103)blog
四、先佔優先級和次佔優先級ip
先佔優先級(搶佔優先級):搶佔優先級不一樣,會涉及到中斷嵌套,搶佔優先級高的會優先搶佔優先級低的,優先獲得執行。搶佔優先級相同,不涉及到中斷嵌套,響應優先級不一樣,響應優先級高的先響應。it
次佔優先級(響應優先級/亞優先級/副優先級):只在同一先佔優先級中的中斷同時觸發時起做用,先佔優先級相同,則優先執行響應優先級高的中斷,次佔優先級不會形成中斷嵌套,若是兩個優先級都同樣,則優先執行中斷向量表中編號小的(中斷編號越小,優先級越高)。io
中斷優先級高低判斷:優先級數字越小,優先級越高。程序設計
五、掛起:當位置中斷掛起寄存器的時候,相應的中斷將會被掛起,這不是這個中斷不執行,而是等待可執行的時候再執行;好比高低級別的中斷同時產生,就掛起低級別的中斷,等高級別的中斷執行完畢,解除並執行低級中斷。基礎
2、NVIC(嵌套向量中斷控制器)配置
用於爲中斷分組,從而分配搶佔優先級和響應優先級
***中斷優先級參數表***
3、中斷程序設計四步
A、使能相應外設時鐘,根據對應的中斷使能位控制
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //相應的外設時鐘使能
B、配置中斷優先級分組
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2(2位搶佔優先級,2位響應優先級)
C、初始化NVIC_InitTypeDef結構體,根據上方設置的中斷優先級分組來配置搶佔優先級和相應優先級,並使能相應的通道
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中斷
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先佔優先級0級
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //從優先級3級
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //中斷使能或取消使能
NVIC_Init(&NVIC_InitStructure); //初始化NVIC寄存器
D、編寫中斷服務函數,在startup_stm32f10x_hd.s文件中,都有一個根據中斷向量表設置的空的中斷服務函數,須要咱們從新編寫,咱們拷貝過來根據本身想要實現的內容編寫。