所以综合起来,这么写就是允许这三条线中断
}
(4)还要对NVIC寄存器进行配置
void NVIC_Configuration(void)
{ NVIC_InitTypeDef NVIC_InitStructure;
/* Configure the NVIC Preemption Priority Bits */
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
#ifdef VECT_TAB_RAM
/* Set the Vector Table base LOCation at 0x20000000 */
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else /* VECT_TAB_FLASH */
/* Set the Vector Table base location at 0x08000000 */
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
#endif
/*上面的程序代码来自于ST的例子程序,下面是我自己写的,我不知是不是会让人笑掉大牙,但以我自己的理解能力,我暂时还就只能写出这样的代码来,这其中尤其对优先级和次优先级的设定,非常的没有把握
*/
/*允许EXTI0中断 */
NVIC_InitStructure.NVIC_IRQChannel = EXTI0_IRQn; //中断通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 7;//优先级设定
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //次优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //通道中断使能
NVIC_Init(&NVIC_InitStructure); //初始化中断
////允许EXTI1中断
NVIC_InitStructure.NVIC_IRQChannel = EXTI1_IRQn; //中断通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 7;//优先级设定
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //次优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //通道中断使能
NVIC_Init(&NVIC_InitStructure); //初始化中断
////允许EXTI2中断
NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; //中断通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 7;//优先级设定
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //次优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //通道中断使能
NVIC_Init(&NVIC_InitStructure); //初始化中断
}
此外,这里要提醒一点:
NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQn; //中断通道
这其中的:EXTI2_IRQn是新版本的库中所使用的符号,在2.0版本(也许还有其他版本)中,是这么样来写的:
NVIC_InitStructure.NVIC_IRQChannel = EXTI2_IRQChannel;
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页
本文关键字:手记 嵌入式系统-技术,单片机-工控设备 - 嵌入式系统-技术