中断简单来说就是当cpu正在执行一个任务是,突然来了一个别的请求,cpu去响应这个请求
1.NVIC(Nested Vectored Interrupt Controller) 就是嵌套向量中断控制器;
2.设置中断优先级的分组
总共有4位二进制组成,分成抢占优先级和响应优先级
用NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup),(在misc.h文件中),这是一个有参无返回值的函数,参数范围包括
一共有五种分组(分组0~分组4)其中 NVIC_PriorityGroup_0为分组0,NVIC_PriorityGroup_1为分组1,NVIC_PriorityGroup_2为分组2,NVIC_PriorityGroup_3为分组3,NVIC_PriorityGroup_4为分组4
分组0: 0位抢占+4位响应(抢占:无,响应: 0~15)
分组1: 1位抢占+3位响应(抢占: 0~1, 响应: 0~7)
分组2: 2位抢占+2位响应(抢占: 0~3,响应: 0~3)
分组3: 3位抢占+ 1位响应(抢占: 0~7,响应: 0~1)
分组4: 4位抢占+0位响应(抢占: 0~15,响应:无)
注:优先级分组只能设置一 次,而且需要在主函数程序开头的地方设置,其作用的是整个程序,先分组再设置值
优先级的等级是数值越低,优先级越高
3.关于NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct),(在misc.h文件中)函数
这是一个结构体指针的函数,包含了四个属性,是设置一个关于某个中断初始化的函数
a.uint8_ t NVIC_ IRQChannel:中断请求的编号(位置、通道),在stm32f10x.h文件中选择所需要的中断源
b.uint8_ _t NVIC_ IRQChannelPreemptionPriority:该中断的抢占优先级数值(需要结合分组来选择数值)
c.uint8_ t NVIC IRQChannelSubPriority:该中断的响应优先级数值(需要结合分组来选择数值)
d.FunctionalState NVIC_ IRQChannelCmd:使能或失能该中断