stm32开发笔记(三):stm32系列的GPIO基本功能之输出驱动LED灯、输入按键KEY以及Demo

简介: 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按键也正常。

相关文章
|
3月前
|
存储
STM32F103标准外设库——GPIO 输入、输出 (五)
STM32F103标准外设库——GPIO 输入、输出 (五)
81 0
STM32F103标准外设库——GPIO 输入、输出 (五)
|
7月前
STM32速成笔记(三)—按键检测
本文介绍了如何利用STM32进行按键检测,先介绍了原理,后面给出了配置步骤和应用例程。此外,本文还叙述了如何利用一个按键单独控制一个LED亮灭,以及如何检测按键长短按。
229 0
STM32速成笔记(三)—按键检测
|
4月前
|
缓存 编译器 程序员
嵌入式开发环境Vscode开发STM32单片机程序
嵌入式开发环境Vscode开发STM32单片机程序
60 0
|
4月前
|
芯片
STM32 GPIO工作原理详解
STM32 GPIO工作原理详解
|
4月前
|
数据安全/隐私保护 芯片
【STM32基础 CubeMX】按键的检测
【STM32基础 CubeMX】按键的检测
|
7月前
|
存储 物联网 芯片
STM32速成笔记(十四)—串口IAP
本文介绍了什么是IAP,IAP有什么作用,如何实现IAP。最后,给出了IAP的实现程序。
122 0
STM32速成笔记(十四)—串口IAP
|
7月前
|
芯片 内存技术
STM32速成笔记(十三)—低功耗模式
本文介绍了三种STM32低功耗模式的进入和退出方法,针对待机唤醒给出了程序设计。
147 0
STM32速成笔记(十三)—低功耗模式
|
7月前
|
存储 芯片 内存技术
STM32速成笔记(十二)—Flash闪存
本文简单介绍了什么是Flash。针对STM32F1的Flash做了详细介绍,介绍了操作Flash的步骤,并且给出了程序设计。最后,介绍了一些注意事项。
48 0
STM32速成笔记(十二)—Flash闪存
|
7月前
|
存储 芯片
STM32速成笔记(十一)—EEPROM(AT24C02)
本文详细介绍了什么是AT24C02,介绍了它的引脚,读/写时序,给出了应用实例和详细的程序设计。最后,简单介绍了AT24C02的应用场景。
165 0
STM32速成笔记(十一)—EEPROM(AT24C02)
|
7月前
STM32速成笔记(十)—IWDG
本文详细介绍了什么是IWDG,STM32的IWDG特性,框图和配置步骤。此外,给出了STM32的IWDG配置程序。通过一个简单的应用实例,展示了IWDG的配置和使用方法。
69 0
STM32速成笔记(十)—IWDG