STM32中断控制LED灯

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、中断是什么?
  • 二、中断控制LED灯
    • 1.用STM32CubeMX建议工程
  • 三 编写代码
  • 四 编译运行
  • 总结


前言

本博客是为了学习Stm32的中断。


一、中断是什么?

中断是一个过程,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中止当前程序的执行,转而去为处理紧急的事件,待处理完毕后再返回被打断的程序处继续往下执行。
中断是一个过程,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中止当前程序的执行,转而去为处理紧急的事件,待处理完毕后再返回被打断的程序处继续往下执行。

二、中断控制LED灯

1.用STM32CubeMX建议工程

① 设置RCC
STM32中断控制LED灯_第1张图片
② 配置时钟
STM32中断控制LED灯_第2张图片
③ 设置sys
STM32中断控制LED灯_第3张图片
④设置引脚

将A2引脚设置为GPIO_OUTPUT
将B0引脚设置为GPIO_EXTI0:
STM32中断控制LED灯_第4张图片
⑤ 继续设置
STM32中断控制LED灯_第5张图片
⑥文件工程设置
STM32中断控制LED灯_第6张图片

⑦ Code Generator配置:
STM32中断控制LED灯_第7张图片
⑧ 点击右上角生成项目
STM32中断控制LED灯_第8张图片

三 编写代码

搜索完后点击find all
STM32中断控制LED灯_第9张图片
该函数为外部中断回调函数,__weak意为弱函数,即我们重写一个相同的函数则调用重写的函数:
STM32中断控制LED灯_第10张图片
main函数中放下以下代码

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){
	GPIO_PinState b0_pin = HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_0);  // 读取b0的状态
	switch (GPIO_Pin){
		case GPIO_PIN_0:
			HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, b0_pin);  // 将a2写入与b0相同的电位
			break;
	}
	
}

STM32中断控制LED灯_第11张图片

四 编译运行

STM32中断控制LED灯_第12张图片
演示图
STM32中断控制LED灯_第13张图片

STM32中断控制LED灯_第14张图片

总结

通过此实验理解了中断原理及其应用。

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