stm32开发笔记(三):stm32系列的GPIO基本功能之输出驱动LED灯、输入按键KEY以及Demo
前言
stm32系列是最常用的单片机之一,不同的版本对应除了引脚、外设、频率、容量等’不同之外,其开发的方法是一样的。
本章讲解使用GPIO引脚功能驱动LED灯和接收Key按钮输入。
STM32系列GPIO驱动LED灯
先来笔者根据自己使用的开发板的电路来使用GPIO进行LED操作,下图是笔者使用的开发板LED灯的电路图:
引脚PD6接LED1,PD12接LED2,PD13接LED3,电阻是限流电阻(计算方式高电平减去LED1的压降,然后除以LED能流过的电流)。
复制模版文件,更改名字为LEDtest1,启动软件Keil4,打开改名后的工程LEDtest1。
在工程目录下新建文件夹Dev,在Dev下新建文件夹LED,在LED下新建led.c和led.h文件,然后将路径以及文件部署进去:
部署成功后,我们工程如下:
然后开始编写程序,mian.c,led.c, led.h,编写好后的程序内容如下:
程序主要逻辑如下:打开LED1,延迟,打开LED2,延迟,打开LED3,延迟,关闭LED1 LED2 LED3,延迟,回头循环开始。
LED的工程代码在CSDN下载
CSDN下载地址:https://download.csdn.net/detail/qq21497936/7998805
QQ群免费下载:1047134658(点击“文件”搜索“LEDtest1”,群内与博文同步更新)
STM32系列GPIO检测按键KEY
现在我们来使用GPIO进行按键操作,按键最为常用的输入,大多数以及笔者接触到的经验人士都是建议笔者采用轮询(查询)方式。下图是笔者开发板的按键部分的电路图:
从电路图分析PE0,PE1,PE2,PE3,PE4这5个引脚未按键时是带有上拉电阻的高电平,按键时有2个10K的电阻进行分压,为1.65V查看芯片电平的电气特性,你会发现低于高电平最低的电压,输入尽管有电压但仍然是低电平,PC13则只有上拉电阻,至于为什么会这样笔者暂时也不太清楚,那么我们复制LEDtest1的工程,改名为KEYtest1,然后继续开始按键编写,还是按照流程来,在Dev文件夹下建立KEY文件夹,在KEY文件夹下建立key.h,key.c两个文件都部署进工程,路径包括进去。
我们继续来使用帮助文档进行参考,版本是V3.5(若未指明V3.4则是V3.5,建议使用文档的时候两个版本的都备好),打开下面这个源文件
我们想象一下,与LEDtest1的GPIO配置为输出,那么按键要配置成输入,配置成什么输入呢(大家可以参考八种IO模式),这里我们为初学者考虑,尽量只依靠帮助文档,所以我们继续使用帮助文档来编写,配置成输入也有一个初始化,于是在源代码中我们查找,看下图
00067行是对按钮进行初始化,我们点击这个函数跳转到源代码
再点击255查看源代码
00257大家都知道,00258则是配置中断的详细信息(怎么样才产生中断),00259则是将中断与中断向量联系起来(可以配置优先级和中断响应函数),我们不使用中断不管后面中断这两行,继续往下走
00265这是配置成浮空输入,我们想这应该是我们想要的(不管对错,暂时先这样),继续往下走
00316这个读输入数据的位,我们点开,以转到它的说明
这样我们知道它主要是用来判断哪个端口的哪个引脚现在的值,输入的值不是0就是1,可以写检测代码了,继续写代码,写完的代码如下:
调试运行成功。并且笔者在GPIO的模式上,配置了上拉,下拉,浮空输入,都运行正常,包括UESR按键也正常。
KEY的工程代码下载
CSDN下载地址:https://download.csdn.net/detail/qq21497936/7998809
QQ群免费下载:1047134658(点击“文件”搜索“KEYtest1”,群内与博文同步更新)
上一篇:《stm32开发笔记(二):stm32系列使用V3.5固件库的帮助文件以及GPIO基本功能》
下一篇:敬请期待…
stm32开发笔记(三):stm32系列的GPIO基本功能之输出驱动LED灯、输入按键KEY以及Demo的更多相关文章
- STM32学习笔记(三) STM32的GPIO的深入学习
STM32的开发学习主要涉及软硬件两个部分的实现,包含众多外设和总线的理解配置.STM32的整个学习曲线并不陡峭,但入门却相当困难,因此在学习之初,多动手实验和测试相当重要,GPIO作为整个STM32 ...
- stm32开发笔记(二):stm32系列使用V3.5固件库的帮助文件以及GPIO基本功能(一)
前言 stm32系列是最常用的单片机之一,不同的版本对应除了引脚.外设.频率.容量等'不同之外,其开发的方法是一样的. 本章讲解使用库函数使用GPIO引脚功能. 补充 本文章为多年前学习 ...
- Django开发笔记三
Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.基于类的方式重写登录:views.py: from ...
- 灵动微电子ARM Cortex M0 MM32F0010 GPIO 的配置驱动LED灯
灵动微电子ARM Cortex M0 MM32F0010 GPIO的配置 目录: 1.前言 2.学习方法简要说明 3.要点提示 4.注意事项 5.MM32F0010系统时钟的配置 6.MM32F001 ...
- MM32F0020 GPIO驱动LED灯(MM32F0020 GPIO Toggle)
目录: 1.MM32F0020简介 2.MM32F0020系统时钟配置 3.MM32F0020的GPIO外设配置及其初始化 4.使用官网的Systick定时器做延时 5.MM32F0020 GPIO驱 ...
- MM32F0140 GPIO驱动LED灯(MM32F0140 GPIO)
目录: 1.MM32F0140简介 2.MM32F0140系统时钟配置 3.MM32F0140的GPIO外设配置及其初始化 4.使用官网的Systick定时器做延时 5.MM32F0140 GPIO驱 ...
- STM32学习笔记:【003】GPIO
版本:STM32F429 Hal库v1.10 在STM32中,最常用到的功能莫过于GPIO(General Purpose Input Output .通用输入/输出)了,在STM32中,除了除去AD ...
- STM32F412应用开发笔记之二:基本GPIO控制
NUCLEO-F412ZG板子上的元器件并没有完全焊接,除去ST-LINK部分和电源部分后,还有用一个USB主机接口,三个LED灯和两个按钮,不过很多功能引脚都已经引到了插针.查看原理图可发现,由原理 ...
- 嵌入式学习笔记(综合提高篇 第一章) -- 利用串口点亮/关闭LED灯
1 前言 从踏入嵌入式行业到现在已经过去了4年多,参与开发过的产品不少,有交换机.光端机以及光纤收发器,停车场出入缴费系统,二维码扫码枪,智能指纹锁以及数字IC芯片开发等; 涉及产品中中既有 ...
随机推荐
- 使用C# (.NET Core) 实现单体设计模式 (Singleton Pattern)
本文的概念内容来自深入浅出设计模式一书 由于我在给公司做内培, 所以最近天天写设计模式的文章.... 单体模式 Singleton 单体模式的目标就是只创建一个实例. 实际中有很多种对象我们可能只需要 ...
- Android 之 ToolBar 踩坑笔记
写在前面 •前言 这两天,学完了 Fragment 的基础知识,正准备跟着<第一行代码>学习制作一个简易版的新闻应用: 嘀嘀嘀~~~ 一声消息传来,像往常一样,打开 QQ,当我看到 QQ ...
- Hashtable 渐渐被人们遗忘了,只有面试官还记得,感动
尽人事,听天命.博主东南大学硕士在读,热爱健身和篮球,乐于分享技术相关的所见所得,关注公众号 @ 飞天小牛肉,第一时间获取文章更新,成长的路上我们一起进步 本文已收录于 「CS-Wiki」Gitee ...
- day-02-循环
while 循环 why:大气循环, 吃饭,上课,睡觉,日复一日,歌曲列表循序环,程序中:输入用户名密码, what:while 无限循环. how: 基本结构: while 条件: 循环体 初识循环 ...
- CSS 常用样式 – 背景属性
一.背景颜色 background-color 属性名:background-color 作用:在盒子区域添加背景颜色的修饰 加载区域:在 border 及以内加载背景颜色 属性值:颜色名.颜色值 & ...
- 如何使用Excel发送邮件?
假设你有一个Excel,其中列出了所有收件人的信息,如下所示: 如果需要向列表中的每个用户发送一封邮件,最好使用当前记录生成一个附件,并且格式如下: 姓名, 发送消息 你应该怎么办?一个一个拷贝发送? ...
- OOJML系列总结
目录 0x0 JML理论相关 0.0 概念及作用 0.1 JML语法学习 0x1 使用openJml以及JMLUnitNG 1.0 使用openjml 1.1使用JMLUnitNG 0x2 作业架构设 ...
- 中小型前端团队代码规范工程化最佳实践 - ESLint
前言 There are a thousand Hamlets in a thousand people's eyes. 一千个程序员,就有一千种代码风格.在前端开发中,有几个至今还在争论的代码风格差 ...
- python中栈的实现
栈是一种线性数据结构,用先进后出或者是后进先出的方式存储数据,栈中数据的插入删除操作都是在栈顶端进行,常见栈的函数操作包括 empty() – 返回栈是否为空 – Time Complexity : ...
- Java刷题-stack
一.getMin栈 题目描述 实现一个特殊功能的栈,在实现栈的基本功能的基础上,再实现返回栈中最小元素的操作. 输入描述: 第一行输入一个整数N,表示对栈进行的操作总数. 下面N行每行输入一个字符串S ...