低电平有效的按键
#define KEY1 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_10)//读取按键0
#define KEY2 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)//读取按键1
#define KEY3 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_2)//读取按键2
#define KEY4 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_11)//读取按键3(WK_UP)
#define KEY5 GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_1)//读取按键3(WK_UP)
void KEY_Init(void) //IO初始化
{
GPIO_InitTypeDef GPIO_InitStructure;
/*开启按键端口(PC)的时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
GPIO_InitStructure.GPIO_Pin= GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_13;//KEY0-KEY2;
// GPIO_InitStructure.GPIO_Speed= GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IPU;
GPIO_Init(GPIOC,&GPIO_InitStructure);
}
void KEY_Scan(u8 mode)
{
staticu8 key_up=1;//按键按松开标志
if(mode)
key_up=1; //支持连按
if((KEY1==0||KEY2==0||KEY3==0||KEY4==0||KEY5==0))
{
delay_ms(40);//去抖动
key_up=0;
if(KEY1==0)
KEY1_flag=1;
if(KEY2==0)
KEY2_flag=1;
if(KEY3==0)
KEY3_flag=1;
if(KEY4==0)
KEY4_flag=1;
if(KEY5==0)
KEY5_flag=1;
}
if((KEY1==1||KEY2==1||KEY3==1||KEY4==1||KEY5==1))
{
delay_ms(10);//去抖动
key_up=0;
if(KEY1==1)
KEY1_flag=0;
if(KEY2==1)
KEY2_flag=0;
if(KEY3==1)
KEY3_flag=0;
if(KEY4==1)
KEY4_flag=0;
if(KEY5==1)
KEY5_flag=0;
}
}
按键,弹起有效
KEY_Scan函数修改为
void KEY_Scan(u8 mode)
{
staticu8 key_up=1;//按键按松开标志
if(mode)
key_up=1; //支持连按
if((KEY1==0||KEY2==0||KEY3==0||KEY4==0||KEY5==0))
{
delay_ms(10);//去抖动
key_up=0;
if(KEY1==0)
{
KEY1_flag=1;
if(0== KEY1_press_flag)
{
KEY1_Event_exec_flag= 0;
KEY1_press_flag= 1;
}
}
if(KEY2==0)
{
KEY2_flag=1;
if(0== KEY2_press_flag)
{
KEY2_Event_exec_flag= 0;
KEY2_press_flag= 1;
}
}
if(KEY3==0)
{
KEY3_flag=1;
if(0== KEY3_press_flag)
{
KEY3_Event_exec_flag= 0;
KEY3_press_flag= 1;
}
}
if(KEY4==0)
{
if(0== KEY4_flag)
{
KEY4_flag=1;
}
if(0== KEY4_press_flag)
{
KEY4_Event_exec_flag= 0;
KEY4_press_flag= 1;
}
}
if(KEY5==0)
KEY5_flag=1;
}
if((KEY1==1||KEY2==1||KEY3==1||KEY4==1||KEY5==1))
{
delay_ms(10);//去抖动
key_up=0;
if(KEY1==1)
{
KEY1_flag=0;
if(KEY1_press_flag == 1)
{
KEY1_press_flag= 0;
if(0== KEY1_Event_exec_flag)
上一篇:判断STM32 GPIO输入口的输入状态(高电平或低电平)
下一篇:STM32中关于高电平有效,低电平有效的一点理解
推荐阅读
史海拾趣
CIRCUITCO公司深知人才是企业发展的核心。因此,公司一直注重人才引进和团队建设。公司积极招聘具有丰富经验和专业技能的人才,为他们提供良好的工作环境和待遇。同时,公司也注重员工的培训和发展,鼓励员工不断创新和学习。通过这些措施,CIRCUITCO公司逐渐建立起一支高素质、专业化的团队,为公司的长远发展提供了有力保障。
DIALIGHT公司一直专注于工业LED照明领域的发展。他们深入了解工业空间照明的需求和挑战,设计了一系列专为工业应用而定制的LED照明产品。这些产品不仅易于安装和维护,而且能在恶劣的环境下持续使用。此外,DIALIGHT还提供集成系统解决方案,帮助客户降低能源成本、维护成本和碳足迹,同时提高设施的安全性和生产力。通过不断创新和优质服务,DIALIGHT在工业LED照明领域赢得了广泛的认可和信赖。
Comax Industrial Co Ltd公司自创立之初,便明确了其在电子行业中的定位与发展方向。公司初期便注重技术研发,引进了一批高素质的技术人才,并投入大量资源进行技术研发与创新。通过不懈的努力,Comax成功开发出一系列具有竞争力的电子产品,并在市场上获得了良好的口碑。这些产品不仅满足了客户的需求,也为公司的发展奠定了坚实的技术基础。
APEM公司的创始人基恩·罗杰罗,在20世纪50年代初,看到了美国产品主导法国市场的商机。为了解决产品维修和备件订购的难题,他决定自己生产开关。罗杰罗的开关产品在尺寸和操作方式上与美国产品相似,但价格更亲民,交货时间更短。这一创新举措使APEM迅速在市场上站稳脚跟,为后续的发展奠定了坚实基础。
本充电器电路简单,元件易取,它对各节镍镉电池分别充电,充足电即自停。电路见附图所示,充电前,先调节R4,使三端可调稳压器LM317的输出电压为预定值Vo,当充电电池的电压Ve上升到Vo-0.65V时,晶体管截止,充电终止,同时相应的充电指示灯LED熄灭.其 ...… 查看全部问答∨ |
1.当特殊功能部件(如定时器、外部中断)使用I/O引脚时,引脚的操作(方向、上拉电阻、输入输出值)是由该部件与I/O口寄存器(SFIOR中的PUD位、PORTX、DDRX、PINX)共同管理的。在产品开发中不仅要读该部件的使用说明,也要读I/O口的alternate s说 ...… 查看全部问答∨ |
1 首先问下,在VXWORKS6.4中是不是不在支持etherOutput这个函数了,在etherLib中就没找到这个函数的定义 2 我要做一个截获以太帧并发送以太帧的程序,现在用muxBind,然后在接收处理函数中能解析出源MAC地址和目的MAC地址,现在我想再发送一个以太 ...… 查看全部问答∨ |
在做网卡芯片的应用时有个问题搞不明白,我一直以来都认为网卡芯片(如RTL8019AS)的MAC地址是芯片出厂时就写在芯片内且不可改的,但最近看资料发现好像并不是这样,而是由用芯片的人写进芯片附加的EEPROM中的,芯片初始化时又从EEPROM中读入芯片内 ...… 查看全部问答∨ |
我用VB.NET开发PDA上的程序,碰到关于加密的一个问题!!急!~~~~~~~~~~ 就是我在WINCE内写了一段客户端程序实现与服务器的通讯,但是需要对传输的数据进行加密,我在VB.NET里面试过了调用System.Security.Cryptography这个DLL可以实现加密和解密的功能,但是在WINCE里面没有这个DLL啊,这个功能做不了,怎么办啊??还有没有 ...… 查看全部问答∨ |
|
C语言多层循环怎样转换为verilog语言使FPGA最省时间 遇到一个需要将一段C代码转换为verilog语言,同时需要FPGA处理最省时间,请问各位高手怎样处理比较好呢,小弟是新手请多多指教,谢谢。 for(int i =0;i<100;i++) { int num = m;//m是一个变量,取值不确定。 for ...… 查看全部问答∨ |