15.2、 按键检测_第1页
15.2、 按键检测_第2页
15.2、 按键检测_第3页
15.2、 按键检测_第4页
15.2、 按键检测_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

按键检测实验按键检测实验 前面我们介绍了STM32的IO口作为输出功能使用,这一节,我们将向大家介绍如何使 用STM32的IO口作为输入功能,我们以按键的输入为例讲解,通过本节的学习,你将了解 到STM32的IO口作为输入使用的方法。本节分为如下几个小节: 1 KEY_LED按键与315M无线模块实验的意义与作用 2 实验原理 3 硬件设计 4 软件设计 5 下载与验证 6 实验现象 ? 意义与作用意义与作用 STM32的IO口在前面的流水灯实验中已经有了详细的介绍,这里我们细讲,这一节我 们讲结合STM32的库,描述如何设置STM32 的GPIO口作为输入使用。 这一节,我们将通过神舟 IV 号板载有的 4 个按键(KEY1、KEY 2、KEY 3/ TAMPER、 KEY 4/ WAKEUP) ,来控制板上的 4 个 LED(LED14) ,按下任一个按钮,对应的 LED14 点亮。 ? 实验原理实验原理 这个例程的实验原理主要包括两个:一、通过神舟IV号开发板上的4个按钮(KEY1、 KEY2、KEY3/ TAMPER、KEY4/ WAKEUP),控制4个LED灯的点亮和关闭状态。 具体的对应关系如下: 现象 操作 LED1亮其它LED灭 神舟IV号板载KEY1按键被按下 LED2亮其它LED灭 神舟IV号板载KEY2按键被按下 LED3亮其它LED灭 神舟IV号板载KEY3/TAMPER按键被按 下 LED4亮其它LED灭 神舟IV号板载KEY4/WAKEUP按键被按 下 ? 硬件设计硬件设计 该实验需要使用到神舟IV号开发板上的LED灯,按键,相关硬件电路如下: 图表 1 LED 指示灯电路 神舟IV号STM32开发板总共有4个功能按键, 分别是WAKEUP按键和TAMPER按键及两个用于 自定义功能按键,在不使用第二功能的情况下,这四个按键都可以作为通用的按键,由用户 自定义其功能。这四个按键分别与PC4、PB10、PC13和PA0四个GPIO管脚连接,当按键按 下时,对应的GPIO管脚为低电平,反之,当没有按键按下时,对应的GPIO管脚为高电平。 其中PA0 (STM32的WKUP引脚)可以作为WK_UP功能,它除了可以用作普通输入按键外, 还可以用作STM32的唤醒输入。PC13可以实现备份区寄存器的入侵功能。本实验中所有的 按键均作为普通IO使用。 图表 2 按键输入电路 GPIO 管脚与对应的 LED 灯关系如下: LED灯 LED灯对应的GPIO LED1 PD2 LED2 PD3 LED3 PD4 LED4 PD7 GPIO 管脚与按键对应关系 按键 按键对应的GPIO KEY1 PC4 KEY2 PB10 KEY3/TAMPER PC13 KEY4/WAKEUP PA0 ? 软件设计软件设计 在分析例程的代码之前,我们想回顾一下关于 STM32 GPIO 的使用。 STM32 GPIO 的使用与配置 STM32 的 IO 口可以由软件配置成 8 种模式: ? 模拟输入 ? 输入浮空 ? 输入下拉 ? 输入上拉 ? 开漏输出 ? 推挽输出 ? 复用功能开漏输出 ? 复用功能推挽输出 对应到STM32库文件中的定义如下 在我们使用一个GPIO之前, 我们需要对GPIO管脚的时钟和GPIO管脚模式以及速率进行 设定STM32的GPIO端口在作为输出时,可以软件配置端口最大支持的时钟速率,有以下几 种: ? 输出模式,最大时钟速率10MHz ? 输出模式,最大时钟速率2MHz ? 输出模式,最大时钟速率50MHz 对应到STM32库中的定义如下: 速率主要针对GPIO作为输出时使用,作为输入时可以不关注。 在神 舟IV号 光 盘编 译 好 的 固 件2、KEY_LED按 键 扫 描目 录 下 的 EWARMv5 STM32F107VC-ARMJISHUExe ARMJISHU_KEY_LED按键扫描.hex文件即为前面我们分 析的按键实验编译好的固件, 我们可以直接通过JLINK V8将固件下载到神舟IV号开发板中, 观察运行效果。 神舟IV号的“按键扫描实验”位于神舟IV号光盘编译好的固件2、KEY_LED按键扫描 目录中。双击Project.eww可以打开IAR工程,以下为工程文件中主要代码的解释与说明。 为程序便于大家修改和移植为程序便于大家修改和移植,此处使用宏定义来定义指示灯的管脚等: 下面的LED_config函数是初始化神舟IV号STM32开发板的4个LED灯对应的GPIO端口初 始化的子函数。 关于LED的其它函数请查看“LED跑马灯实验”,此处主要介绍按键相关程序。 为程序便于大家修改和移植为程序便于大家修改和移植,此处使用宏定义来定义按键对应的管脚: 键值定义如下: 神舟IV号按键使用的GPIO的接口接口初始化,由于按键按下时会使相应的GPIO口变为 低电平,因此,我们在硬件上加了上拉电阻,这样我们配置按键使用的GPIO为悬空输入模 式(GPIO_Mode_IN_FLOATING)。然而在外部没有上啦电阻的情况下,也可以使用芯片 内部的上拉电阻,这时我们需要配置按键使用的GPIO为输入上拉模式(GPIO_Mode_IPU)。 为了不失一般性在这里我们配置按键使用的GPIO为输入上拉模式。没有收到有效信号,保 持这些GPIO口为高电平。 按键检测函数,当有按键按下时,按键检测函数返回对应的键值。 关于LED灯的初始化和控制,在此就不再重复,可以查看流水灯实验,了解LED的控制 和使用。在完成了相关初始化以后,我们再来分析一下主程序。 主程序不断的执行 ReadKeyDown 与 Led_Turn_On 函数,当程序检测到有按键按下时, 点亮对应的 LED 灯,当没有检测到是,KeyNum 等于 0,此时 Led_Turn_On 控制点亮所有 的 LED 灯。 ? 下载与验证下载与验证 神舟IV号光盘源码目录包含本实验的工程源码,在神舟IV号光盘源码 02、KEY_LED 按键扫描.rarProject2、KEY_LED按键扫描EWARMv5STM32F107VC-ARM JISHUExe目录下的ARMJISHU_KEY_LED按键扫描.hex文件即为前面我们分析的按键实验 编译好的固件,我们可以直接通过JLINK V8将固件下载到神舟IV号开发板中,观察运行效 果。 如果使用JLINK下载固件,请按错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。下载固件 到神舟IV号开发板小节进行操作。 如果使用USB下载固件,请按错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。小节进行操 作。 如果使用串口下载固件,请按错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。错误!未找到引用源。小节进行 操作。 如果在IAR开发环境中, 下载编译好的固件或者在线调试, 请按错误! 未找到引用源。错误! 未找到引用源。 错误!未找到引用源。错误!未找到引用源。小节进行操作。 如果在MDK开发环境中,下载编译好的固件或者在线调试,请按错误!未找到引用源。错误!未找到引用源。 错误!未找到引用源。错误!未找到引用源。小节进行操作。 ? 实验现象实验现象 上电运行。在没有按键按下时,所有的LED灯都亮,有按键按下,相关的LED灯会随之 发生变化,具体实现现象

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论