stm32F103核心板中断控制LED

编程入门 行业动态 更新时间:2024-10-11 21:22:12

stm32F103<a href=https://www.elefans.com/category/jswz/34/1769673.html style=核心板中断控制LED"/>

stm32F103核心板中断控制LED

文章目录

  • 一.中断的介绍
    • 1.中断概念
    • 2.中断的作用
    • 3. 中断的类型
    • 4.中断的优先级
    • 5. 中断编程注意事项
  • 二.工程建立
    • 1.题目要求
    • 2.原理介绍
    • 3.创建STM32CubeMX工程
  • 三.代码编写
  • 四.硬件连接
    • 4.1usb to ttl ----> STM32F103C8T6核心开发板
    • 4.2LED与按键连接
    • 4.3结果展示
  • 五.总结

一.中断的介绍

1.中断概念

  中断是指计算机在执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序,待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。F103 在内核水平上搭载了一个异常响应系统, 支持为数众多的系统异常和外部中断。

  •   中断分为同步中断和异步中断

同步中断——同步中断是当指令执行时由 控制单元产生的,之所以称为同步,是因为只有在一条指令终止执行后 CPU 才会发出中断
异步中断——异步中断是由其他硬件设备依照 CPU 时钟信号随机产生的。

  • 中断全过程概述

1、中断发生:当CPU在处理某一事件A时,发生了另一事件B,请求 CPU迅速去处理
2、中断处理:CPU暂停当前的工作,转去处理事件B
3、中断返回:当CPU将事件B处理完毕后,再回到事件A中被暂停的地方继续处理事件A
以上全过程称为中断

2.中断的作用

速度匹配:可以解决快速的CPU与慢速的外部设备之间传送数据的矛盾
分时操作:CPU可以分时为多个外部设备服务,提高计算机的利用率
实时响应:CPU能够及时处理应用系统的随机事件,增强系统的实时性
可靠性高:CPU可以处理设备故障及掉电等突发事件,提高系统可靠性
提高计算机系统效率,维持系统可靠正常工作,满足实时处理要求,提供故障现场处理手段

3. 中断的类型

  • 硬中断:通过处理器中断信号线产生的中断
  • 软中断:通过非法指令或特殊指令触发的中断

4.中断的优先级

优先级

1.多个中断同时出现时,处理器先响应高优先级的中断
2.低优先级中断的ISR执行时,可以被高优先级中断再次打断
3.ISR比App Code拥有更高的执行优先级

5. 中断编程注意事项

在配置每个中断的时候一般有 3 个编程要点

  • 1、使能外设某个中断,这个具体由每个外设的相关中断使能位控制。比如串口有发送完成中断,接收完成中断,这两个中断都由串口控制寄存器的相关中断使能位控制。
  • 2、初始化 NVIC_InitTypeDef 结构体,配置中断优先级分组,设置抢占优先级和子优先级,使能中断请求。
  • 3、编写中断服务函数。在启动文件 startup_stm32f10x_hd.s中我们预先为每个中断都写了一个中断服务函数,只是这些中断函数都是为空,为的只是初始化中断向量表。关于中断服务函数的函数名必须跟启动文件里面预先设置的一样,如果写错,系统就在中断向量表中找不到中断服务函数的入口,直接跳转到启动文件里面预先写好的空函数,并且在里面无限循环,实现不了中断。

二.工程建立

1.题目要求

  用stm32F103核心板的GPIOA端一管脚接一个LED,GPIOB端口一引脚接一个开关(用杜邦线模拟代替)。采用中断模式编程,当开关接高电平时,LED亮灯;接低电平时,LED灭灯。

2.原理介绍

这里笔者选择使用的核心板为STM32F103C8T6最小核心板

设置PA1端接开关,PA5接LED

  • 对于按键电路,设置上拉式按键

按键按下,引脚PA1读到低电平
按键释放,引脚PA1读到高电平

-对于 LED灯的触发方式

按键按下瞬间,形成上升沿
按键释放瞬间,形成下降沿

笔者将这里设置为上升沿触发,故而按键每按一次,电平变化一次,LED灯的状态变化一次。

3.创建STM32CubeMX工程

(1)在STMCubeMX主界面,创建新项目,点击ACCEE TO MCU SELECTOR

(2)在part name里选择自己的芯片(一般选择直接搜索所需芯片),本文采用STM32F103C8T6点击信息栏中的具体芯片信息选中,点击start project

(3)外设配置
这里笔者设置指示灯LED引脚PA5,设置引脚模式为输出模式GPIO_Output
设置按键引脚PA1,设置引脚为外部中断功能,PA1与外部中断线EXIT1连接GPIO_EXIT1

  • 对于LED对应的PA5管脚,默认设置即可,名字设为LED
  • 对于开关对应管脚PA1,设置其触发方式为上升沿触发

External Interrupt Mode with Rising edge trigger detection上升沿
ExternalInterrupt Mode with Falling edge trigger detection下降沿
External Interrupt Mode with Rising/Falling edge trigger detection上升沿和下降沿



(4)开启中断,点击NVIC,点击下面的使能Enabled

(5)配置中断优先级(大多数情况下不必设置中断优先级,直接使用中断编号设置的默认中断优先级)

(6)时钟配置
如图所示进行配置即可

(7)配置项目设置(名称、位置、环境)

(8)生成项目

三.代码编写

(1)点击Drivers目录下的stm32f1xx_hal_gpio.c文件,可以看到其中voidHAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)这个函数是遇到中断后跳转执行的函数;下方的 __weak :表示这个函数是虚函数,需要重新编写。

在main.c中进行重新编写
代码如下

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


工程调试,进行编译无误后将代码烧录至板子中。

四.硬件连接

4.1usb to ttl ----> STM32F103C8T6核心开发板

3V3 —> 3V3
GND —> GND
RXD —> A9
TXD —> A10

4.2LED与按键连接

按键一按下,电平发生一次变化,故而按下一次LED灯的状态变化一次

LED长脚——3V3
LED短脚——PA5
按键——PA1
按键——3V3

4.3结果展示

五.总结

本次笔者给大家大致介绍了一下中断的简单运用,采用了中断模式编程,来实现高低电平下的LED灯亮与灭。笔者在刚开始初期没有按键的时候采用杜邦线拔插的方式,而后发现在拔下时处于悬空状态很不稳定,导致灯会闪烁。
通过本次学习笔者也收获颇多,之后也会继续认真学习研究,将其更好地运用。


参考 1.[]() 2.[=1001.2014.3001.5502](=1001.2014.3001.5502)

更多推荐

stm32F103核心板中断控制LED

本文发布于:2024-03-14 01:05:23,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1735286.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:核心   LED

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!