STM32F103VET6基于STM32CubeMX创建EXTI外部中断工程
Posted perseverance52
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了STM32F103VET6基于STM32CubeMX创建EXTI外部中断工程相关的知识,希望对你有一定的参考价值。
STM32F103VET6基于STM32CubeMX创建EXTI外部中断工程
-
✨EXTI外部中断参数配置演示
-
📗STM32F103VET6简介
📋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。
📚EXTI外部中断配置流程
🎉通过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有按键被按下的时候,将通过串口打印一条信息出来。
📓串口printf重映射
- 🍂在usart.c中添加下面的内容,并在Keil菜单中target设置里面,勾选
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
以上是关于STM32F103VET6基于STM32CubeMX创建EXTI外部中断工程的主要内容,如果未能解决你的问题,请参考以下文章
STM32F103VET6基于STM32CubeMX创建EXTI外部中断工程
STM32F103VET6基于STM32CubeMX RTC时钟秒更新中断使用示例
STM32F103VET6基于STM32CubeMX 配置非DMA方式获取内部温度
STM32F103VET6基于STM32CubeMX 配置硬件I2C驱动ssd1306 OLED屏幕