您现在的位置: 主页 > MCU > 单片机技术应用 > 使用STM32CubeMX开发三:按键中断实验 -
本文所属标签:
为本文创立个标签吧:

使用STM32CubeMX开发三:按键中断实验 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]硬件平台:stm32F407Zet6软件平台:stm32cubeMX 4.7+MDK5.14电路连接:PE8-LED0、PE9-LED1、PE10-LED2、PE11-LED3、PE12-KEY0、PE13-KEY1、PE14-KEY2、PE15-KEY3第一步、使用stm32cubeMX创建工程,选择相应的芯片,配

硬件平台:stm32F407Zet6

本文引用地址: http://www.21ic.com/app/mcu/201808/778976.htm

软件平台:stm32cubeMX 4.7+MDK5.14

电路连接:PE8-LED0、PE9-LED1、PE10-LED2、PE11-LED3、PE12-KEY0、PE13-KEY1、PE14-KEY2、PE15-KEY3

第一步、使用stm32cubeMX创建工程,选择相应的芯片,配置RCC、SYS、引脚和时钟如下图所示:





注意,由于按键上有上拉电阻,这里选择中断模式的时候,我们选择下降沿触发中断。

第二步,配置输出Keil工程



第三步、编写程序下载验证

STM32CubeMx把代码都生成了,查找函数,分析调用的过程,添加应用层代码就行

首先在stm32f4xx_it.c文件中查找,所有的中断函数都是放在这个文件中的,代码如下:

voidEXTI15_10_IRQHandler(void)

{

HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12);

HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_13);

HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_14);

HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_15);


}

可以看出,这四个按键的中断触发后首先会调用这个函数,这个函数有调用HAL_GPIO_EXTI_IRQHandler,再看一下这个函数的原型

voidHAL_GPIO_EXTI_IRQHandler(uint16_tGPIO_Pin)

{

if(__HAL_GPIO_EXTI_GET_IT(GPIO_Pin)!=RESET)

{

__HAL_GPIO_EXTI_CLEAR_IT(GPIO_Pin);

HAL_GPIO_EXTI_Callback(GPIO_Pin);

}

}

__weakvoidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin)

{

}


根据程序可以知道,当中断发生的时候会调用HAL_GPIO_EXTI_Callback();程序中只给出了一个虚函数,需要重新实现它,在main.c添加如下代码,来重新实现这个函数,来完成功能:

voidHAL_GPIO_EXTI_Callback(uint16_tGPIO_Pin)

{

switch(GPIO_Pin)

{

caseGPIO_PIN_12:LED0_Toggle();break;

caseGPIO_PIN_13:LED1_Toggle();break;

caseGPIO_PIN_14:LED2_Toggle();break;

caseGPIO_PIN_15:LED3_Toggle();break;

default:break;

}

}


这样就实现了当按键中断发生的时候就反转灯的状态。




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > 使用STM32CubeMX开发三:按键中断实验 -
 

"使用STM32CubeMX开发三:按键中断实验 -"的相关文章

网站地图

围观()