嵌入式系统原理实验五按键实验.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WORD格式-专业学习资料-可编辑 -学习资料分享---- 实验五 按键输入实验 实验目的 : 利用板载的  4 个按键, 来控制板载的两个  LED  的亮灭和蜂鸣器的开关。  通过本实验,  将了解 到  STM32F1  的  IO  口作为输入口的使用方法。 内容要点 : 1.  STM32 IO  口简介 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.硬件设计 本实验用到的硬件资源有: 1) 指示灯 DS0、 DS1 2) 4 个按键: KEY0、 KEY1、 KEY2、和 WK_UP。 DS0、 DS1 以及蜂鸣器和 STM32 的连接在上两章都已经分别介绍了,在战舰 STM32 开发 板上的按键 KEY0 连接在 PE4 上、 KEY1 连接在 PE3 上、 KEY2 连接在 PE2 上、 WK_UP连接在 PA0 上。 如图所示: 按键与 STM32 连接原理图 这里需要注意的是: KEY0、 KEY1 和 KEY2 是低电平有效的, 而 WK_UP 是高电平有效的, 并且外部 都没有上下拉电阻,所以,需要在 STM32 内部设置上下拉。 3.软件设计 key.h #ifndef __KEY_H #define __KEY_H #include sys.h #define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)// #define KEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)// #define KEY2 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2)//  读取按键读取按键读取按键  0 1 2 #define WK_UP GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)// 读取按键 3(WK_UP) #define KEY0_PRES 1 //KEY0 按下 #define KEY1_PRES 2 //KEY1 按下 #define KEY2_PRES 3 //KEY2 按下 #define WKUP_PRES 4 //WK_UP 按下 (即 WK_UP/WK_UP) void KEY_Init(void); //IO  初始化 u8 KEY_Scan(u8); //  按键扫描函数 #endif 这段代码里面最关键就是 4 个宏定义: #define KEY0 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4) // 读取按键 0 #define KEY1 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3) // 读取按键 1 #define KEY2 GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_2) // 读取按键 2 #define WK_UP GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0) //  读取按键  3(WK_UP) 然后我们打开  USER  文件夹  Template. uvprojx ,按新建按钮新建一个文件,  然后保存在  HARDWARE-BEEP  文 件夹下面,保存为 key.c。在该文件中输入如下代码: #include stm32f10x.h #include key.h #include sys.h #include delay.h void KEY_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE); GPIO_Init

文档评论(0)

明若晓溪 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档