文章目录[隐藏]
实验五 外部中断实验
第三步时需要书写中断服务函数
中断配置参考代码:
(要注意模式参数的配置正确与否,否则很容易出现意想不到的情况)
//外部中断4配置与初始化
void EXTIX_Init(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
KEY_Init();
LED_Init();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//使能IO复用时钟
//映射IO和中断线
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4);
EXTI_InitStructure.EXTI_Line=EXTI_Line4;
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd=ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel=EXTI4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
中断服务测试函数(改函数实现LED的反转效果)
//书写中断服务函数
void EXTI4_IRQHandler()
{
delay_ms(10);
if(KEY0==0){
LED0=!LED0;
LED1=!LED1;
printf("led0=%d,led1=%d\n",LED0,LED1);
}
EXTI_ClearITPendingBit(EXTI_Line4);
}
其中要注意LED0和LED1的实现方式:
#define LED0 PBout(5)// PB5
#define LED1 PEout(5)// PE5
版权声明:本文为CSDN博主「SummerLoverQy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_29174429/article/details/122451622
实验五 外部中断实验
第三步时需要书写中断服务函数
中断配置参考代码:
(要注意模式参数的配置正确与否,否则很容易出现意想不到的情况)
//外部中断4配置与初始化
void EXTIX_Init(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
KEY_Init();
LED_Init();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//使能IO复用时钟
//映射IO和中断线
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4);
EXTI_InitStructure.EXTI_Line=EXTI_Line4;
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_InitStructure.EXTI_LineCmd=ENABLE;
EXTI_Init(&EXTI_InitStructure);
NVIC_InitStructure.NVIC_IRQChannel=EXTI4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
中断服务测试函数(改函数实现LED的反转效果)
//书写中断服务函数
void EXTI4_IRQHandler()
{
delay_ms(10);
if(KEY0==0){
LED0=!LED0;
LED1=!LED1;
printf("led0=%d,led1=%d\n",LED0,LED1);
}
EXTI_ClearITPendingBit(EXTI_Line4);
}
其中要注意LED0和LED1的实现方式:
#define LED0 PBout(5)// PB5
#define LED1 PEout(5)// PE5
版权声明:本文为CSDN博主「SummerLoverQy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_29174429/article/details/122451622
暂无评论