前言

  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系列的GPIO基本功能之输出驱动LED灯、输入按键KEY以及Demo的更多相关文章

  1. STM32学习笔记(三) STM32的GPIO的深入学习

    STM32的开发学习主要涉及软硬件两个部分的实现,包含众多外设和总线的理解配置.STM32的整个学习曲线并不陡峭,但入门却相当困难,因此在学习之初,多动手实验和测试相当重要,GPIO作为整个STM32 ...

  2. stm32开发笔记(二):stm32系列使用V3.5固件库的帮助文件以及GPIO基本功能(一)

    前言   stm32系列是最常用的单片机之一,不同的版本对应除了引脚.外设.频率.容量等'不同之外,其开发的方法是一样的.  本章讲解使用库函数使用GPIO引脚功能.   补充   本文章为多年前学习 ...

  3. Django开发笔记三

    Django开发笔记一 Django开发笔记二 Django开发笔记三 Django开发笔记四 Django开发笔记五 Django开发笔记六 1.基于类的方式重写登录:views.py: from ...

  4. 灵动微电子ARM Cortex M0 MM32F0010 GPIO 的配置驱动LED灯

    灵动微电子ARM Cortex M0 MM32F0010 GPIO的配置 目录: 1.前言 2.学习方法简要说明 3.要点提示 4.注意事项 5.MM32F0010系统时钟的配置 6.MM32F001 ...

  5. MM32F0020 GPIO驱动LED灯(MM32F0020 GPIO Toggle)

    目录: 1.MM32F0020简介 2.MM32F0020系统时钟配置 3.MM32F0020的GPIO外设配置及其初始化 4.使用官网的Systick定时器做延时 5.MM32F0020 GPIO驱 ...

  6. MM32F0140 GPIO驱动LED灯(MM32F0140 GPIO)

    目录: 1.MM32F0140简介 2.MM32F0140系统时钟配置 3.MM32F0140的GPIO外设配置及其初始化 4.使用官网的Systick定时器做延时 5.MM32F0140 GPIO驱 ...

  7. STM32学习笔记:【003】GPIO

    版本:STM32F429 Hal库v1.10 在STM32中,最常用到的功能莫过于GPIO(General Purpose Input Output .通用输入/输出)了,在STM32中,除了除去AD ...

  8. STM32F412应用开发笔记之二:基本GPIO控制

    NUCLEO-F412ZG板子上的元器件并没有完全焊接,除去ST-LINK部分和电源部分后,还有用一个USB主机接口,三个LED灯和两个按钮,不过很多功能引脚都已经引到了插针.查看原理图可发现,由原理 ...

  9. 嵌入式学习笔记(综合提高篇 第一章) -- 利用串口点亮/关闭LED灯

    1      前言 从踏入嵌入式行业到现在已经过去了4年多,参与开发过的产品不少,有交换机.光端机以及光纤收发器,停车场出入缴费系统,二维码扫码枪,智能指纹锁以及数字IC芯片开发等; 涉及产品中中既有 ...

随机推荐

  1. [Azure Devops] 使用 Azure Repos 管理代码

    1. 什么是 Azure Repos Azure Repos 是一组版本控制工具,可用于管理代码.无论您的软件项目是大型项目还是小型项目,都应尽快使用版本控制. 版本控制系统是可帮助您跟踪随时间变化对 ...

  2. .Net5 WPF快速入门系列教程

    一.概要 在工作中大家会遇到需要学习新的技术或者临时被抽调到新的项目当中进行开发.通常这样的情况比较紧急没有那么多的时间去看书学习.所以这里向wpf技术栈的开发者分享一套wpf教程,基于.net5框架 ...

  3. DSP代码搬运至RAM运行

    程序运行过程中,有些函数或程序段和数据等经常调用,正常情况下在FLASH中运行处理消耗时间和资源较大,通常将其移植至RAM中运行,可提高运行效率. 如: 1 #pragma CODE_SECTION( ...

  4. Recoil 中默认值的正确处理

    继续使用 Recoil 默认值及数据级联的使用 的地域可用区级联的例子. 地域变更后可用区随之联动,两个下拉框皆默认选中第一个可选项. 从 URL 获取默认值 考虑这种情况,当 URL 中带了 que ...

  5. 研发效率破局之道 Facebook工作法

    如果你问中国和美国互联网公司都有什么差别,很多人会回答:低效加班文化.最近爆出的996大讨论,通过糙快猛打拼和996加班去抢占市场获得机会的成功案例越来越少.至此,只有提高效能才是出路. 由于软件开发 ...

  6. SQL Server如何将查询的内容保存到新的sql 表中

    我是采用语句将 查询后的数据保存到一个新表中 1)采用into table 语句,需要保存到的这个新表不需要提前创建 select *into NewTable from Table --插入新表的语 ...

  7. 用递归求n皇后问题

    此问题是指在n*n的国际象棋棋盘上 ,放置n个皇后,使得这n个皇后均不在,同一行,同一列,同一对角线上,求出合法的方案的数目. 本题可以简单转化为就是求n的全排列中的数放在棋盘上使得这几组数,符合均不 ...

  8. 击鼓传花联想到了Java设计模式:责任链模式

    目录 应用场景 简单示例 责任链模式 定义 意图 主要解决问题 何时使用 优缺点 击鼓传花的故事 应用场景 http web请求处理,请求过来后将经过转码.解析.参数封装.鉴权等一系列的处理(责任), ...

  9. 横趟!面试中遇到的 ZooKeeper 问题

    本文作者:HelloGitHub-老荀 本文是 HelloZooKeeper 系列的最后一篇文章,接下来主要聊聊面试中如果被问到 ZooKeeper 的问题如何回答,也可以当作学完本系列的测试. 准备 ...

  10. 面试系列<5>——面向对象

    面试系列--面向对象思想 一.三大特性 封装 利用抽象数据类型将数据和基于数据的操作封装在一起,使其成为一个不可分割的独立实体.数据被保护在抽象数据类型内部,尽可能地隐藏内部细节,只保留一些对外的接口 ...