✨EXTI外部中断参数配置演示
📋STM32F103xC, STM32F103xD和STM32F103xE性能线系列集成了高性能的ARM®Cortex®-M3 32位RISC核心,在72 MHz频率下工作,高速嵌入式存储器(高达512千字节的闪存和高达64千字节的SRAM),以及广泛的增强I/ o和连接到两个APB总线的外设。所有设备都提供3个12位adc, 4个通用16位定时器和两个PWM定时器,以及标准和高级通信接口:最多2个i2c, 3个spi, 2个I2Ss, 1个SDIO, 5个usart,一个USB和一个CAN。
🎉通过STM32CubeMX配置EXTI外部中断工程,只需要完成最后一步的重写回调函数中的内容即可。
HAL_NVIC_SetPriority
:定义在stm32f1xx_hal_cortex.c
文件中。🌿该函数生成在
MX_GPIO_Init()
GPIO初始函数中。
HAL_NVIC_EnableIRQ
:定义在stm32f1xx_hal_cortex.c
文件中。🌿该函数也是生成在
MX_GPIO_Init()
GPIO初始函数中。
HAL_GPIO_EXTI_IRQHandler
:回调函数,定义在stm32f1xx_hal_gpio.c
文件中,是一个弱函数,在使用时需要重写该函数内容。🌿将该函数在main.c中重写内容。
#include "stdio.h"//在调用printf地方包含此头文件
//重写回调函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
static uint32_t tick = 0;
/* 非阻塞消抖 */
if(HAL_GetTick() - tick < 300)
return;
tick = HAL_GetTick();
/*判断是中断引脚*/
if(GPIO_Pin == GPIO_PIN_7)
{
HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_5);//状态翻转
printf("PE7 KEYPRESS \n");
}
if(GPIO_Pin == GPIO_PIN_8)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5);//状态翻转
printf("PE8 KEYPRESS \n");
}
}
📝这里配置的是当中断引脚PE8、PE7有按键被按下的时候,将通过串口打印一条信息出来。
Use Micro LIB
#include "stdio.h"
/*可调用printf*/
int fputc(int ch,FILE *f)
{
/*&huart1指的是串口1,如果用别的串口就修改数字*/
HAL_UART_Transmit(&huart1 , (uint8_t *)&ch , 1 , 0xffff);
return ch;
}
链接:https://pan.baidu.com/s/1Pq9X8zCguQM2dzNscgmUGw
提取码:qfbq