int32_t temp; sys_nvic_priority_group_config(group); /* 设置分组 */ temp = pprio << (4 - group); temp |= sprio & (0x0f >> group); temp &= 0xf; /* 取低四位 */ NVIC->ISER[ch / 32] |= 1 << (ch % 32); /* 使能中断位(要清除的话,设置ICER对应位为1即可) */ NVIC->IP[ch] |= temp << 4;
时间: 2024-04-12 17:32:41 浏览: 148
void_NVIC_Init--详细分析
4星 · 用户满意度95%
这段代码是关于中断优先级配置的部分。首先,`sys_nvic_priority_group_config(group)`函数用于设置中断优先级分组,`group`是一个参数。接下来,代码将优先级值(`pprio`)左移`(4 - group)`位,并将其保存到`temp`变量中。然后,代码将`sprio`与`(0x0f >> group)`进行按位与操作,并将结果与`temp`进行按位或操作,最后将结果与`0xf`进行按位与操作,以获取低四位的值。接着,代码使用`ch`将中断使能位设置为1,通过将1左移`(ch % 32)`位,并将结果与`NVIC->ISER[ch / 32]`进行按位或操作。最后,代码将`temp`左移4位,并将结果与`NVIC->IP[ch]`进行按位或操作,以设置中断优先级。
请注意,这段代码只是中断优先级配置的一部分,可能还有其他相关代码。
阅读全文