恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

STM32 4X4矩阵键盘 (可任意改变矩阵Map)

  • 首页
  • 资讯中心
  • /
  • STM32 4X4矩阵键盘 (可任意改变矩阵Map)

相关资讯

绕开SDK,用TSPL指令玩转蓝牙标签打印机与二维码生成 2026/9/28 5:55:48
VT-x/AMD-V无痕Hook实战:从原理到代码的完整指南 2026/9/28 5:55:47
哈尔滨老房翻新机构排行:口碑不错的品牌企业实力与用户口碑深度解析 2026/9/28 5:55:47

最新资讯

NVIDIA模型优化实战:量化、剪枝与蒸馏的硬件对齐方法论
Jev模型实战测评:类型安全的结构化输出与API调用指南
AI全栈安全渗透测试平台架构设计:十六大领域与四智能体协作机制
Kubernetes多集群编排原理与实践入门
中小企业AI改造实战:智能体工程师认证与工作流落地指南
双指针原地算法:力扣26/80题有序数组去重模板全解析

今日推荐

婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量
制作网页比较方便的软件怎么选?一文搞懂避坑指南
BootCamp6.1.7071驱动包手动安装与回滚全攻略

本周热门

从像素到笔画:srt-whiteboard-animation骨架笔迹追踪实现(Zhang-Suen细化+8邻接追踪)
网站建设的英语怎么说?别只背单词,看完这套安全完整流程才敢上线
新手入门看这篇:建设网站加盟避坑指南与SEO实操

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

STM32 4X4矩阵键盘 (可任意改变矩阵Map)

发布时间:2026/9/28 6:00:48
STM32 4X4矩阵键盘 (可任意改变矩阵Map) 可任意改变矩阵键盘Map的方法。比如键盘定义为u8 key_Map[] {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};若需要更改为u8 key_Map[] {4,2,7,1,5,11,3,16,14,10,6,12,13,9,15,8};则只需要更改数组就可方法如下。寄存器法“key.c” 文件/***********键盘初始化函数**********************/ void key_init(void){ GPIO_InitTypeDef GPIO_InitStruture; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF, ENABLE); //打开PF时钟 //定义PF4-PF7为上拉输入 分别定义为四列 GPIO_InitStruture.GPIO_Mode GPIO_Mode_IPU; GPIO_InitStruture.GPIO_Pin GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7; GPIO_InitStruture.GPIO_Speed GPIO_Speed_50MHz; GPIO_Init(GPIOF,GPIO_InitStruture); //定义PF0-PF3为推挽输出 分别定义为四行 GPIO_InitStruture.GPIO_Mode GPIO_Mode_Out_PP; GPIO_InitStruture.GPIO_Pin GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3; GPIO_Init(GPIOF,GPIO_InitStruture); } /***********键盘扫描函数**********************/ u16 key_count 0; //按键计数 u8 key_val 0; //采集到的键值 u8 key_Map[] { 1,2,3,4, 5,6,7,8, 9,10,11,12, 13,14,15,16}; //16个按键的键值数组 u8 KEY_SCAN_MATRIX(void) { u16 tmp; u8 row, col; u16 KEY_DOUT,tmp1, tmp2; tmp1 0x0008; GPIOF-ODR ((GPIOF-ODR0xfff0)|0x0000); tmp GPIO_ReadInputData(GPIOF); if((tmp 0x00f0) 0x00f0) //如果有键按下 { if(key_count0) { key_count1; for(row0; row4; row) //行扫描 { KEY_DOUT 0X000f; KEY_DOUT- tmp1; GPIOF-ODR((GPIOF-ODR0xfff0)|KEY_DOUT); tmp1 1; if((GPIO_ReadInputData(GPIOF)0x00f0) 0x00f0) { tmp2 0x0010; // 用于检测出哪一列为0 for(col0; col4; col) //列扫描 { if(0x00 (GPIO_ReadInputData(GPIOF) tmp2)) { key_val key_Map[row*4 col];//获取键值 return key_val; } tmp2 1; //左移1位 } } } } } else key_count 0; return 0xff; }

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号