嵌入式技术及应用(STM32CubeMX版)课件 任务5 显示按键的状态_第1页
嵌入式技术及应用(STM32CubeMX版)课件 任务5 显示按键的状态_第2页
嵌入式技术及应用(STM32CubeMX版)课件 任务5 显示按键的状态_第3页
嵌入式技术及应用(STM32CubeMX版)课件 任务5 显示按键的状态_第4页
嵌入式技术及应用(STM32CubeMX版)课件 任务5 显示按键的状态_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

任务5显示按键的状态任务要求STM32的PC13、PD13引脚上接有2只按键电路,PC13脚接按键K1,PD13脚接按键K2,PE0~PE7引脚上接有8只发光二极管控制电路,发光二极管采有低电平有效控制,要求用STM32CubeMX生成初始化程序,然后在Keil中编程实现以下功能:(1)上电后,所有发光二极管熄灭。(2)用接在PE0、PE1引脚上的发光二极管LED1和LED2显示K1、K2的状态,K1按下时LED1点亮,否则LED1熄灭,K2按下时LED2点亮,否则LED2熄灭。知识储备

1.GPIO口输入特性GPIO口一位引脚的结构图如图所示。图中上面部分是数据输入。数据输入有3种:

一是模拟输入,

二是复用功能输入,

三是来自输入数据寄存器的输入。这三种输入均来自于输入驱动器,但只有来自输入数据寄存器的输入才是GPIO输入。GPIO口一位引脚的结构图1.GPIO口输入特性

在输入驱动器中,输入端有2个电阻分别通过2个电子开关接电源和接地,GPIO输入可以配置成上拉、下拉或浮空(既无上拉电阻也无下拉电阻)三种输入。输入驱动器有一个肖特基触发器,用来对信号进行整形,使触发器输出数字信号0或1。GPIO口一位引脚的结构图1.GPIO口输入特性

输入数据寄存器所输入信号为数字信号0或1,当I/O引脚上的信号发生变化时,内部电路会把经肖特基触发器整形后的数字信号存入输入数据寄存器,用户可以通过读取输入数据寄存器的值来获取GPIO口的状态。模拟量输入是未经触发器整形的模拟信号,它直接来自于I/O引脚,其他输入都是经整形后的数字信号。GPIO口一位引脚的结构图2.GPIO口的输入函数函数的用法HAL_GPIO_ReadPin()原型GPIO_PinStateHAL_GPIO_ReadPin(GPIO_TypeDef*GPIOx,uint16_tGPIO_Pin);功能读取输入引脚的电平的状态。参数1GPIOx:引脚所在的端口,取值为GPIOA~GPIOH。参数2GPIO_Pin:引脚编号。取值为GPIO_PIN_0~GPIO_PIN_15。GPIO_PIN_i代表的是第i位为1其他位为0的二进制数,可以用1<<i表示。返回值指定引脚的电平状态,其值为枚举值GPIO_PIN_RESET(0)或者GPIO_PIN_SET(1)。【举例】设PC13引脚的输入脚,读取PC13引脚的状态将保存至key变量中的程序如下:key=HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13);3.GPIO口的并行输入

GPIO口的并行输入的方法是,直接读取输入数据寄存器IDR的值。在HAL库中,Px口(x为A~G,下同)的输入数据寄存器IDR表示为GPIOx->IDR,IDR寄存器是32位寄存器,但其高16位无效,低16位用来保存Px口的16个引脚的输入状态,IDR寄存器的第i位对应Px口的第i个引脚。例如,读PA0~PA7引脚的状态至无符号字符型变量m中的程序段如下:uint8_tm;//定义无符号字符型变量m,用于保存所读得的8位引脚的状态m=GPIOA->IDR;//读IDR寄存器的值,并将其低8位赋给m程序中,GPIOA->IDR是一个16位的数,而m是一个8位的变量,所以,程序执行后,m中的数为PA0~PA7引脚的状态。再如,将PC8~PC15引脚的状态读至无符号字符型变量m中的程序段如下:uint8_tm;//定义无符号字符型变量m,用于保存所读得的8位引脚的状态m=GPIOC->IDR>>8;//读IDR寄存器的值,并将其高8位赋给m4.按键电路

用PC13脚控制一只按键的电路如图所示。图中,K1为按键,R1为上拉电阻,它与K1一起将按键按下与释放的机械动作转换成单片机可识别的高低电平。K1按下,A点接地,PC13引脚输入为低电平;K1释放,A点经R1接VCC,为高电平,PC13引脚输入为高电平。如果去掉R1,则在K1释放时,A点的电平状态是不确定的。按键的电路4.按键电路

