娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

重學STM32---(三) 中斷分組和優先級

發布者:溫柔陽光最新更新時間:2025-01-24 來源: cnblogs關鍵字:STM32  中斷分組  優先級 手機看文章 掃描二維碼
隨時隨地手機看文章

看了大半天,終于把原子哥的例程中的中斷分組和優先級看懂了,勉勉強強知道了怎么設置中斷分組和優先級,,不容易啊。下面就是我收集的資料及我的理解

 

分組不是很難,就是有一點知道就就全部明白了:

 

 

// 設置NVIC分組 

//NVIC_Group:NVIC 分組 0~4  總共 5 組   

void MY_NVIC_PriorityGroupConfig(u8 NVIC_Group)     

{  

    u32 temp,temp1;    

    temp1=(~NVIC_Group)&0x07;//取后三位 見后注釋

    temp1<<=8;                //因為優先級分組在8-10位

    temp=SCB->AIRCR;  //讀取先前的設置 

    temp&=0X0000F8FF; //清空先前分組 

    temp|=0X05FA0000; //寫入鑰匙   看上寄存器

    temp|=temp1;      

    SCB->AIRCR=temp;  //設置分組                      

}

       temp1=(~NVIC_Group)&0x07;//取后三位 為什么NVIC_Group要取反?和CM3分組不是反了嗎?仔細查看《CM3權威指南》和對比《STM32不完全手冊》可以發現,STM32是把CM3內核中第7分組定義為STM32的第0分組!原子哥撇開STM的庫函數自己寫,其實寫的就是內核驅動,所以現在我們要控制的不是STM32,而是CM3,為了和STM32文檔對應,那么我們應該對NVIC_Group取反!比如說我現在要用到STM32中的第1分組,其實是CM3中的第6分組,那我應該是把0x600寫進CM3!

 

 

 

 

 

//設置NVIC

//NVIC_PreemptionPriority:搶占優先級

//NVIC_SubPriority       :響應優先級

//NVIC_Channel           :中斷編號

//NVIC_Group             :中斷分組 0~4

//注意優先級不能超過設定的組的范圍!否則會有意想不到的錯誤

//組劃分:

//組0:0位搶占優先級,4位響應優先級

//組1:1位搶占優先級,3位響應優先級

//組2:2位搶占優先級,2位響應優先級

//組3:3位搶占優先級,1位響應優先級

//組4:4位搶占優先級,0位響應優先級

//NVIC_SubPriority和NVIC_PreemptionPriority的原則是,數值越小,越優先         

void MY_NVIC_Init(u8 NVIC_PreemptionPriority,u8 NVIC_SubPriority,u8 NVIC_Channel,u8 NVIC_Group)  

