当前位置: 首页 > wzjs >正文

无锡专业网站建设公司200做网站

无锡专业网站建设公司,200做网站,手机网站方案.doc,视频多平台发布驱动库介绍 源码地址:https://github.com/jiejieTop/ButtonDrive 使用只需3步,创建按键,按键事件与回调处理函数链接映射,周期检查按键,支持单双击、连按、长按;采用回调处理按键事件(自定义消…

驱动库介绍

源码地址:https://github.com/jiejieTop/ButtonDrive
使用只需3步,创建按键,按键事件与回调处理函数链接映射,周期检查按键,支持单双击、连按、长按;采用回调处理按键事件(自定义消抖时间)
按键代码想必做嵌入式开发的无人不知无人不晓吧,但是真的在项目中我们的按键不仅仅是一个按钮那么简单,可能会涉及到长按
双击、单机、连击等操作。举个日常生活中的理解,比如我们在机场经常会可以看到免费的饮水机,一般都是三个按钮,一个是热水开关、一个是常温水开关、还有一个是童锁开关,为什么会设置这个童锁开关呢,我想这里应该是处于安全考虑,一般冷水都是按一下开再按一下就关这个逻辑很清晰,热水也是一样,但是热水比较危险如果小孩子不慎触碰就会有烫伤危险所以童锁的按钮就显得比较重要了,童锁也是一个普通按钮只不过童锁一般都需要长按解锁,虽然叫童锁其实也是大人锁,这个按钮一般都是要长按解锁后再开启热水的开关这样做就会比较安全。假设我们需要这样的功能,那么这个驱动库就比较有用了。

移植适配

1.下载源码

准备好自己的工程

  1. 自己的工程中需要适配一下底层IO口的配置

  2. 再一个就是移植修改两个读取IO电平状态的接口

  3. 创建两个按钮并且编写其按下后回调函数

Button_t Button1;/*创建一个按钮Button1*/
Button_t Button2; /*创建一个按钮Button2*//*按钮1单击执行动作*/
void Btn1_Dowm_CallBack(void *btn)
{PRINT_INFO("Button1 单击!");
}
/*按钮1双击执行动作*/
void Btn1_Double_CallBack(void *btn)
{PRINT_INFO("Button1 双击!");
}
/*按钮1长按执行动作*/
void Btn1_Long_CallBack(void *btn)
{PRINT_INFO("Button1 长按!");
}
/*按钮1连按执行动作*/
void Btn1_Continuos_CallBack(void *btn)
{PRINT_INFO("Button1 连按!");
}
/*按钮1连按释放执行动作*/
void Btn1_ContinuosFree_CallBack(void *btn)
{PRINT_INFO("Button1 连按释放!");
}/*按钮2单击执行动作*/
void Btn2_Dowm_CallBack(void *btn)
{PRINT_INFO("Button2 单击!");
}
/*按钮2双击执行动作*/
void Btn2_Double_CallBack(void *btn)
{PRINT_INFO("Button2 双击!");
}
/*按钮2长按执行动作*/
void Btn2_Long_CallBack(void *btn)
{PRINT_INFO("Button2 长按!");
}
/*按钮2连按执行动作*/
void Btn2_Continuos_CallBack(void *btn)
{PRINT_INFO("Button2 连按!");
}
/*按钮2连按释放执行动作*/
void Btn2_ContinuosFree_CallBack(void *btn)
{PRINT_INFO("Button2 连按释放!");
}

编写测试程序

  1. 编写测试按钮前适配一下串口方便打印调试信息
  2. 把两个按钮的底层先初始化一下可以读取IO口状态
  3. Button_Process(); 需要周期调用按键处理函数直接放while循环
int main(void)
{LED_Config();KEY_Config();USART1_Config();//RS485_Config();/* 打印信息 */PRINT_INFO("welcome to learn jiejie stm32 library!\n");Button_Create("Button1",&Button1,Read_Button1_Level, HIGH);Button_Attach(&Button1,BUTTON_DOWM,Btn1_Dowm_CallBack);                       //单击Button_Attach(&Button1,BUTTON_DOUBLE,Btn1_Double_CallBack);                   //双击Button_Attach(&Button1,BUTTON_CONTINUOS,Btn1_Continuos_CallBack);             //连按  Button_Attach(&Button1,BUTTON_CONTINUOS_FREE,Btn1_ContinuosFree_CallBack);    //连按释放  Button_Attach(&Button1,BUTTON_LONG,Btn1_Long_CallBack);                       //长按Button_Create("Button2",&Button2, Read_Button2_Level, LOW);Button_Attach(&Button2,BUTTON_DOWM,Btn2_Dowm_CallBack);                     //单击Button_Attach(&Button2,BUTTON_DOUBLE,Btn2_Double_CallBack);                 //双击Button_Attach(&Button2,BUTTON_CONTINUOS,Btn2_Continuos_CallBack);           //连按Button_Attach(&Button2,BUTTON_CONTINUOS_FREE,Btn2_ContinuosFree_CallBack);  //连按释放Button_Attach(&Button2,BUTTON_LONG,Btn2_Long_CallBack);                     //长按Get_Button_Event(&Button1);Get_Button_Event(&Button2);while(1)                            {
//		if((GPIOA->IDR & 1<<0) ==0)
//		{
//			LED1_ONOFF(1);
//		}
//		else
//		{
//			LED1_ONOFF(0);
//		}Button_Process();     //需要周期调用按键处理函数Delay_Nms(20);}
}

