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
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值