{

       u32 temp;      

       MY_NVIC_PriorityGroupConfig(NVIC_Group);//設置分組(見上分析)

       temp=NVIC_PreemptionPriority<<(4-NVIC_Group); //有上圖可知bit4-7是設置優先級的。

                                                                                        而優先級設定是由分組決定的

                                                                                       0組時:0位搶占優先級,4位響應優先級(bit4-7)

                                                                                       1組時:1位搶占優先級(bit7),3位響應優先(bit4-6)級

                                                                                       2組時:2位搶占優先級(bit6-7),2位響應優先級(bit4-5)

                                                                                       。。。。  所以這里要減去NVIC_Group

       temp|=NVIC_SubPriority&(0x0f>>NVIC_Group);

       temp&=0xf;                                                     //取低四位 

       NVIC->ISER[NVIC_Channel/32]|=(1<stm32最多好像有200多個中斷吧,不記得了,NVIC_Channl代表的其中一個,例如USART2_IRQn = 38。這些中斷由8個32位寄存器使之使能,就拿USART2_IRQn來說,38/32 =1,38%32=6,所以要使USART2中斷使能的話,必須設置NVIC->ISER[1]第六位為1(看看下面的寄存器)

       NVIC->IP[NVIC_Channel]|=temp<<4;              //設置響應優先級和搶斷優先級  

}

 

 

再插張一張NVIC寄存器吧,(在M3權威指南):

 



關鍵字:STM32  中斷分組  優先級 引用地址:重學STM32---(三) 中斷分組和優先級

上一篇:重學STM32---(四)
下一篇:重學STM32----(二)

推薦閱讀最新更新時間:2025-04-15 17:46

STM32 中斷優先級原理
CM3 內核支持 256 個中斷,其中包含了 16 個內核中斷和 240 個外部中斷,并且具有 256級的可編程中斷設置。但 STM32 并沒有使用 CM3 內核的全部東西,而是只用了它的一部分。STM32 有 84 個中斷,包括 16 個內核中斷和 68 個可屏蔽中斷,具有 16 級可編程的中斷優先級。而我們常用的就是這 68 個可屏蔽中斷,但是 STM32 的 68 個可屏蔽中斷,在 STM32F103 系列上面,又只有 60 個(在 107 系列才有 68 個)。 在 MDK 內,與 NVIC 相關的寄存器,MDK 為其定義了如下的結構體:   typedef struct   {   vu32 ISER ;
[單片機]
<font color='red'>STM32</font> <font color='red'>中斷</font><font color='red'>優先級</font>原理
KST-STM32學習之中斷優先級中斷嵌套
1、NIVC ARM Cortex-M3 內核搭載了一個強大而方便的中斷系統,稱之為 NVIC(嵌套向量中斷控制器)。 Cortex-M3 支持 256 個“中斷通道”(16 個異常+240 個中斷)以及對應的可編程 256 級中斷優先級設置。 STM32 雖然采用 Cortex-M3 內核,但是只使用了其中的 84 個“中斷通道”(16 個異常+68 個中斷)以及 16 級中斷優先級設置。 同時也記錄下自己當時的一個插曲。 這個TIM6_IRQn在《STM32固件庫手冊》中查NVIC_IRQChannel的取值是沒有的,然后咨詢下老師,如下回復 再拐回頭看下教程,著實一不一樣 看來要不看最新的手冊,要不就
[單片機]
KST-STM32學習之<font color='red'>中斷</font><font color='red'>優先級</font>與<font color='red'>中斷</font>嵌套
MSP430單片機的中斷優先級
MSP430的中斷分為3種:系統復位、不可屏蔽中斷、可屏蔽中斷。 (1)系統復位的中斷向量為0xFFFE。 (2)不可屏蔽中斷的中斷向量為0xFFFC。響應不可屏蔽中斷時,硬件自動將OFIE、NMIE、ACCVIE復位。軟件首先判斷中斷源并復位中斷標志,接著執行用戶代碼。退出中斷之前需要置位OFIE、NMIE、ACCVIE,以便能夠再次響應中斷。需要特別注意點:置位OFIE、NMIE、ACCVIE后,必須立即退出中斷相應程序,否則會再次觸發中斷,導致中斷嵌套,從而導致堆棧溢出,致使程序執行結果的無法預料。 (3)可屏蔽中斷的中斷來源于具有中斷能力的外圍模塊,包括看門狗定時器工作在定時器模式時溢出產生的中斷。每一個中斷都
[單片機]
STM32F4——NVIC中斷優先級及外部中斷
NVIC中斷優先級 一、簡介: CM4內核可以支持256個中斷,包括16個內核中斷和240個外部中斷,256級的可編程中斷設置。對于STM32F4沒有用到CM4內核的所有東西,只是用到了一部分,對于STM32F40和41系列共有92個中斷,其中有10個內核中斷和82個可屏蔽中斷,常用的為82個可屏蔽中斷。 二、相關寄存器: ISER 中斷使能寄存器組,用來使能中斷,每一位控制一個中斷,由于上面已經說明了控制82個可屏蔽的中斷,因此利用ISER 這三個32位寄存器就夠了。一下的幾個寄存器同理。 ICER 中斷除能寄存器組,用來消除中斷。 ISPR 中斷掛起控制寄存器組,用來掛起中斷。 ICPR 中斷解掛
[單片機]
STM32F4——NVIC<font color='red'>中斷</font><font color='red'>優先級</font>及外部<font color='red'>中斷</font>
單片機中斷優先級的軟件擴展方法
摘要:為了解決MCS-51系列單片機只能由IP寄存器設定兩級優先級的問題,文中給出了利用軟件對中斷優先級進行擴展的方法,同時給出了高于兩個優先級的多優先級軟件擴展程序。 關鍵詞:單片機;中斷;優先級;寄存器 1 引言 所謂中斷是指當CPU正在處理某件事情的時候,外部發生的某一事件(如一個電平的變化,一個脈沖沿的發生或定時器計數溢出等)請求CPU迅速去處理,于是CPU暫時中止當前的工作,轉去處理所發生的事件。中斷服務處理完該事件以后,再回到原來被中止的地方繼續原來的工作,這樣的一個過程稱之為中斷。以8051為例,中斷系統含有5個中斷源,分別是外部中斷0請求(INT0),外部中斷1請求(INT1),定時/計數器0溢出中斷請求(
[單片機]
關于uC/OS-II中優先級翻轉問題
引 言: 1 uC/OS-II的運行機制   在嵌入式系統的應用中,實時性是一個重要的指標,而優先級翻轉是影響系統實時性的重要問題。本文著重分析優先級翻轉問題的產生和影響,以及在uC/OS-II中的解決方案。   uC/OS-II采用基于固定優先級的占先式調度方式,是一個實時、多任務的操作系統。系統中的每個任務具有一個任務控制快OS_TCB,任務控制塊記錄任務執行的環境,包括任務的優先級,任務的堆棧指針,任務的相關事件控制塊指針等。內核將系統中處于就緒態的任務在就緒表(ready list)進行標注,通過就緒表中的兩個變量OSRdyGrp和OSRdyTbl 可快速查找系統中就緒的任務。在uC/OS-II中每個任務有唯一的優先級
[嵌入式]
stm32固件庫之讀取按鍵
//按鍵接下拉4.7k 上升沿中斷.按鍵上并聯104電容抗抖動 //引腳定義 /*******************************************************/ define KEY1_PIN GPIO_Pin_0 define KEY1_GPIO_PORT GPIOA define KEY1_GPIO_CLK RCC_AHB1Periph_GPIOA define KEY2_PIN GPIO_Pin_13 define KEY2_GPIO_PORT GPIOC define KEY2_GPIO_CLK RCC_AHB1Pe
[單片機]
基于stm32的多功能時鐘5——LCD12864庫函數的建立
在上一章中,小編實現了多功能時鐘的測距功能。在這一章中,小編本來打算介紹人機交互界面的設計。但是,后來還是想了一下,先將LCD庫函數建立起來,因為真正的技術重點在這里。至于UI的設計,咱們將在下一章介紹。但至于UI設計的美觀程度,我只能盡力而為,畢竟咱們的LCD12864液晶分別率只有128*64,而且是單色的,先天不足。 1.模塊介紹 LCD12864液晶顯示屏 液晶顯示器種類很多,本人目前用過LCD1602、LCD12864、Nokia5110等,還有些比如TFT彩屏,OLED都沒有用過。而此塊LCD12864是一款基于ST7567的128*64的1.7英寸的圖形點陣式液晶。而LCD12864液晶有的可以
[單片機]
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 无极县| 昭平县| 溧阳市| 贵德县| 马山县| 桐乡市| 金湖县| 扎囊县| 广水市| 高平市| 儋州市| 饶阳县| 永顺县| 外汇| 郯城县| 和政县| 嵊州市| 娄底市| 平山县| 高青县| 兴宁市| 德钦县| 通州区| 辽宁省| 含山县| 蒙阴县| 大田县| 龙南县| 玉环县| 政和县| 北安市| 扬州市| 辽中县| 图片| 崇礼县| 龙江县| 缙云县| 昌图县| 额济纳旗| 大冶市| 茶陵县|