前言
本文记录下我学习STM32CubeMX时的流程,方便以后回忆。系统板是基于STM32F103C6T6。本章记录外部中断。
步骤
该实验步骤以,配置PA1为外部中断下降沿触发事件,在触发事件后点亮板载PC13LED灯
-
时钟配置和生成文件配置之类的,其它文章讲过了,这里就不重复了。
-
引脚配置(PC13点灯引脚配置忽略,讲过了):
在GPIO模式中一共有六个选择,大体分为中断模式和事件模式,和各三种检测模式,上升沿,下降沿,边沿检测。
配置完成后,直接生成Keil工程文件。
-
keil中打开,生成的工程。
重写回调函数HAL_GPIO_EXTI_Callback,和在回调函数中判断触发中断的路线,因为外部中断都是共用一个中断事件的回调的。
//重写回调函数 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { //判断触发中断的路线 if(GPIO_Pin & GPIO_PIN_1) { //点灯事件(PC13->LED) HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET); } //假如存在线路2,因为是都是共用一个回调的,所以要在里面判断。 //if(GPIO_Pin & GPIO_PIN_1) //{ // //事件区 //} }
stm32f1xx_hal_gpio.h文件的234行中,有I/O操作函数和外部中断的回调事件的声明。想要详细了解,可以去看。
/* IO operation functions *****************************************************/ GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState); void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin); void HAL_GPIO_EXTI_IRQHandler(uint16_t GPIO_Pin); void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);