在之前博客中采用轮询的方式实现灯的亮灭,但是轮询对于资源的浪费较大,一般情况下不会使用该方式,在该篇博客中采用中断的形式检测按键,进而控制灯的亮灭。如果手边没有按键,可以使用串口输出模拟按键即可。
目录
【问题描述】
用stm32F103核心板的GPIOA端一管脚接一个LED,GPIOB端口一引脚接一个开关(用杜邦线模拟代替)。采用中断模式编程,当开关接高电平时,LED亮灯;接低电平时,LED灭灯
【问题分析】
1.用到实验工具
STM32CubeMX、STM32最小核心板、面包板、LED、杜邦线、FlyMcu、MDK等
2.具体流程
(1)首先,配置文件.
使用CubeMX将文件配置好,之后打开生成的MDK5文件,进行中断回调函数
的编写;
(2)之后,硬件连接
.
核心板与面包板串口数据线TX、RX,以及电源线,地线等连接好,之后根据配置好的GPIO管脚以及中断输出管脚,进行连接LED
(3)其次,烧录
软件.
打开FlyMcu
软件,找到上述工程生成的Hex
文件,将文件烧录进去
(4)最后,上板测试
.
通过插拔中断输出连接的杜邦线,观察灯的亮灭状态。
【知识充点站】
就中断做出以下几个方面的介绍:中断产生的背景、中断的含义、中断分类,中断源和中断过程。详细的思维导图如下:
1.中断产生的背景
单片机控制外部设备时,为了不让高速的处理器资源浪费,解决高速执行的处理器和慢速外设协同工作的问题
处理器在控制外设的过程中,有些任务又必须等到外设产生某种事件后才能运行,为了与外设协同工作,高速处理器必须停下来等待外设,这样的工作方式不能使人满意,高速处理器的资源白白浪费了。在这种情况下,中断应运而生。
2.中断的定义
中断
,英文名为Interrupt
,计算机的世界里处处都有中断,任何工作都离不开中断。
简单来说就是CPU停下当前的工作任务,去处理其他事情,处理完后回来继续执行刚才的任务,这一过程便是中断。
正是有了中断,才有了多道程序设计的可能性。中断,就好比大家正常在教室上课,突然发生了火灾,正常处理就是:先停下课程,逃离火场。这个过程就是处理中断,之后中断结束后,正常运行之前的代码即可。
3.中断的分类
(1)外部中断
(1)可屏蔽中断
:通过INTR线向CPU请求的中断,主要来自外部设备如硬盘,打印机,网卡等。此类中断并不会影响系统运行,可随时处理,甚至不处理,所以称为可屏蔽中断。
(2)不可屏蔽中断
:通过NMI线向CPU请求的中断,如电源掉电,硬件线路故障等。这里不可屏蔽并不是不可以屏蔽,不建议屏蔽,而是问题太大,屏蔽不了,不能屏蔽