目录

  • 一、所需环境软硬件
    • 1、软件
    • 2、硬件
  • 二、中断介绍
  • 三、STM32CubeMX新建项目
    • 1、引脚配置
    • 2、配置EXIT
    • 3、配置SYS
    • 4、配置GPIO
    • 5、创建项目
  • 四、Keil编写代码及烧录
  • 五、实现效果
  • 六、总结

一、所需环境软硬件

1、软件

STM32CubeMX
Keil
FlyMcu

以上软件均可在网上上免费下载到

2、硬件

STM32F103最小系统板一块
面包板一块
导线若干
led小灯泡一个

二、中断介绍

中断是由内核外部产生的,一般由硬件引起,比如外设中断和外部中断等。
处理器和外部设备的数据传输方式:

中断的全过程:

中断过程执行的示意图:

处理器根据不同中断的重要程序设置不同的优先级:

中断被响应的过程:

GPIO引脚的外部中断触发方式:

中断程序的编程步骤:

这里我们只需完成第五步:编写中断服务程序
中断服务任务处理通过用户编写的回调函数来实现:

三、STM32CubeMX新建项目

和之前一样,选择自己芯片的型号,我这里是STM32F103C8T6
这里需要一个GPIOB端口充当开关的角色,使用一根导线连接端口和电平,接高电平时,LED亮灯;接低电平时,LED灭灯。

1、引脚配置

A4输出控制灯的亮灭,设置为GPIO_Output
A1持续输出高电平,设置为GPIO_Output
A7持续输出低电平,设置为GPIO_Output
B5模拟开关,设置为GPIO_EXTI5

并且为PA4和PB5引脚起个名字,方便后续代码引用。

https://s17.aconvert.com/convert/p3r68-cdx67/0ixoa-par3t.gif

2、配置EXIT

3、配置SYS

4、配置GPIO

改变PB5引脚的触发模式

5、创建项目


四、Keil编写代码及烧录

在main.c中编写回调函数,回调函数就是中断程序执行的函数。

    void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){if(GPIO_Pin == SWITCH_Pin){//获取B5的电位GPIO_PinState pinState = HAL_GPIO_ReadPin(SWITCH_GPIO_Port,SWITCH_Pin);//低电位if(pinState==GPIO_PIN_RESET)HAL_GPIO_WritePin(LED_A4_GPIO_Port,LED_A4_Pin,GPIO_PIN_RESET);//把A4变为低电位//高电位elseHAL_GPIO_WritePin(LED_A4_GPIO_Port,LED_A4_Pin,GPIO_PIN_SET);//把A4变为高电位}}


使用FlyMcu烧录成功:

五、实现效果

可见,开关接高电平时LED灯变亮了,开关接低电平时LED灯灭了。因为外部电路的存在,LED灯一直是常亮的。

六、总结

使用外部中断模拟开关控制LED灯亮,首先需要弄懂中断控制的原理,因为有STM32CubeMX软件的帮助,我们只需要编写回调函数来设置中断后运行的程序。总的来说还是比较简单。

STM32使用外部中断控制led灯亮灭相关推荐

  1. 用51单片机中断控制LED灯亮灭

    用51单片机中断控制LED灯亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED灯 sbit k3=P3^2;//位定义按键 void dela ...

  2. STM32中断控制LED灯亮灭

    目录 一.中断介绍 1.中断分类 硬件中断(Hardware Interrupt) 软件中断(Software Interrupt) 2.中断优先级 3.中断源种类 4.中断响应原则 二.新建项目 1 ...

  3. Android Studio设计APP实现与51单片机通过WIFI模块(ESP8266-01S)通讯控制LED灯亮灭的设计源码【详解】

    目录 一.前言 二.效果展示 1.APP界面展示 2.C51硬件展示 三.Android Studio APP源代码 1.AndroidManifest.xml 1.请求联网: 2.开放明文传输: 2 ...

  4. stm32f103c8t6+ESP8266利用onenet平台上传数据到云平台,再利用云平台远程下发命令给单片机控制LED灯亮灭

    stm32f103c8t6+ESP8266利用onenet平台上传数据到云平台,再利用云平台远程下发命令给单片机控制LED灯亮灭 接触stm32已经有一年半的时间了,从最开始的stm32F103ZET ...

  5. 安卓手机与蓝牙模块联合调试(二)—— 单片机蓝牙控制LED灯亮灭(上)

    系列博文: (1)安卓手机与蓝牙模块联合调试(一)--蓝牙模块的串口通讯 (2)安卓手机与蓝牙模块联合调试(二)-- 单片机蓝牙控制LED灯亮灭(上) (3)安卓手机与蓝牙模块联合调试(三)-- 单片 ...

  6. 用51单片机实现按键控制LED灯亮灭

    用51单片机实现按键控制LED灯亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED灯 sbit k1=P3^1;//位定义按键 void de ...

  7. 安卓手机与蓝牙模块联合调试(三)—— 单片机蓝牙控制LED灯亮灭(下)

    源码获取 https://gitcode.net/cjt-bluetooth/android-51mcu 系列博文: (1)安卓手机与蓝牙模块联合调试(一)--蓝牙模块的串口通讯 (2)安卓手机与蓝牙 ...

  8. 采用STM32外部中断模式控制LED灯亮灭

    文章目录 实验工具 一.STMCube配置项目 1.配置引脚 2.配置EXIT 3.配置SYS 4.配置GPIO 5.创建代码 二.使用KEil配置代码 1.打开生成的项目,找到stm32f1xx_i ...

  9. stm32中断实现LED灯亮灭

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

  10. STM32按键控制LED灯亮灭(四)

    编程要点: 1)使能GPIO端口时钟: 2)初始化GPIO目标引脚为输入模式(浮空输入): 3)编写简单测试程序,检测按键的状态,实现按键控制LED灯: bsp_led.h文件 #ifndef T_L ...

