- UID
- 1029342
- 性别
- 男
|
SCB->AIRCR
STM32的中断分组:STM32将中断分为5个组,组0~4。该分组的设置是由SCB->AIRCR寄存器的bit10~8来定义的。具体的分配关系如下表所示: 组
| AIRCR[10:8]
| bit[7:4]分配情况
| 分配结果
| 0
| 111
| 0:4
| 0位抢占优先级,4位响应优先级
| 1
| 110
| 1:3
| 1位抢占优先级,3位响应优先级
| 2
| 101
| 2:2
| 2位抢占优先级,2位响应优先级
| 3
| 100
| 3:1
| 3位抢占优先级,1位响应优先级
| 4
| 011
| 4:0
| 4位抢占优先级,0位响应优先级
|
通过这个表,我们就可以清楚的看到组0~4对应的配置关系,例如组设置为3,那么此时所有的60个中断,每个中断的中断优先寄存器的高四位中的最高3位是抢占优先级,低1位是响应优先级。每个中断,你可以设置抢占优先级为0~7,响应优先级为1或0。抢占优先级的级别高于响应优先级。而数值越小所代表的优先级就越高。
这里需要注意2点:
1,如果两个中断的抢占优先级和响应优先级都是一样的话,则看哪个中断先发生就先执行。
2,高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。而抢占优先级相同的中断,高优先级的响应优先级不可以打断低响应优先级的中断。
而在老版本的STM32标准外设库中也是有这样一个stm32f10x_map.h文件的。定义和上面的差不多,不同地方可能就是长度不同。
我现在手里拿的是最新的STM32标准外设库(3.5版),里面已经没有了stm32f10x_map.h这个文件了,要知道stm32f10x_map.h这个文件中定义了所有外设寄存器的结构和内存映射,像各个寄存器的结构体,基址,地址等等。
在新版的STM32的标准外设库中,将这些文件分开定义了,去掉了stm32f10x_map.h这个头文件后,新加入了stm32f10x.h 和core_cm3.h两个头文件。
在core_cm3.h中,定义了:
1.
NVIC_Type ,
2.
SCB_Type,
3.
ITM_Type,
4.
InterruptType_Type,
5.
MPU_Type,
6.
CoreDebug_Type。
在stm32f10x.h ,定义了
7.
ADC_TypeDef,
8.
BKP_TypeDef,
9.
CAN_TxMailBox_TypeDef,
10.
CAN_FIFOMailBox_TypeDef,
11.
CAN_FilterRegister_TypeDef,
12.
CAN_TypeDef,
13.
CEC_TypeDef,
14.
CRC_TypeDef,
15.
DAC_TypeDef,
16.
DBGMCU_TypeDef,
17.
DMA_Channel_TypeDef,
18.
DMA_TypeDef,
19.
ETH_TypeDef,
20.
EXTI_TypeDef,
21.
FLASH_TypeDef,
22.
OB_TypeDef,
23.
FSMC_Bank1_TypeDef,
24.
FSMC_Bank1E_TypeDef,
25.
FSMC_Bank2_TypeDef,
26.
FSMC_Bank3_TypeDef,
27.
FSMC_Bank4_TypeDef,
28.
GPIO_TypeDef ,
29.
AFIO_TypeDef,
30.
I2C_TypeDef,
31.
IWDG_TypeDef,
32.
PWR_TypeDef,
33.
RCC_TypeDef,
34.
RTC_TypeDef,
35.
SDIO_TypeDef,
36.
SPI_TypeDef,
37.
TIM_TypeDef,
38.
USART_TypeDef,
39.
WWDG_TypeDef
而在stm32f10x_map.h中定义了34个类型,和stm32f10x.h 基本相似。
|
|