hg0088正网,hg0088备用网址,hg0088,hg0088如何开户,hg0088现金,hg0088皇冠,hg0088如何注册,hg0088注册,皇冠hg0088,hg0088开户,hg0088官网,hg0088投注,新2皇冠hg0088,hg0088体育投注,足球hg0088手机版登陆,手机版皇冠hg0088
電工之家_電工基礎知識學習網站
當前位置:電工之家 > 電子技術 > 正文

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

時間:2015-12-03 12:19 來源:電工之家

 一:綜述

 
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時鐘了。
 
六:實例
 
<span style="font-size:14px;">  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進行初始化配置
</span>從上面的配置來看,外部中斷0的優先級最高,可以打斷ADC和外部5到9的中斷,也就說可以嵌套發生,當ADC中斷和外部5到9中斷同時發生時,它們的搶占優先級別相同,亞優先級別也相同,因為ADC1硬件排在更靠前,則先發生ADC中斷,若是兩者任何一個中斷正在執行,則等此中斷執行完,再去執行另一個中斷。
 
NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQn表示要配置的為EXTI的第5~9線的中斷向量,也就是說EXTI5~EXTI9線是使用同一個中斷向量的。這些可寫入的參數可以在stm32f10x.h文件中查找到。
看過《stm32不同中斷可以有不同分組嗎》的人還看了以下文章
土壤濕度感應器探頭的原理是什么?為什么制成板狀的 土壤濕度感應器探頭的原理是什么?為什么制
土壤濕度傳感器的探頭實際上就是兩個金屬電極,制作成板狀是為了增大與土壤的接觸面積,以便與土壤能有良好的接觸,這樣才能更好的檢測土壤的干濕度。若制作成縫紉機針那么細小的電極,無法與土壤良好接觸,這樣也就不能精確的檢測土壤的干濕度了。下面我們...
限流電阻會引起電壓變化嗎 限流電阻會引起電壓變化嗎
限流電阻可以限制流入負載的電流的大...
電腦開機出現故障是什么原因 電腦開機出現故障是什么原因
主板:技嘉B85M-HD3 CPU:i5 4430 內存:8G 集成顯卡 故障現象:按開機鍵10多秒后才顯示主板logo開始自檢啟動系統,進入系統后一切正常。 當徹底斷電(拔掉電源線等十幾秒)再插電開機3秒就亮屏并顯示logo開始自檢了。只要不徹底斷電,每次開機都要十幾秒才亮屏。...
模擬電路和數字電路的區別 模擬電路和數字電路的區別
模擬電路和數字電路都是令人頭痛的事,也是學習電子電路過程中的兩大攔路虎,難、才是挑戰的動力?茖W技術發展迅猛,電子電路自身功能不斷升級,應用領域隨之拓寬,跟現在人們日常密切度也不斷拉近。以電子電路功能分類,可分模電與數電兩大類,這兩大類是...
用紅外線信號控制馬達電路原理 用紅外線信號控制馬達電路原理
用紅外線信號來控制馬達的工作與否,但其未說明馬達的工作電壓及紅外線信號的控制距離,故這里只能介紹一個簡單的紅外控制電路來說明一下控制的基本原理。 直射式紅外控制電路。 上圖中的VD1為紅外發射管,由于為近距離控制(20cm以內),這里采用直流驅動紅...
hg0088新2后备 网址