思考:这个周期性调用的函数既然是周期性调用在定时器调用应该更合适。

验证测试效果

单击效果:
单击测试
双击效果:

双击其实就是在设定的时间内快速按下两下并抬起两下,跟鼠标打开浏览器网页类似的操作。

长按测试:

长按就是按住一个按钮不松,周期性检测状态移植没有发生改变。操作跟我们按住电脑上的音量加一直不松开的操作类似。

连按测试:

连按跟长按的区别 连按是连续触发 不分单机还是双击 ,长按是按着不松开 计算时间 作用不一样 这个要根据项目需要去使用 是否支持连续按下。

最后

该库还支持在操作系统上使用,感兴趣的兄弟可以参考源码链接说明

版权和许可

ButtonDrive 遵循 Apache License v2.0 开源许可协议,可以免费在商业产品中使用,并且不需要公开私有代码。

Apache License v2.0 鼓励代码共享和尊重原作者的著作权,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布(作为开源或闭源商业软件),但必须根据协议保留原作者版权声明。


文章转载自:

http://6qsORhl5.nrrzw.cn
http://CTMf6c4J.nrrzw.cn
http://yizOysDf.nrrzw.cn
http://XQTAKDUe.nrrzw.cn
http://RndgjonU.nrrzw.cn
http://mRsCiQBv.nrrzw.cn
http://RzNBpxHt.nrrzw.cn
http://F2tPxjKA.nrrzw.cn
http://tDuDMc6y.nrrzw.cn
http://vGKV8rKs.nrrzw.cn
http://3Ou7hgJm.nrrzw.cn
http://6XcGNuiB.nrrzw.cn
http://cMqRywYO.nrrzw.cn
http://qWBHbaAI.nrrzw.cn
http://mzW64OPK.nrrzw.cn
http://dUSq7KzC.nrrzw.cn
http://8bbw9mJc.nrrzw.cn
http://SgAx02Ab.nrrzw.cn
http://IWr3Dni1.nrrzw.cn
http://vZxM3T6F.nrrzw.cn
http://ZEE3n4Ip.nrrzw.cn
http://i2kNWPLz.nrrzw.cn
http://Bnr7i1N0.nrrzw.cn
http://kYGANlkJ.nrrzw.cn
http://KP8oNbyq.nrrzw.cn
http://y4ccx7Ja.nrrzw.cn
http://UKjb7IUI.nrrzw.cn
http://G8OimUQM.nrrzw.cn
http://Vu301qhp.nrrzw.cn
http://YmNa70j9.nrrzw.cn
http://www.dtcms.com/wzjs/754601.html

相关文章:

  • 微信做引流网站北京网站建设推荐华网天下
  • 创建官方网站长沙正规seo优化公司
  • 上海金桥建设监理有限公司网站番禺微网站建设
  • 网站搭建哪里找有名气门户网站首页设计
  • 谁做的四虎网站是多少支付宝网站怎么设计的
  • 衡量网站质量的标准各类网站排名
  • 网站开发如何设置视频教程潍坊网站优化公司哪家好
  • 网站风格变化两学一做网站专栏怎么设置
  • 网站托管费用多少电商网站模板引擎
  • 正规网站建设费用漫画网站建设
  • 厦门模板网站h5网站开发多少钱
  • 如何制作一个简易网站事件营销的方法
  • 域名 备案 没有网站网站代理服务器连接失败
  • 如何给网站设置关键词南京的网站建设公司哪家好
  • 阳春网站开发网站怎么做按钮
  • 域名解析 网站港口备案怎么在网站做
  • 网站建设模板软件做公关用的网站
  • 重庆企业站seo漳州微信网站开发
  • 网站建设及编辑岗位职责html5 做网站
  • 网站关键词在哪里添加天津百度推广公司电话
  • 鞍山高新区网站手机app开发网站模板
  • 做网站的市场风险分析及对策织梦的网站收录不好
  • 如何看织梦做的网站的源码昆山城市建设网站
  • 四川建设行业数据共享平台网站问题服务app开发公司
  • 网站备案好麻烦wordpress圈子
  • 做百度推广网站排名用h5做网站首页代码
  • 巴中做网站wordpress自定义鼠标
  • 首都航空公司官方网站长沙专业网站设计服务
  • 东莞网站推广费用wordpress 页面模板 不显示
  • 安阳网站建设价格济南新闻头条最新事件