C1为去抖动滤波电容。在一次按键操作中,由于按键的机械特性的原因,键按下或释放都有一个弹跳的抖动过程,抖动波形图如下图所示。抖动时间的长短与按键的机械特性有关,一般为5~15ms。按键抖动必须消除,否则会引起按键识别错误。按键的两端并上一个小电容,利用电容的滤波特性可以滤除抖动的干扰波。按键的电路抖动波形图实现方法与步骤任务5的硬件电路:

1.搭建电路2.生成GPIO口的初始化代码步骤任务5中所使用的STM32硬件资源多了PC13和PD13两个输入脚,可以适当地修改任务4的STM32CubeMX工程来建立任务5的STM32CubeMX工程。任务5中生成GPIO口初始化程序的实现方法如下:(1)打开“D:\ex”文件夹,然后复制Task4文件夹及其子文件夹的内容,再将复制后的文件夹(Task4-副本)改名为Task5。(2)打开“D:\ex\Task5”文件夹,删除文件夹中除Task4.ioc文件以外的所有文件及文件夹,然后将Task4.ioc文件改名为Task5.ioc。(3)双击Task5.ioc文件图标,打开任务5的STM32CubeMX工程文件。

2.生成GPIO口的初始化代码(4)在STM32CubeMX工程中配置PC13、PD13引脚。步骤如下:第1步:在引脚视图中点击PC13引脚,然后在弹出的菜单中点击“GPIO_Input”菜单项,将PC13设置成输入脚,如图所示。第2步:重复第1步将PD13脚也设置成输入脚。

设置PC13引脚2.生成GPIO口的初始化代码第3步:在工程窗口中点击左边窗口中的“SystemCore”→“GPIO”列表项,使工程窗口的中间出现“GPIOModeandConfiguration”窗口,如右图所示。第4步:在右图所示的配置GPIO口窗口中单击GPIO配置列表框中的PC13列表项,列表框的下面就会出现“PC13-TAMPER-RTCConfiguration”配置框架。配置GPIO口2.生成GPIO口的初始化代码第5步:在配置框架的“GPIOmode”下拉列表框中选择“inputmode”模式,在“GPIOPull-up/Pull-down”下拉列表框中选择“Pull-up”列表项,再在“UserLabel”文本框中输入用户标签K1。第6步:重复第5步,将PD13设置为上拉输入模式,用户标签为K2。(5)保存工程,然后生成Keil工程代码。配置GPIO口3.编写显示按键状态程序任务5中显示按键状态的程序,其代码详见链接。按照程序编写规范将上述程序代码填写至main.c文件的对应位置处,即得到显示按键状态的程序,其实现步骤如下:(1)打开Keil工程,打开main.c文件。(2)在main.c文件的“USERCODEBEGINWHILE”与“USERCODEENDWHILE”间(while代码区中)添加第6行~第21行的代码。(3)点击图标工具栏上的保存文件图标按钮“”,保存main.c文件。4.调试与下载程序任务5中我们用仿真器下载程序,其方法如下:第1步:按照前面介绍的方法配置好调试器,并编译连接程序,并对程序调试排错,直至程序正确为止。第2步:连接仿真器并给开发板上电。第3步:将开发板上的程序运行模式开关拔至“接地”位置,也就是让STM32从FLASH存储器中启动程序。4.调试与下载程序第4步:在Keil窗口中点击图标工具栏上的下载程序图标按钮“”,如右图所示,Keil就通过仿真器将连接后所生成的程序文件下载到STM32中。第5步:按开发板上的复位键,STM32开始执行所下载的程序。此时我们可以看到,按下K1键,LED1就点亮,释放K1键,LED1就熄灭;按下K2键,LED2就点亮,释放K2键,LED2就熄灭。下载程序实践总结与拓展

GPIO口的引脚可作模拟输入脚、复用功能输入脚和GPIO口的输入脚。其中,模拟输入是未经整形的模拟信号,而其他输入都是经过整形后的数字信号。GPIO口的输入有上拉输入、下拉输入和浮空输入3种方式,在HAL库中,读GPIO口输入的函数是HAL_GPIO_ReadPin(),该函数只能读取一位引脚的输入,若要实现并行输入,则需读取GPIO口的输入数据寄存器IDR。按键的常用接口电路是,按键的一端接地,另一端接上拉电阻,同时接单片机的I/O口,

温馨提示

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

评论

0/150

提交评论