STM32使用外部中断控制led灯亮灭
目录
- 一、所需环境软硬件
- 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灯亮灭相关推荐
- 用51单片机中断控制LED灯亮灭
用51单片机中断控制LED灯亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED灯 sbit k3=P3^2;//位定义按键 void dela ...
- STM32中断控制LED灯亮灭
目录 一.中断介绍 1.中断分类 硬件中断(Hardware Interrupt) 软件中断(Software Interrupt) 2.中断优先级 3.中断源种类 4.中断响应原则 二.新建项目 1 ...
- Android Studio设计APP实现与51单片机通过WIFI模块(ESP8266-01S)通讯控制LED灯亮灭的设计源码【详解】
目录 一.前言 二.效果展示 1.APP界面展示 2.C51硬件展示 三.Android Studio APP源代码 1.AndroidManifest.xml 1.请求联网: 2.开放明文传输: 2 ...
- stm32f103c8t6+ESP8266利用onenet平台上传数据到云平台,再利用云平台远程下发命令给单片机控制LED灯亮灭
stm32f103c8t6+ESP8266利用onenet平台上传数据到云平台,再利用云平台远程下发命令给单片机控制LED灯亮灭 接触stm32已经有一年半的时间了,从最开始的stm32F103ZET ...
- 安卓手机与蓝牙模块联合调试(二)—— 单片机蓝牙控制LED灯亮灭(上)
系列博文: (1)安卓手机与蓝牙模块联合调试(一)--蓝牙模块的串口通讯 (2)安卓手机与蓝牙模块联合调试(二)-- 单片机蓝牙控制LED灯亮灭(上) (3)安卓手机与蓝牙模块联合调试(三)-- 单片 ...
- 用51单片机实现按键控制LED灯亮灭
用51单片机实现按键控制LED灯亮灭 #include<reg51.h>//头文件 sbit LED=P2^0;//位定义LED灯 sbit k1=P3^1;//位定义按键 void de ...
- 安卓手机与蓝牙模块联合调试(三)—— 单片机蓝牙控制LED灯亮灭(下)
源码获取 https://gitcode.net/cjt-bluetooth/android-51mcu 系列博文: (1)安卓手机与蓝牙模块联合调试(一)--蓝牙模块的串口通讯 (2)安卓手机与蓝牙 ...
- 采用STM32外部中断模式控制LED灯亮灭
文章目录 实验工具 一.STMCube配置项目 1.配置引脚 2.配置EXIT 3.配置SYS 4.配置GPIO 5.创建代码 二.使用KEil配置代码 1.打开生成的项目,找到stm32f1xx_i ...
- stm32中断实现LED灯亮灭
一.中断 1.基本概念 在处理器中,中断是一个过程,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中止当前程序的执行,转而去为处理紧急的事件,待处理完毕后再返回被打断的程序处继 ...
- STM32按键控制LED灯亮灭(四)
编程要点: 1)使能GPIO端口时钟: 2)初始化GPIO目标引脚为输入模式(浮空输入): 3)编写简单测试程序,检测按键的状态,实现按键控制LED灯: bsp_led.h文件 #ifndef T_L ...
最新文章
- Linux环境中Visual Studio Code的配置使用----编译运行C/C++(良心教程)
- C\C++ 交换两个变量的方法
- Chrome 隐藏 SSL 证书信息 禁止禁用 DRM
- python均值滤波_opencv+python实现均值滤波
- 征战蓝桥 —— 2013年第四届 —— C/C++A组第5题——前缀判断
- Xilinx下载方式(具体可以参考配置MCS文件时右下角help调出的doc)
- flink更新flink-shaded-hadoop-3-uber
- python函数里面,一个*是可变参数的元祖,两个*是可变参数的字典
- 动态IL织入框架Harmony简单入手
- 【模板】线段树区间修改
- 本周开源论文推荐:含人脸识别、实例分割、跟踪、SR等
- P0INP = 0Xfd;P1DIR |= 0X01;
- ★一张图弄明白从零维到十维
- 蓝桥杯c语言试题(3)
- 11.6 通信实例与ASCII码
- 怎样将图片制作转换圆形图片
- 系统启动过程(基于三星s5p6818 uboot)
- 阿里云跨账号迁移云服务器实例
- QQ浏览器登陆微信后,下载接收的文件保存在了哪里
- 区块如何防篡改_区块链为什么能防篡改?
热门文章
- 云南省计算机云教室,“云教室”落户云南祥云这个小山村
- MMORPG摄像机操作
- 产品商业需求文档_【器】我的产品需求文档心法
- 微信怎么加入黑名单?微信黑名单怎么恢复好友
- android版本8.1.0和9的区别,安卓8.1和9.0的区别是什么
- AD中使用Net Label时,编译时为什么总是Floating。出现的原因。
- 姿态估计1-04:FSA-Net(头部姿态估算)-白话给你讲论文-翻译无死角(2)
- 基于Python 实现 Spirent TestCenter 自动化
- 手把手教你运用JAVA爬虫技术爬取小说
- 入坑张银奎老师研发的GDK7