STM32按键输入实验.pdf

STM32按键输入实验.pdf

ID:47995203

大小:500.10 KB

页数:11页

时间:2020-01-11

STM32按键输入实验.pdf_第1页
STM32按键输入实验.pdf_第2页
STM32按键输入实验.pdf_第3页
STM32按键输入实验.pdf_第4页
STM32按键输入实验.pdf_第5页
资源描述:

《STM32按键输入实验.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、3.2按键输入实验上一节介绍了STM32的IO口输出,这一节,我们将向大家介绍如何使用STM32的IO口作为输入用。通过本节的学习,你将了解到STM32的IO口作为输入使用的方法。本节分为如下几个小节:3.2.1STM32IO口简介3.2.2硬件设计3.2.3软件设计3.2.4仿真与下载943.2.1STM32IO口简介STM32的IO口在上一节已经有了详细的介绍,这里我们不再多说。STM32的IO口做输入使用的时候,是通过读取IDR的内容来读取IO口的状态的。了解了这点,就可以开始我们的代码编写了。这一节,

2、我们将通过MiniSTM32板上载有的3个按钮,来控制板上的2个LED,其中KEY0控制DS0,按一次亮,再按一次,就灭。KEY1控制DS1,效果同KEY0。KEY_2(KEY_UP),同时控制DS0和DS1,按一次,他们的状态就翻转一次。3.2.2硬件设计该实验所需要的硬件电路在MiniSTM32开发板上都已经连接好了,不需要经过任何设置,直接编写代码就可。LED的连接在上一节已经介绍过了,在MiniSTM32开发板上的按键KEY0是接在PA13上,KEY1是接在PA15上的,WK_UP(KEY2)接在PA

3、0上。如下图所示:图3.2.2.1按键与STM32连接原理图这里需要注意的是KEY0和KEY1是低电平有效的,而WK_UP是高电平有效的,而且要确认WK_UP按钮与DS18B20的连接是否已经断开,要先断开,否则DS18B20会干扰WK_UP按键!并且KEY0和KEY1连接在与JTAG相关的IO口上,所以在软件编写的时候要先禁用JTAG功能,才能把这两个IO口当成普通IO口使用。953.2.3软件设计这里的代码设计,我们还是在之前的基础上继续编写,打开3.1节的TEST工程,然后在HARDWARE文件夹下新建

4、一个KEY文件夹,用来存放与KEY相关的代码。如下图所示:图3.2.3.1在HARDWARE下新增KEY文件夹然后我们打开USER文件夹下的TEST.Uv2工程,按按钮新建一个文件,然后保存在HARDWARE->KEY文件夹下面,保存为key.c。在该文件中输入如下代码:#include#include"key.h"#include"delay.h"//MiniSTM32开发板//按键输入驱动代码//正点原子@ALIENTEK//2010/5/27//按键初始化函数//PA0

5、.13.15设置成输入voidKEY_Init(void){RCC->APB2ENR

6、=1<<2;//使能PORTA时钟RCC->APB2ENR

7、=1<<0;//开启辅助时钟AFIO->MAPR&=0XF8FFFFFF;//清除MAPR的[26:24]AFIO->MAPR

8、=0X04000000;//关闭JTAGGPIOA->CRL&=0XFFFFFFF0;//PA0设置成输入96GPIOA->CRL

9、=0X00000008;GPIOA->CRH&=0X0F0FFFFF;//PA13,15设置成输入GPIOA

10、->CRH

11、=0X80800000;GPIOA->ODR

12、=1<<13;//PA13上拉,PA0默认下拉GPIOA->ODR

13、=1<<15;//PA15上拉}//按键处理函数//返回按键值//0,没有任何按键按下//1,KEY0按下//2,KEY1按下//3,KEY2按下//注意此函数有响应优先级,KEY0>KEY1>KEY2!!u8KEY_Scan(void){staticu8key_up=1;//按键按松开标志if(key_up&&(KEY0==0

14、

15、KEY2==1)){delay_ms(10);//去抖

16、动key_up=0;if(KEY0==0)return1;elseif(KEY1==0)return2;elseif(KEY2==1)return3;}elseif(KEY0==1&&KEY1==1&&KEY2==0)key_up=1;return0;//无按键按下}在段代码包含了2个函数,voidKEY_Init(void)和u8KEY_Scan(void),KEY_Init是用来初始化按键输入的IO口的。实现PA0、PA13、PA15的输入设置,这里和上一节的输出配置不同,还有一个JTAG的禁用设置。JT

17、AG的禁用,是通过AFIO的MAPR寄存器来配置的。要对复用IO口配置,必须先启用AFIO时钟,AFIO的时钟使能在APB2ENR寄存器里面设置。如下句,就是使能AFIO的时钟:RCC->APB2ENR

18、=1<<0;//开启辅助时钟在使能了AFIO时钟之后,我们就可以对AFIO的相关寄存器进行设置了。这里我们要关闭JTAG,与JTAG设置相关的寄存器是AFIO->MAPR寄存器。该寄存器的各位描述如

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。