在这段代码中,存在一些错误的地方:
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1)
被多次调用,这是不必要的。只需要在初始化之前调用一次即可。在
nvic_struct3
的初始化过程中,使用了错误的宏定义EXTI15_10_IRQn
。应该将其改为正确的值EXTI15_10_IRQChannel
。
下面是修改后的代码:
void nvic_init(void)
{
NVIC_InitTypeDef nvic_struct1;
NVIC_InitTypeDef nvic_struct2;
NVIC_InitTypeDef nvic_struct3;
// 设置优先级分组
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
nvic_struct1.NVIC_IRQChannel = EXTI0_IRQn;
nvic_struct1.NVIC_IRQChannelPreemptionPriority = 0;
nvic_struct1.NVIC_IRQChannelSubPriority = 0;
nvic_struct1.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&nvic_struct1);
nvic_struct2.NVIC_IRQChannel = EXTI1_IRQn;
nvic_struct2.NVIC_IRQChannelPreemptionPriority = 1;
nvic_struct2.NVIC_IRQChannelSubPriority = 0;
nvic_struct2.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&nvic_struct2);
nvic_struct3.NVIC_IRQChannel = EXTI15_10_IRQn; // 正确修正为 EXTI15_10_IRQChannel
nvic_struct3.NVIC_IRQChannelPreemptionPriority = 2;
nvic_struct3.NVIC_IRQChannelSubPriority = 0;
nvic_struct3.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&nvic_struct3);
}
希望以上修改能够解决你的问题。
内容由零声教学AI助手提供,问题来源于学员提问