下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验五按键输入实验实验目的:利用板载的4个按键,来控制板载的两个LED的亮灭和蜂鸣器的开关。通过本实验,将了解到STM32F1的IO口作为输入口的使用方法。内容要点.1.STM32IO口简介STM32F1的IO口在上一章巳经有了比较详细的介绍,这里我们不再多说。STM32F1的IO口做输入使用的时候,是通过调用函数GPIO_ReadInputDataBit()来读取IO口的状态的。了解了这点,就可以开始我们的代码编写了。这一个实验,我们将通过ALIENTEK战舰STM32开发板上载有的4个按钮(WK_UP、KEY0、KEY1和KEY2),来控制板上的2个LED(DS0和DS1)和蜂鸣器,其中WK_UP控制蜂鸣器,按一次叫,再按一次停;KEY2控制DS0,按一次亮,再按一次灭;KEY1控制DS1,效果同KEY2;KEY0则同时控制DS0和DS1,按一次,他们的状态就翻转一次。有源蜂鸣器自带了震荡电路,一通电就会发声2.硬件设计本实验用到的硬件资源有:指示灯DS0、DS14个按键:KEY0、KEY1、KEY2、和WK_UP。DS0、DS1以及蜂鸣器和STM32的连接在上两章都巳经分别介绍了,在战舰STM32开发)PE2 |kEY212PENKEY113)PE2 |kEY212PENKEY113PE4SEYO,PE2'TRACECKTSMCA23PE3TRACED0TSMC_A1。PE4TRACEDIFS\TC~A20KEY1连接在PE3上、KEY2连接在PE2上、WK_UP连接在PA0按键与STM32连接原理图这里需要注意的是:KEY0、KEY1和KEY2是低电平有效的,而WK_UP是高电平有效的,并且外部都没有上下拉电阻,所以,需要在STM32内部设置上下拉。3.软件设计key.h#ifndefKEYH#define__KEY_H#include"sys.h”#defineKEY0GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)〃读取按键0#defineKEY1GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)〃读取按键1#defineKEY2GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)〃读取按键2#defineWK_UPGPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)//读取按键3(WK_UP)#defineKEY0_PRES1//KEY0按下#defineKEY1_PRES2//KEY1按下#defineKEY2_PRES3//KEY2按下#defineWKUP_PRES4//WK_UP按下(即WK_UP/WK_UP)voidKEY_Init(void);//IO初始化u8KEY_Scan(u8);〃按键扫描函数#endif这段代码里面最关键就是4个宏定义:#defineKEY0GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)〃读取按键0#defineKEY1GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)〃读取按键1#defineKEY2GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)〃读取按键2#defineWK_UPGPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)〃读取按键3(WK_UP)然后我们打开USER文件夹Template.uvprojx,按新建按钮新建一个文件,然后保存在HARDWARE->BEEP文件夹下面,保存为key.G在该文件中输入如下代码:#include"stm32f10x.h”#include"key.h”#include"sys.h”#include"delay.h"voidKEY_Init(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;//KEY0-KEY2GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//设置成上拉输入GPIO_Init(GPIOE,&GPIO_InitStructure);//初始化PE4,PE3,PE2GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;//设置成下拉输入GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化PA0}u8KEY_Scan(u8mode){staticu8key_up=1;if(mode)key_up=1;if(key_up&&(KEY0==0||KEY1==0)){delay_ms(10);key_up=0;if(KEY0==0)returnKEY0_PRES;elseif(KEY1==0)returnKEY1_PRES;}elseif(KEY0==1&&KEY1==1)key_up=1;return0;}led.h#ifndef__LED_H#define__LED_H#include"sys.h”#defineLED0PBout(5)#defineLED1PEout(5)voidLED_Init(void);#endifled.c#include"led.h"#include"stm32f10x.h”voidLED_Init(void){GPIO_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_5);GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOE,&GPIO_InitStructure);GPIO_SetBits(GPIOE,GPIO_Pin_5);}main.c#include"led.h”#include"delay.h"#include"key.h”#include"sys.h”intmain(void){vu8key=0;delay_init();LED_Init();KEY_Init();while(1){key=KEY_Scan(0);if(key){switch(key)caseKEY1_PRES:LED1=!LED1;break;caseKEY0_PRES:LED0=!LED0;LED1=!LED1;break;}elsedelay_ms(10);}}实验现象
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中职第二学年(直播场控)运营技巧阶段测试题及答案
- 2025年中职(会计电算化)会计档案管理试题及答案
- 神木市消防安全培训指南
- 病毒防疫知识课件
- 四川省绵阳市2026届高三第二次诊断性考试历史试卷(含答案)
- 2026广东惠州市龙门县教育局赴高校招聘急需紧缺学科教师招聘60人备考题库(江西师范大学场编制)完整参考答案详解
- 2026新疆天润唐王城乳品有限公司招聘6人备考题库及完整答案详解1套
- 2026年淄博高青县教育和体育局所属事业单位公开招聘工作人员的备考题库(25人)有答案详解
- 2026四川雅安市监察留置看护人员招聘90人备考题库及参考答案详解一套
- 2026云南西双版纳州中级人民法院第一次招聘聘用制审判辅助人员1人备考题库及参考答案详解
- (正式版)SHT 3115-2024 石油化工管式炉轻质浇注料衬里工程技术规范
- 高温高压CFB锅炉安装技术交底
- 防职场性骚扰培训课件
- 设备维护与管理培训课件
- 01管道仪表流程图中常用图例符号
- 如何组织临床小讲课(全科师资培训课程)
- 继电保护课后习题答案第二版-张保会-尹项根
- 播种施肥机械
- 初中校本课程-【课堂实录】美丽的24节气教学设计学情分析教材分析课后反思
- GB/T 12496.19-2015木质活性炭试验方法铁含量的测定
- 中国钴行业钴资源分布情况
评论
0/150
提交评论