最新文章

  1. Linux环境中Visual Studio Code的配置使用----编译运行C/C++(良心教程)
  2. C\C++ 交换两个变量的方法
  3. Chrome 隐藏 SSL 证书信息 禁止禁用 DRM
  4. python均值滤波_opencv+python实现均值滤波
  5. 征战蓝桥 —— 2013年第四届 —— C/C++A组第5题——前缀判断
  6. Xilinx下载方式(具体可以参考配置MCS文件时右下角help调出的doc)
  7. flink更新flink-shaded-hadoop-3-uber
  8. python函数里面,一个*是可变参数的元祖,两个*是可变参数的字典
  9. 动态IL织入框架Harmony简单入手
  10. 【模板】线段树区间修改
  11. 本周开源论文推荐:含人脸识别、实例分割、跟踪、SR等
  12. P0INP = 0Xfd;P1DIR |= 0X01;
  13. ★一张图弄明白从零维到十维
  14. 蓝桥杯c语言试题(3)
  15. 11.6 通信实例与ASCII码
  16. 怎样将图片制作转换圆形图片
  17. 系统启动过程(基于三星s5p6818 uboot)
  18. 阿里云跨账号迁移云服务器实例
  19. QQ浏览器登陆微信后,下载接收的文件保存在了哪里
  20. 区块如何防篡改_区块链为什么能防篡改?

热门文章

  1. 云南省计算机云教室,“云教室”落户云南祥云这个小山村
  2. MMORPG摄像机操作
  3. 产品商业需求文档_【器】我的产品需求文档心法
  4. 微信怎么加入黑名单?微信黑名单怎么恢复好友
  5. android版本8.1.0和9的区别,安卓8.1和9.0的区别是什么
  6. AD中使用Net Label时,编译时为什么总是Floating。出现的原因。
  7. 姿态估计1-04:FSA-Net(头部姿态估算)-白话给你讲论文-翻译无死角(2)
  8. 基于Python 实现 Spirent TestCenter 自动化
  9. 手把手教你运用JAVA爬虫技术爬取小说
  10. 入坑张银奎老师研发的GDK7