在stm32f105和stm32f107互连型系列微控制器之前,意法半导体已经推出stm32基本型系列、增强型系列、usb基本型系列、互补型系列;新系列产品沿用增强型系列的72mhz处理频率。内存包括64kb到256kb闪存和 20kb到64kb嵌入式sram。新系列采用lqfp64、lqfp100和lfbga100三种封装,不同的封装保持引脚排列一致性,结合stm32平台的设计理念,开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求。本文为大家介绍stm32寄存器版矩阵键盘库函数。
stm32寄存器版矩阵键盘库函数
////////////////////.h文件
#ifndef __key_h
#define __key_h
#include “sys.h”
#define keya pain(13) //pa13
#define keyb pain(15) //pa15
#define keyc pain(0) //pa0 wk_up
#define key0 pain(4) //pa4矩阵键盘的第1列
#define key1 pain(5) //pa5 2
#define key2 pain(6) //pa6 3
#define key3 pain(7) // 4
#define key4 pain(0) //第1行
#define key5 pain(1) // 2
#define key6 pain(2) // 3
#define key7 pain(3) // 4
extern void juzhe_init(void);//io初始化
extern u8 key_get(void); //按键扫描函数
void key_init(void);//io初始化
u8 key_scan(void); //按键扫描函数
#endif
////////////////////////.c文件
#include
#include “key.h”
#include “delay.h”
//按键初始化函数
//特别注意:在该函数之后,jtag将无法使用(swd也无法使用)
//如果想jtag仿真,可以屏蔽该函数。
//pa0.13.15 设置成输入
void key_init(void)
{
rcc->apb2enr|=1
gpioa->crl|=0x00000008;
gpioa->crh&=0x0f0fffff;//pa13,15设置成输入
gpioa->crh|=0x80800000;
gpioa->odr|=1key2!!
u8 key_scan(void)
{
static u8 key_up=1;//按键按松开标志
jtag_set(jtag_swd_disable);
if(key_up&&(keya==0||keyb==0||keyc==1))
{
delay_ms(10);//去抖动
key_up=0;
if(keya==0)
{
jtag_set(swd_enable);
return 1;
}
else if(keyb==0)
{
jtag_set(swd_enable);
return 2;
}
else if(keyc==1)
{
jtag_set(swd_enable);
return 3;
}
}else if(keya==1&&keyb==1&&keyc==0)key_up=1;
jtag_set(swd_enable);
return 0;// 无按键按下
}
void juzhe_init1(void)
{
rcc->apb2enr|=1
gpioa->crl|=0x33338888;
gpioa->bsrr|=1
gpioa->crl|=0x88883333;
gpioa->brr|=1
}
u8 key_get(void)
{
static u8 key_up=1; u8 m=0;
juzhe_init1();
delay_ms(1);
if(key_up&&(key4==0||key5==0||key6==0||key7==0)) //检测哪一行有按键按下
{
delay_ms(10);
key_
up=0;
if(!key4) //判断在对应行下的哪一列
{
m=0;
juzhe_init2();
delay_ms(1);
if(!key0) //检测哪一列有按键按下,求出对应的键,返回设定的键值
return m+1 ;
if(!key1)
return m+2;
if(!key2)
return m+3;
if(!key3)
return m+4;
}
if(!key5)
{
m=4;
juzhe_init2();
delay_ms(1);
if(!key0)
return m+1 ;
if(!key1)
return m+2;
if(!key2)
return m+3;
if(!key3)
return m+4;
}
if(!key6)
{
m=8;
juzhe_init2();
delay_ms(1);
if(!key0)
return m+1 ;
if(!key1)
return m+2;
if(!key2)
return m+3;
if(!key3)
return m+4;
}
if(!key7)
{
m=12;
juzhe_init2();
delay_ms(1);
if(!key0)
return m+1 ;
if(!key1)
return m+2;
if(!key2)
return m+3;
if(!key3)
return m+4;
}
}
else if(key4==1&&key5==1&&key6==1&&key7==1) //如果没有检测到按键的话返回0
key_up=1;
return 0;
}
三星透露 SmartThings 将登陆 Android Auto
高通欲从手机芯片脱身,解读中国集成电路
工业互联网平台核心技术之运维技术
5G商用还在普及阶段,6G研究已提上日程
从头设计一个张量流处理器TSP架构
stm32寄存器版矩阵键盘库函数(附详细注释)
单级PFC与两级PFC有什么区别
SDI的产品和市场策略的判研
什么是倍加福传感器
PCB设计人员需要掌握的技能
电梯在安装好之后,我们该如何验收呢
SPI至RS-485/RS-422设计解决方案的详细物理层设计注意事项
大疆云台系统如影2亮相北京电影学院 120公里时速下稳定拍摄无压力
预测2021年电信行业将有1%的增长,在2021年收回损失的三分之一
环境光传感器发展趋势
PC订单需求旺盛,联宝科技新招聘员工近万人
DPCNN,究竟是多么牛逼的网络呢?
在IoT时代智能家庭网关系统被颠覆_有哪些新变化
计算机并口EPP模式及基于XC95144芯片实现它的通信设计
MWC究竟有哪些优秀的手机设备