stm32用杜邦线与中断模拟led灯开关
文章目录
- 实验目的
- 实验材料
- 硬件连接
- HAL库项目创建
- 1、配置GPIO口
- 2、生成项目
- 3、代码编写
- 代码解释
- 1、HAL_GPIO_ReadPin(GPIOX,GPIO_PIN)
- 2、HAL_GPIO_WritePin(GPIOX,GPIO_PIN,status)
- 实验现象
- 参考资料
实验目的
保持LED灯阳极高电平输入,使用一个GPIO口作为外部中断源,当这个GPIO口产生上升/下降沿的时候触发中断,改变LED灯阴极状态,以控制LED灯的亮灭。
实验材料
- STM32F103C8T6最小开发板
- 面包板一块
- 杜邦线若干
- LED灯一个
- CH340模块一个
硬件连接
这里我使用PB5作为外部中断源,PA5作为LED灯的阴极。
当PB5由低电平接入高电平(上升沿),PA5输出低电平,LED灯亮;当PB5由高电平接入低电平时,PA5输出高电平,LED熄灭。
CH340的RXD,TXD分别与PA9,PA10连接。
面包板的正极负极分别接入3.3V,0V。
如图所示:
HAL库项目创建
1、配置GPIO口
在创建了一个基于STM32F103C8T6的项目模板后,点击SystemCore中的GPIO。
在引脚图中,点击PB5,设置为EXTI。点击后在出现的NVIC中勾选Enable使能。
然后点击GPIO下的PB5,选择GPIO mode为在上升沿和下降沿时都触发。
再在引脚图中点击PA5,选择作为GPIO Output,然后保持默认参数不变(推挽输出模式)。
2、生成项目
在设置好项目名称与路径,并选择MDK为你的IDE后,在Code Generator中勾选这一项。
然后点击右上角创建项目。
3、代码编写
在生成的项目中,stm32f1xx_it.c文件用于保存中断函数。
我们进入这个文件,找到触发的中断函数。
我们先编译一遍项目,再点击中间调用的函数名,按F12进入定义。
在这个函数中,又调用了两个函数。
上面那个函数是一个宏定义,不用管它,我们再用同样的方式进入下面那个函数的定义:
这个函数使用_weak标识。
_weak标识符所标识的函数表示当用户定义了一个同名函数的时候就使用用户定义的函数,否则再使用这里被weak修饰的函数。
这个函数里面,hal库还打了一段注释:这个文件不能被修改,你要在自己的文件里面定义一个同名函数。因此,我们转到自己的文件stm32ffxx_it.c中定义一个同名函数,将我们在触发中断后要执行的操作(开灯关灯)写在这个函数里面。
这样触发中断后,就会执行我们想要执行的代码了
代码解释
这个函数传入的参数GPIO_Pin,根据上一层代码,得知传进来的值是GPIO_PIN_5。
我们这个实验的原理是:当PB5产生上升沿(此时读取PB5,它是高电平)的时候,将LED的阴极PA5接低电平来点亮LED;当PB5产生下降沿(此时读取PB5,它是低电平)的时候,将LED的阴极PA5接高电平来熄灭LED。
因此这里要用到几个HAL库的库函数:
1、HAL_GPIO_ReadPin(GPIOX,GPIO_PIN)
传入GPIO的组号与组内编号,获取它的当前状态。返回值可以是GPIO_PIN_SET(高电平)或者GPIO_PIN_RESET(低电平)
2、HAL_GPIO_WritePin(GPIOX,GPIO_PIN,status)
传入GPIO的组号与组内编号,以及想要输出的电平高低,使对应的GPIO引脚输出对应的电平。
首先我们读取外部中断源PB5的电平状态,根据不同的状态,将PA5输出不同的电平,以控制LED灯的亮灭。
实验现象
当PB5杜邦线接入高电平,LED灯明显发亮;当PB5杜邦线接入低电平,LED灯熄灭。
由于接触不良的原因,杜邦线接空气的时候会频繁变化输入电平,使得LED灯频闪,接入高低电平时,频闪消失。
参考资料
https://blog.csdn.net/qq_47281915/article/details/121024427
stm32用杜邦线与中断模拟led灯开关相关推荐
- 用stm32F103核心板的GPIOA端一管脚接一个LED,GPIOB端口一引脚接一个开关(用杜邦线模拟代替)。采用中断模式编程,当开关接高电平时,LED亮灯;接低电平时,LED灭灯。
一.通过STMcube创建项目 1.配置引脚 2.配置exit 3.配置sys 4.配置gpio 5.创建项目生成代码 点击右上角GENERAT CODE 二.通过keil5编辑并修改部分代码 在打开 ...
- STM32利用中断实现LED亮灭和串口通信的收发
HAL库的中断函数学习 一.题目要求 二.实现LED亮灭 01 CubeMx配置 02 Keil配置 03 实例演示 三.串口中断通信 01 CubeMx配置 02 Keil配置 03 实例演示 四. ...
- [stm32] Start Tour-利用外部中断控制LED亮灭
如果觉得不错就点个赞吧~ 目录 一 元件相关 二 面包板上的连线 三 具体代码 传感器驱动代码(跟独立按键那个差不多) 中断函数代码(外部中断) main.c 四 最终效果 效果图: 一 元件相 ...
- 【STM32】1—零基础硬件软件配置 完成LED的闪烁
本文涉及的相关硬件:STM32F407VET6.DAPLINK; 本文涉及的相关软件:Keil uVision5.STM32CubeMX 本文章基于以下两篇博文进行理解学习记录: [STM32Cube ...
- STM32系统学习——EXTI(外部中断)
一. EXTI 简介 EXTI(External interrupt/event controller)-外部中断/事件控制器,管理了控制器的 20个中断/事件线.每个中断/事件线都对应有一个边沿检测 ...
- STM32那点事(3)_中断(下)
上节主要讲述了STM32 的中断基础知识以及一般配置过程.外部中断与其他模块中断相对要复杂一点.外部中断一般都是由GPIO触发,是在整个系统中需要经常用到. 介绍 STM32F4 有多达23个中断,每 ...
- STM32控制步进电机:基于定时器中断的ULN2003驱动器/步进电机驱动程序
STM32控制步进电机:基于定时器中断的ULN2003驱动器/步进电机驱动程序 一.ULN2003驱动器 1.工作原理 2.步距角以及一圈所需步数的计算 二.硬件连接 三.STM32F103定时器中断 ...
- 美通企业日报 | 陶氏杜邦完成对新陶氏的分拆;英特尔1.17亿美元投资14家创新公司...
要闻 费列罗将收购家乐氏饼干和水果小吃业务 2018年度亚太区最佳机场贵宾室公布 百乐达斯城全新梦幻主题乐园幻乐堡在韩国开业 陶氏杜邦完成对新陶氏的分拆 英特尔1.17亿美元投资14家创新公司,包括2 ...
- 杜邦先锋对话国际农民丰收节贸易会 从玉米大王到全球种业
杜邦先锋对话国际农民丰收节贸易会 从玉米大王到全球种业 (文 | 长江农业)新闻中国采编网 中国新闻采编网 谋定研究中国智库网 经信研究 国研智库 国情讲坛 哲商对话 万权采编:"杜邦先锋是 ...
- 【STM32】基于HAL库的中断详细学习
目录 1.中断概述 1.1中断相关概念 1.2 STM32中断系统 2 .HAL库的中断处理 2.1 HAL 库的中断封装 2.2 外部中断处理流程 3.外部中断的HAL库定义 3.1. 外部中断的数 ...
最新文章
- android ui布局开发,Android UI设计初步(基本布局)
- Matlab GUI 如何自动缩放
- 简单Access Violation的异常派发,Vista/Longhorn Server
- 【模型开发】构建风控评分卡模型介绍(WOE/KS/ROC)
- 推荐SpringBoot互联网企业级别的开源支付系统
- Java多线程:示例代码
- 第4章 Python 数字图像处理(DIP) - 频率域滤波1 - 傅里叶级数和变换简史
- 动态修改网页title
- c语言程序设计平时作业代刷,C语言程序设计——小学生口算刷题系统
- 单变量和多变量财务预警模型_SPSS数据分析,基于判别分析上市公司财务危机预警分析...
- 定了!这些高校已公布开学时间
- sklearn库里几种回归模型
- 第一届对象存储技术及应用大会:Esri中国周宁——万物互联时代,云存储技术的变革与展望...
- 微信公众号 开发详解05【二维码制作、调查表单、短网址、微小宝、引流】
- c语言程序设计ppt算法,C语言程序设计算法.ppt
- 华为手机双击确认怎么取消_华为双击屏幕放大怎么取消
- 安装和使用Linux花生壳(公网版)
- Microsoft Word 教程「7」,如何在 Word 中显示标尺?
- 谷歌AIY项目深度揭秘:语音识别与视觉识别及神经网络AI工具!
- java转义字符包括元字符_语言的转义字符及正则表达式的转义字符的表示
热门文章
- c语言中pinMode的作用,Arduino编程基础与常用函数(详细)解析
- 初探一个0代码开发—iVX平台
- Java 给PPT添加动画效果(预设动画/自定义动画)
- 笔记本电脑没有外放声音,但是插上耳机有声音的问题解决方法
- UE4全套自学视频教程
- Ubuntu18.04创建快捷方式
- 解决outlook 中邮件中,点击链接提示(您的组织策略阻止我们为您完成此操作)解决方案
- python二元一次方程组用鸡兔同笼的思路来写编程_3应用二元一次方程组——鸡兔同笼教学设计...
- 一个老乞丐一句话震惊中国人...............
- windows下如何创建bat文件