stm32外部中断模式控制灯亮灭

stm32外部中断模式控制灯亮灭

文章目录

  • stm32外部中断模式控制灯亮灭
    • 软件版本:
    • 1. 通过STMCube配置项目
      • 1.1 引脚配置
      • 1.2 配置SYS
      • 1.3 配置RCC
      • 1.4 配置GPIO
      • 1.5 配置NVIC
      • 1.6 时钟
      • 1.7 代码创建
    • 2. 通过KEil配置代码
      • 2.1 添加代码
        • 2.1.1打开生成的项目,打开stm32f1xx_it.c,找到EXTI9_5_IRQHandler()函数
        • 2.1.2 选中HAL_GPIO_EXTI_IRQHandler,按F12跳转到stm32f1xx_hal_gpio.c,找到HAL_GPIO_EXTI_Callback()这个函数
      • 2.2 编译成HEX文件
      • 2.3 烧录
    • 3. 运行
    • 4.总结
    • 5.参考资料

软件版本:

STM32CubeMX:6.6.0
KEIl:5.37.0.0
FlyMcu:0.188
硬件:
STM32F103ZET6

1. 通过STMCube配置项目

1.1 引脚配置

A4输出控制灯的亮灭,设置为GPIO_Output

A1持续输出高电平,设置同上

A7持续输出低电平,设置同上

B7模拟开关,设置为GPIO_EXTI5

stm32外部中断模式控制灯亮灭_第1张图片

1.2 配置SYS

在Pinout &Configuration 栏里,配置系统调试接口SYS,选择 Serial Wire

stm32外部中断模式控制灯亮灭_第2张图片

1.3 配置RCC

RCC设置,选择 HSE (外部高速时钟)为 Crystal/Ceramic Resonator

stm32外部中断模式控制灯亮灭_第3张图片

1.4 配置GPIO

选择 LED 灯引脚 PA4,设置引脚为输出模式 GPIO_Output;
选择 PB7作为外部中断的引脚,设置为与中断线 GPIO_EXTI7 连接

PA1为高电平,PA7为低电平。

将PA4的Uesr Label 改为LED,PB7的改为SWITCH

stm32外部中断模式控制灯亮灭_第4张图片

stm32外部中断模式控制灯亮灭_第5张图片

1.5 配置NVIC

stm32外部中断模式控制灯亮灭_第6张图片

1.6 时钟

stm32外部中断模式控制灯亮灭_第7张图片

1.7 代码创建

stm32外部中断模式控制灯亮灭_第8张图片

stm32外部中断模式控制灯亮灭_第9张图片

2. 通过KEil配置代码

2.1 添加代码

  • 外部中断处理函数

外部中断处理逻辑与按键扫描一样,当检测到按键时, LED 状态变化。回调函数中无需处理中断标志位,是因为此项工作已经由 HAL_GPIO_EXTI_IRQHandler 完成。

2.1.1打开生成的项目,打开stm32f1xx_it.c,找到EXTI9_5_IRQHandler()函数

stm32外部中断模式控制灯亮灭_第10张图片

2.1.2 选中HAL_GPIO_EXTI_IRQHandler,按F12跳转到stm32f1xx_hal_gpio.c,找到HAL_GPIO_EXTI_Callback()这个函数

stm32外部中断模式控制灯亮灭_第11张图片

将下面代码写入HAL_GPIO_EXTI_Callback()对应位置处

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) 
{ 
	 if( GPIO_Pin == SWITCH_Pin ) // 判断外部中断源
		{
			HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); // 翻转LED状态
		}
}

stm32外部中断模式控制灯亮灭_第12张图片

注意:这时会报错有些管脚未定义,要将头文件main.h中的宏定义复制到stm32f1xx_hal_gpio.c中

stm32外部中断模式控制灯亮灭_第13张图片

stm32外部中断模式控制灯亮灭_第14张图片

2.2 编译成HEX文件

image-20221019181042744

2.3 烧录

stm32外部中断模式控制灯亮灭_第15张图片

3. 运行

4.总结

本次实验运用了STM外部中断模式控制LED灯亮灭,初步体会了外部中断的用法,同时也更熟悉了对STM32CubeMX和Keil5的运用。

5.参考资料

STM32CubeMX 实现 LED 亮灭----中断模式_风霜叶的博客-CSDN博客

STM32外部中断模式控制LED灯亮灭_初见snow的博客-CSDN博客
226.3001.4187)

STM32外部中断模式控制LED灯亮灭_初见snow的博客-CSDN博客

你可能感兴趣的:(stm32,单片机,arm)