一:设置NVIC组,使能 RTC irq,设置RTC优先级(抢占优先级和响应优先级)
void nvic_configuration(void)
{
nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2);
nvic_irq_enable(RTC_IRQn,1,0);
}
nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2);
设置中断向量控制器组
这里设置为GROUP2 => NVIC_PRIGROUP_PRE2_SUB2
GROUP2意味着最高2位用于抢占式优先级,最低2位用于响应优先级,也就是说可以设置2^2 = 4个抢占式优先级,每个抢占式优先级中可以有2^2=4个响应优先级。其实通过不同的排列组合可以构成2^4 = 16个优先级
这些级别意味着什么呢?
抢占式优先级顾名思义是说定义了这些级别,是可以抢占其他优先级,当然是级别高的抢占级别低的了。
如果2个中断的抢占优先级相同呢?那响应优先级就用上了,2个中断抢占优先级相同,则响应优先级高的先响应了。
那要是两个中断设置了相同的抢占优先级和相同的响应优先级呢?同时中断的情况下,谁先响应呢?
答案:会先响应中断通道号低的中断处理函数(比如RTC的中断通道号是19,DMA0 Channel0的是27)
|