ob体育竞彩 _欧宝体育在线链接 學習網站
當前位置: ob体育竞彩 > 電子技術> 正文

stm32不同中斷可以有不同分組嗎

時間:2015-12-03 12:19 來源:ob体育竞彩

一:綜述

STM32 目前支持的中斷共為 84 個(16 個內核+68 個外部),可以提供16 級可編程中斷優先級的設置(僅使用中斷優先級設置8bit中的高4位)和16個搶占優先級(因為搶占優先級最多可以有4位)。
二:優先級判斷
STM32(Cortex-M3)中有兩個優先級的概念——搶占優先級和響應優先級,其屬性編號越小,則優先級別越高。有人把響應優先級稱作“亞優先級”或“副優先級”,每個中斷源都需要被指定這兩種優先級。
具有高搶占式優先級的中斷可以在具有低搶占式優先級的中斷處理過程中被響應,即中斷嵌套,或者說高搶占式優先級的中斷可以嵌套低搶占式優先級的中斷。
當兩個中斷源的搶占式優先級相同時,這兩個中斷將沒有嵌套關係,當一個中斷到來後,如果正在處理另一個中斷,這個後到來的中斷就要等到前一個中斷處理完之後才能被處理。如果這兩個中斷同時到達,則中斷控製器根據他們的響應優先級高低來決定先處理哪一個;如果他們的搶占式優先級和響應優先級都相等,則根據他們在中斷表中的排位順序決定先處理哪一個。
三:優先級分組
既然每個中斷源都需要被指定這兩種優先級,就需要有相應的寄存器位記錄每個中斷的優先級;在Cortex-M3中定義了8個比特位用於設置中斷源的優先級,這8個比特位在NVIC應用中斷與複位控製寄叢器(AIRCR)的中斷優先級分組域中,可以有8種分配方式:
所有8位用於指定響應優先級
最高1位用於指定搶占式優先級,最低7位用於指定響應優先級
最高2位用於指定搶占式優先級,最低6位用於指定響應優先級
最高3位用於指定搶占式優先級,最低5位用於指定響應優先級
最高4位用於指定搶占式優先級,最低4位用於指定響應優先級
最高5位用於指定搶占式優先級,最低3位用於指定響應優先級
最高6位用於指定搶占式優先級,最低2位用於指定響應優先級
最高7位用於指定搶占式優先級,最低1位用於指定響應優先級
這就是優先級分組的概念。
--------------------------------------------------------------------------------
Cortex-M3允許具有較少中斷源時使用較少的寄存器位指定中斷源的優先級,因此STM32把指定中斷優先級的寄存器位減少到4位(AIRCR高四位),這4個寄存器位的分組方式如下:
第0組: 所有4位用於指定響應優先級
第1組:最高1位用於指定搶占式優先級,最低3位用於指定響應優先級
第2組:最高2位用於指定搶占式優先級,最低2位用於指定響應優先級
第3組:最高3位用於指定搶占式優先級,最低1位用於指定響應優先級
第4組:所有4位用於指定搶占式優先級
可以通過調用STM32的固件庫中的函數NVIC_PriorityGroupConfig()選擇使用哪種優先級分組方式,這個函數的參數有下列5種:
NVIC_PriorityGroup_0 => 選擇第0組
NVIC_PriorityGroup_1 => 選擇第1組
NVIC_PriorityGroup_2 => 選擇第2組
NVIC_PriorityGroup_3 => 選擇第3組
NVIC_PriorityGroup_4 => 選擇第4組
中斷優先級分組是為了給搶占式優先級和響應優先級在中斷優先級寄叢器的高四位分配各個優先級數字所占的位數。在一個程序中隻能設定一次。
四:中斷源的優先級
接下來就是指定中斷源的優先級,中斷源優先級是在中斷優先級寄存器中設置的,隻能設置及高四位,必須根據中斷優先級分組中設置好的位數來在該寄存器中設置相應的數值。假如你選擇中斷優先級分組的第3組:最高3位用於指定搶占式優先級,最低1位用於指定響應優先級,那麼搶占式優先級就有000-111共八種數據選擇,也就是有八個中斷嵌套,而響應優先級中有0和1兩種,總共有8*2=16種優先級。
中斷源優先級具體的設置了該中斷源的優先級別
在一個程序中可以設定多個(最多16個)優先級,每個中斷源隻能設定的一個。
每寫一個關於中斷優先級的程序必須包含下列兩個函數:
1)void NVIC_PriorityGroupConfig(u32 NVIC_PriorityGroup)中斷分組設置
2)void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct)中斷優先級設置
注意:NVIC能配置的是16種中斷向量,而不是16個,當工程中有超過16個中斷向量時,必然有兩個以上的中斷向量是使用相同的中斷種類,而具有相同中斷種類的中斷向量不能互相嵌套。
五:啟動所需GPIOn_Pin及AFIO的RCC時鍾
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,RCC_APB2Periph_AFIO,ENABLE);
注意:千萬別忘記啟動RCC_APB2Periph_AFIO!否則管腳隻能做普通高低電平來用。當把GPIO用作EXTI外部中斷或使用重映射功能的時候,必須開啟AFIO時鍾,而在使用默認複用功能的時候,就不必開啟AFIO時鍾了。
六:實例
NVIC_InitTypeDef NVIC_InitStructure; //定義中斷初始化類型結構體變量
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1); //配置優先級分組1 2個兩個搶占優先級 8個亞優先級
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; //開口外部中斷0
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//配置0號搶占式優先級
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //亞優先級配置為0號
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能通道
NVIC_Init(&NVIC_InitStructure); //對外部中斷0進行初始化配置
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; //開口外部中斷5到9
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//配置1號搶占式優先級
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //亞優先級配置為1號
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能通道
NVIC_Init(&NVIC_InitStructure); //對外部中斷0進行初始化配置
NVIC_InitStructure.NVIC_IRQChannel = ADC1_2_IRQn; //ADC1中斷
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//配置1號搶占式優先級
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //亞優先級配置為1號
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能通道
NVIC_Init(&NVIC_InitStructure); //對外部中斷0進行初始化配置
從上麵的配置來看,外部中斷0的優先級最高,可以打斷ADC和外部5到9的中斷,也就說可以嵌套發生,當ADC中斷和外部5到9中斷同時發生時,它們的搶占優先級別相同,亞優先級別也相同,因為ADC1硬件排在更靠前,則先發生ADC中斷,若是兩者任何一個中斷正在執行,則等此中斷執行完,再去執行另一個中斷。
NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQn表示要配置的為EXTI的第5~9線的中斷向量,也就是說EXTI5~EXTI9線是使用同一個中斷向量的。這些可寫入的參數可以在stm32f10x.h文件中查找到。
    看過《stm32不同中斷可以有不同分組嗎》的人還看了以下文章
    電纜線路的敷設方式及施工技術要求 電纜線路的敷設方式及施工技術要求
    電纜線路的敷設方式及施工技術要求...
    過零點檢測信號的特點 過零點檢測信號的特點
    在數字電壓表如上海電表廠生產的PZ28型。它用於測量O至2伏直流電壓,精度為O點5%。其中檢測電路中的采樣時間內,對被測電壓值進行雙向積分,然後過零點又反向積分。將這段信號轉換為脈衝值。用表中基準電壓的cPU脈衝作開門計數至零點,所檢測出多少個脈衝。...
    收音機輸入電壓提高電路要做哪些改動 收音機輸入電壓提高電路要做哪些改動
    首先要明確這個輸入電壓是指信號電壓還是整機工作電壓。 若是信號過強可采用電阻分壓的方式予以衰減,以防大信號阻塞或失真。 如果要提高整機工作電壓,就要看是集成電路還是分立元件。對於集成電路收音機可查一下它的允許工作電壓是多少。比如單片集成電路...
    線圈在電路中起什麼作用 線圈在電路中起什麼作用
    線圈又稱電感。一般是由漆包線繞製而成,被廣泛地應用在電力係統、儀器設備和電子電路中。 電感在電路中的作用主要有諧振、濾波、感應、自感和勵磁等。 一、諧振 諧振電路一般由電感和電容組成,分並聯諧振和串聯諧振。並聯諧振在諧振頻率點呈高阻抗,可以獲...
    電子技術的主要知識 電子技術的主要知識
    一、半導體 1、半導體的有關概念 1)半導體 半導體是導電能力介於導體與絕緣體之間的一種物體。純淨的半導體是四價元素,呈晶體結構,內部原子按一定規律整齊排列。在高溫或光照下,其電子衝破束縛,成為自由電子。電子跑出後留下的空位稱為空穴。半導體有電...
    Baidu
    map