全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include stm32f10x.h#include delay.h/*本文件的函数,主要实现矩阵键盘的功能。矩阵键盘使用PA0到PA7引脚,其中,PA0到PA3固定为推挽输出,PA4到PA7固定为下拉输入。即,无键按下时,对应PA4到PA7为0,有键按下时,PA4到PA7中,对应的引脚为高。此程序有一点要注意:要用到的IO口,必须是PX0-PX7,不能是其他连续的数字。如果非要改。如:已经没有连续的0-7的IO口,需要在几个地方修改,请注意!此程序带有松手检测。*/void InitKey(void) /初始化矩阵键盘要使用的GPIO口。GPIO_InitTypeDef GPIOStru;GPIOStru.GPIO_Mode = GPIO_Mode_Out_PP; /定义PA0到PA3为推挽输出。 GPIOStru.GPIO_Speed = GPIO_Speed_50MHz; GPIOStru.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); GPIO_Init(GPIOA,&GPIOStru);GPIOStru.GPIO_Mode = GPIO_Mode_IPD; /定义PA4到PA7为下拉输入。 GPIOStru.GPIO_Speed = GPIO_Speed_50MHz; GPIOStru.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;/因为上面定义引脚为输出时,已经打开整个GPIOA的时钟了,所以此处不再需要函数RCC_APB2PeriphClockCmd()来打开时钟了。 GPIO_Init(GPIOA,&GPIOStru);int key(void) /实现矩阵键盘。返回值为,各按键的键值,此键值由用户自己定义。int KeyVal=0; /keyVal为最后返回的键值。u16 WriteVal=0; /WriteVal为要写给PA口的数据。GPIO_Write(GPIOA,(GPIOA-ODR & 0xfff0 | 0xf); /先让PA0到PA3全部输出高。if(GPIOA-IDR & 0x00f0)=0x0000) /如果,PA4到PA7全为0,则,没有键按下。此时,返回值为-1.return -1;elsedelay_ms(5); /延时5ms去抖动。if(GPIOA-IDR & 0x00f0)=0x0000) /如果,延时5ms后,PA4到PA7又全为0,则,刚才引脚的电位变化是抖动产生的.return -1;GPIO_Write(GPIOA,(GPIOA-ODR & 0xfff0 | 0x1);/让PA3到PA0输出二进制的0001.switch(GPIOA-IDR & 0x00f0) /对PA4到PA7的值进行判断,以输出不同的键值。case 0x0010: KeyVal=15;break;case 0x0020: KeyVal=11;break;case 0x0040: KeyVal=7;break;case 0x0080: KeyVal=3;break; GPIO_Write(GPIOA,(GPIOA-ODR & 0xfff0 | 0x2);/让PA3到PA0输出二进制的0010.switch(GPIOA-IDR & 0x00f0) /对PA4到PA7的值进行判断,以输出不同的键值。case 0x0010: KeyVal=14;break;case 0x0020: KeyVal=10;break;case 0x0040: KeyVal=6;break;case 0x0080: KeyVal=2;break;GPIO_Write(GPIOA,(GPIOA-ODR & 0xfff0 | 0x4);/让PA3到PA0输出二进制的0100.switch(GPIOA-IDR & 0x00f0) /对PA4到PA7的值进行判断,以输出不同的键值。case 0x0010: KeyVal=13;break;case 0x0020: KeyVal=9;break;case 0x0040: KeyVal=5;break;case 0x0080: KeyVal=1;break;GPIO_Write(GPIOA,(GPIOA-ODR & 0xfff0 | 0x8);/让PA3到PA0输出二进制的1000. switch(GPIOA-IDR & 0x00f0) /对PA4到PA7的值进行判断,以输出不同的键值。case 0x0010: KeyVal=12;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中国石油抚顺石化分公司人员招聘考试模拟试题及答案
- 2026年江西财经职业学院招聘编制外合同聘用制人员9人考试备考题库及答案解析
- 2026海宾集团海宾悦旅分公司招聘1人笔试参考题库及答案解析
- 2026年洛阳市县区事业单位招聘联考考察考试参考题库及答案解析
- 2026年生物可降解聚合物行业洞察报告及未来五至十年发展趋势报告
- 2026年金属玩具制造行业投资研究报告及未来五至十年增长动能与投资价值分析
- 2026年汽车定制改装行业洞察报告及未来五至十年发展趋势报告
- 2026年辽宁省海城市高三数学下册期末考试模拟检测卷及参考答案(模拟题)
- 2026初中生物教资面试生物进化重难点题库附带解析
- Unit 6 单元巩固与提升
- 04-家庭教育:3至12岁好习惯养成实操手册
- 2026年中国电信应届生校园招聘笔试真题(含详细答案解析)
- 2026年中国联通网络技术岗校园招聘笔试题及答案
- 电动机的正反转控制公开课
- 2027年山西大同市高职单招职业技能考试题库【有一套】附答案详解
- 人教版初中八年级上册体育教案全套
- 投资项目财务监理服务方案投标文件(技术标)
- 2024 土工合成材料 塑料土工格室
- 护理部针刺伤职业暴露应急演练脚本
- 医美连锁公司顾客满意度提升管理制度
- 2024年全国统一高考数学试卷(理科)(甲卷)
评论
0/150
提交评论