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 priority
4 bits for subpriority */
#define nvic_prioritygroup_1 ((uint32_t)0x600) /*!< 1 bits for pre-emption priority
3 bits for subpriority */
#define nvic_prioritygroup_2 ((uint32_t)0x500) /*!< 2 bits for pre-emption priority
2 bits for subpriority */
#define nvic_prioritygroup_3 ((uint32_t)0x400) /*!< 3 bits for pre-emption priority
1 bits for subpriority */
#define nvic_prioritygroup_4 ((uint32_t)0x300) /*!< 4 bits for pre-emption priority
0 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學習筆記 GPIO
參考文章 stm32自學筆記 stm32可以提供很多gpio,一般分別在5個埠 port gpioa gpioe 每個埠有16個gpio,最大耐壓值為5v。每個埠有32為寬頻的設定暫存器,一共64位,每個gpio占用4位配置位。其中兩位設定gpio的方向,另外兩位設定gpio的工作模式。1 gpio...
STM32f1學習筆記 USART
typedef struct usart inittypedef usart stopbits usart stopbits引數 描述usart stopbits 1 在幀尾傳輸1個停止位 usart stopbits 0.5 在幀尾傳輸0.5個停止位 usart stopbits 2 在幀尾傳輸2...
STM32F1筆記(九)通用定時器
stm32f1的定時器分為time1 8等高階定時器,time2 5等通用定時器,time6 7基本定時器。三者的區別主要參考 stm32中文參考手冊 裡特性的每種定時器主要特性的異同。先看中文手冊中通用定時器的簡介 通用定時器的暫存器有乙個比較有趣的地方。該暫存器在物理上實際對應著2個暫存器。乙個...