STM32F1笔记(四)NVIC中断优先级管理
生活随笔
收集整理的這篇文章主要介紹了
STM32F1笔记(四)NVIC中断优先级管理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
STM32將中斷分為5個組,組0~4。配置代碼如下:
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);在標準庫里,分組的定義如下:?
/** @defgroup Preemption_Priority_Group * @{*/#define NVIC_PriorityGroup_0 ((uint32_t)0x700) /*!< 0 bits for pre-emption priority4 bits for subpriority */ #define NVIC_PriorityGroup_1 ((uint32_t)0x600) /*!< 1 bits for pre-emption priority3 bits for subpriority */ #define NVIC_PriorityGroup_2 ((uint32_t)0x500) /*!< 2 bits for pre-emption priority2 bits for subpriority */ #define NVIC_PriorityGroup_3 ((uint32_t)0x400) /*!< 3 bits for pre-emption priority1 bits for subpriority */ #define NVIC_PriorityGroup_4 ((uint32_t)0x300) /*!< 4 bits for pre-emption priority0 bits for subpriority */翻譯過來就是:
分組0為0位搶占優先級,4位響應優先級;
分組1為1位搶占優先級,3位響應優先級;
分組2為2位搶占優先級,2位響應優先級;
分組3為3位搶占優先級,1位響應優先級;
分組4為4位搶占優先級,0位響應優先級;
?
假設使用分組3,可以使用的搶占優先級為2^3=8,即0~7,代碼可配置如下:
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1; //NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3; //NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 4; //NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5; //NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 6; //NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 7;可以使用的響應優先級為2^1=2,即0~1,代碼可配置如下:
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;優先級邏輯:
1、搶占優先級的級別高于響應優先級。即搶占優先級高的中斷可以打斷正在執行的優先級低的中斷。
2、數值越小所代表的優先級就越高,即0為最高優先級。
3、當搶占優先級相同時,響應優先級高的不可以打斷優先級低的。
4、如果兩個中斷的搶占優先級和響應優先級都一樣,哪個中斷先發生就先執行。
?
NVIC配置示例:
NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);?
總結
以上是生活随笔為你收集整理的STM32F1笔记(四)NVIC中断优先级管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32F1笔记(三)UART/USA
- 下一篇: 地下城与勇士公会地下城怎么进