STM32中断控制LED灯亮灭

目录

一、中断介绍

1.中断分类

硬件中断(Hardware Interrupt)

软件中断(Software Interrupt) 

2.中断优先级

3.中断源种类

4.中断响应原则

二、新建项目

1.打开cubemx选择好芯片STM32F103C8

 2.配置RCC

3.配置SYS

3.配置时钟

4.选择设置引脚

 5.中断设置

6.配置NVIC

7.项目设置

三、keil5中项目操作

1.先找到stm32f1xx_it.c

2.再找到HAL_GPIO_EXTI_Hander,按下F12 

 3.找到weak函数,替换成如下代码

4.编译并生成hex文件

四、电路连接

五、烧录

六、运行结果

七、总结

八、参考博客


一、中断介绍

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

1.中断分类

硬件中断(Hardware Interrupt)

  • 可屏蔽中断(maskable interrupt)可通过在中断屏蔽寄存器中设定位掩码来关闭。

  • 非可屏蔽中断(non-maskable interrupt,NMI)。硬件中断的一类,无法通过在中断屏蔽寄存器中设定位掩码来关闭。典型例子是时钟中断(一个硬件时钟以恒定频率—如50Hz—发出的中断)。

  • 处理器间中断(interprocessor interrupt)。一种特殊的硬件中断。由处理器发出,被其它处理器接收。仅见于多处理器系统,以便于处理器间通信或同步。

  • 伪中断(spurious interrupt)。一类不希望被产生的硬件中断。发生的原因有很多种,如中断线路上电气信号异常,或是中断请求设备本身有问题。

软件中断(Software Interrupt) 

  • 软件中断。是一条CPU指令,用以自陷一个中断。由于软中断指令通常要运行一个切换CPU至内核态(Kernel Mode/Ring 0)的子例程,它常被用作实现系统调用(System call)。

2.中断优先级

为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将
中断源分为若干个级别,称作中断优先级。

在实际系统中,常常遇到多个中断源
同时请求中断的情况,这时CPU必须确定首先为哪一个中断源服务,以及服务的次序。解决的方法是中断优先排队,即根据中断源请求的轻重缓急,排好的优先次序即优先级( Priority ),又称优先权,先响应优先级最高的中断请求
。另外,当CPU正在处理某一中断时,要能响应另一个优先级更高的中断请求,而屏蔽掉同级或较低级的中断请求,形成中断嵌套。

3.中断源种类

(1)设备中断:如键盘、打印机等设备的数据传送请求等。 

(2)指令中断:为了方便用户使用系统资源或调试软件而设置的中断指令,由程序预先安排的中断指令(INT n)引起,如BIOS及DOS系统功能调用的中断指令等。 

(3)故障中断:计算机内部设有故障
自动检测装置,如电源掉电、奇偶校验错或协处理器中断请求等意外事件,都要求CPU进行相应的中断处理。  

(4)实时时钟中断:在自动控制系统中,常遇到定时检测与时间控制,这时可采用外部时钟电路进行定时。CPU可发出命令启动时钟电路开始计时,待定时时间到,时钟电路就会向CPU发出中断申请,由CPU进行处理。 

(5) CPU内部运算产生的某些错误所引起的中断:如除法出错、运算溢出、程序调试中设置断点等。

4.中断响应原则

  • CPU首先响应高
    优先级的
    中断请求;

  • 如果优先级相同,CPU按查询次序响应排在前面的中断;

  • 正在进行的中断过程不能被新的同级或低优先级中断请求所中断;

  • 正在进行的低优先级中断过程,能被高
    优先级中断请求所中断。

二、新建项目

1.打开cubemx选择好芯片STM32F103C8

 2.配置RCC

3.配置SYS

 

3.配置时钟

4.选择设置引脚

A2--GPIO_Output

B0--GPIO_EXTI0

 

 5.中断设置

6.配置NVIC

 

7.项目设置

  再点击GENERATE CODE生成

三、keil5中项目操作

1.先找到stm32f1xx_it.c

2.再找到HAL_GPIO_EXTI_Hander,按下F12 

 3.找到weak函数,替换成如下代码

4.编译并生成hex文件

四、电路连接

3v3--3v3

GND--GND

A9--RXD;A10--TXD

A2连接到led的正极;B0,G连接到led的负极

 

五、烧录

 

六、运行结果

 

七、总结

       通过此次作业,我学会了cubemx的使用以及对于中断程序的理解使用,对我的启发很大,同时对于嵌入式系统也有了更深刻的理解。同时,对于keil5和cubemx的练习使用也更加熟练,两者也能更好地联系起来。

八、参考博客

STM32之中断控制LED灯_Baker_Streets的博客-CSDN博客_stm32按键中断控制led灯

嵌入式中断的理解_snyanglq的博客-CSDN博客_嵌入式中断的意义

  • 2
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STM32是一款基于ARM Cortex-M系列内核的32位微控制器,可用于开发嵌入式系统。按键中断LED是嵌入式系统中非常常见的功能,下面我将用300字回答如何使用STM32的按键中断控制LED。 首先,我们需要连接一个按键和一个LEDSTM32微控制器的相应引脚上。假设按键连接到PA0引脚,LED连接到PC13引脚。 接下来,我们需要配置STM32的GPIO外设来控制这些引脚。首先,开启相关引脚的时钟。然后,将PA0引脚配置为输入模式,PC13引脚配置为输出模式。可以使用STM32的寄存器或者开发环境提供的库函数来完成这些配置。 然后,我们需要配置外部中断。配置PA0引脚所对应的外部中断线,使其可以检测到按键的状态变化。可以使用STM32的寄存器或者库函数来完成这个配置。 紧接着,我们编写中断处理函数。当按键状态发生变化,中断触发时,中断处理函数被调用。在该函数中,我们可以读取按键引脚的状态,如果按键被按下,我们将PC13引脚设置为高电平,LED起;如果按键被释放,我们将PC13引脚设置为低电平,LED。 最后,我们需要在主函数中启用中断。启用中断后,当按键状态发生变化时,中断处理函数将被调用。 以上就是使用STM32的按键中断控制LED的步骤。通过配置GPIO外设和外部中断,编写中断处理函数,我们能够实现按下按键时,LED起;释放按键时,LED的功能。这样就完成了按键中断控制LED的任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值