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

制作企业网站怎么报价南昌网站建设推广专家

制作企业网站怎么报价,南昌网站建设推广专家,wordpress开启缓存,九一赣州人才网找工作移植开源MultiButton来测试按键的几种操作状态。 一、硬件部分 开发板上的按键部分电路图 KEY1和KEY2按键使用了PB0和PB1端口。 二、MultiButton MultiButton 是一个小巧简单易用的事件驱动型按键驱动模块,可无限量扩展按键,按键事件的回调异步处理…

移植开源MultiButton来测试按键的几种操作状态。

一、硬件部分

开发板上的按键部分电路图
在这里插入图片描述

KEY1和KEY2按键使用了PB0和PB1端口。

二、MultiButton
MultiButton 是一个小巧简单易用的事件驱动型按键驱动模块,可无限量扩展按键,按键事件的回调异步处理方式可以简化你的程序结构,去除冗余的按键处理硬编码,让你的按键业务逻辑更清晰。

下载地址:
https://github.com/0x1abin/MultiButton

按照例程移植程序,即可实现按键的操作。

三、程序部分

3.1、key.c

#include "main.h"uint8_t button_tick_cnt=0;enum Button_IDs 
{btn1_id,btn2_id,
};struct Button btn1;
struct Button btn2;uint8_t read_button_gpio(uint8_t button_id)
{switch(button_id){case btn1_id:return GPIO_ReadInputDataBit(KEY1_GPIO_PORT, KEY1_PIN);case btn2_id:return GPIO_ReadInputDataBit(KEY2_GPIO_PORT, KEY2_PIN);default:return 0;}
}//BTN1
void BTN1_PRESS_DOWN_Handler(void* btn)
{printf("KEY1 DOWN! \r\n");
}void BTN1_PRESS_UP_Handler(void* btn)
{printf("KEY1 UP! \r\n");
}void BTN1_PRESS_REPEAT_Handler(void* btn)
{printf("KEY1 PRESS_REPEAT! \r\n");
}void BTN1_SINGLE_Click_Handler(void* btn)
{printf("KEY1 SINGLE_ClICK! \r\n");
}//void BTN2_DOUBLE_Click_Handler(void* btn)
//{
//	printf("KEY2 DOUBLE_ClICK! \r\n");
//}void BTN1_LONG_PRESS_START_Handler(void* btn)
{printf("KEY1 LONG_PRESS_START! \r\n");
}void BTN1_LONG_PRESS_HOLD_Handler(void* btn)
{printf("KEY1 LONG_PRESS_HOLD! \r\n");
}//BTN2
void BTN2_PRESS_DOWN_Handler(void* btn)
{printf("KEY2 DOWN! \r\n");
}void BTN2_PRESS_UP_Handler(void* btn)
{printf("KEY2 UP! \r\n");
}void BTN2_PRESS_REPEAT_Handler(void* btn)
{printf("KEY2 PRESS_REPEAT! \r\n");
}void BTN2_SINGLE_Click_Handler(void* btn)
{printf("KEY2 SINGLE_ClICK! \r\n");
}//void BTN2_DOUBLE_Click_Handler(void* btn)
//{
//	printf("KEY2 DOUBLE_ClICK! \r\n");
//}void BTN2_LONG_PRESS_START_Handler(void* btn)
{printf("KEY2 LONG_PRESS_START! \r\n");
}void BTN2_LONG_PRESS_HOLD_Handler(void* btn)
{printf("KEY2 LONG_PRESS_HOLD! \r\n");
}void button_tick_hdl(void)
{button_tick_cnt++;if(button_tick_cnt>=5){button_tick_cnt=0;button_ticks();}
}void init_key(void)
{GPIO_InitTypeDef GPIO_InitStruct;KEY1_GPIO_CLK_ENABLE();KEY2_GPIO_CLK_ENABLE();GPIO_StructInit(&GPIO_InitStruct);GPIO_InitStruct.GPIO_Pin   = KEY1_PIN;GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_IPU;GPIO_Init(KEY1_GPIO_PORT, &GPIO_InitStruct);GPIO_StructInit(&GPIO_InitStruct);GPIO_InitStruct.GPIO_Pin   = KEY2_PIN;GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_IPU;GPIO_Init(KEY2_GPIO_PORT, &GPIO_InitStruct);	//BTN1button_init(&btn1, read_button_gpio, 0, btn1_id);button_attach(&btn1, PRESS_DOWN,       BTN1_PRESS_DOWN_Handler);button_attach(&btn1, PRESS_UP,         BTN1_PRESS_UP_Handler);button_attach(&btn1, PRESS_REPEAT,     BTN1_PRESS_REPEAT_Handler);
//	button_attach(&btn1, SINGLE_CLICK,     BTN1_SINGLE_Click_Handler);
//	button_attach(&btn1, DOUBLE_CLICK,     BTN1_DOUBLE_Click_Handler);button_attach(&btn1, LONG_PRESS_START, BTN1_LONG_PRESS_START_Handler);button_attach(&btn1, LONG_PRESS_HOLD,  BTN1_LONG_PRESS_HOLD_Handler);button_start(&btn1);//BTN2button_init(&btn2, read_button_gpio, 0, btn2_id);button_attach(&btn2, PRESS_DOWN,       BTN2_PRESS_DOWN_Handler);button_attach(&btn2, PRESS_UP,         BTN2_PRESS_UP_Handler);button_attach(&btn2, PRESS_REPEAT,     BTN2_PRESS_REPEAT_Handler);
//	button_attach(&btn2, SINGLE_CLICK,     BTN2_SINGLE_Click_Handler);
//	button_attach(&btn2, DOUBLE_CLICK,     BTN2_DOUBLE_Click_Handler);button_attach(&btn2, LONG_PRESS_START, BTN2_LONG_PRESS_START_Handler);button_attach(&btn2, LONG_PRESS_HOLD,  BTN2_LONG_PRESS_HOLD_Handler);button_start(&btn2);
}

3.2、key.h

#ifndef __KEY_H
#define __KEY_H#define KEY1_GPIO_CLK                    RCC_AHBPeriph_GPIOB
#define KEY1_GPIO_PORT                   GPIOB
#define KEY1_PIN                         GPIO_Pin_0#define KEY2_GPIO_CLK  								   RCC_AHBPeriph_GPIOB
#define KEY2_GPIO_PORT                   GPIOB
#define KEY2_PIN                         GPIO_Pin_1#define KEY1_GPIO_CLK_ENABLE()          do{ RCC_AHBPeriphClockCmd(KEY1_GPIO_CLK, ENABLE); }while(0)
#define KEY1_GPIO_CLK_DISABLE()         do{ RCC_AHBPeriphClockCmd(KEY1_GPIO_CLK, DISABLE); }while(0)#define KEY2_GPIO_CLK_ENABLE()          do{ RCC_AHBPeriphClockCmd(KEY2_GPIO_CLK, ENABLE); }while(0)
#define KEY2_GPIO_CLK_DISABLE()         do{ RCC_AHBPeriphClockCmd(KEY2_GPIO_CLK, DISABLE); }while(0)#define KEY_UP_PRES    		1                   
#define KEY_DOWN_PRES    	2                 	 
#define KEY_LEFT_PRES    	3                
#define KEY_RIGHT_PRES    4  
#define KEY_SEL_PRES			5
#define KEY_B2_PRES				6void init_key(void);  
void button_tick_hdl(void);#endif

3.3、main.c

#include "main.h"int main(void)
{SysTick_Init();init_usart(115200);init_led();init_key();printf("mm32F5265_ob_printf_test!\r\n");while (1){}
}

3.4、调用计时函数

在systick中断函数中调用计时函数

void SysTick_Handler(void)
{TimingDelay_Decrement();button_tick_hdl();
}

四、程序运行

下载程序后,操作按键,串口输出内容
4.1、操作KEY1按键,串口输出
在这里插入图片描述

4.2、操作KEY2按键,串口输出
在这里插入图片描述


文章转载自:

http://gBbRbqPc.ffcsr.cn
http://IsnW97k7.ffcsr.cn
http://p8tT9wqy.ffcsr.cn
http://Rw9srawj.ffcsr.cn
http://XdW0C0eW.ffcsr.cn
http://sW7SQBdP.ffcsr.cn
http://7auhsu0a.ffcsr.cn
http://hsbFDEYW.ffcsr.cn
http://bYraqZg7.ffcsr.cn
http://b37GGSa3.ffcsr.cn
http://GLaJZRRH.ffcsr.cn
http://ajaEBaYJ.ffcsr.cn
http://DrgKKhpK.ffcsr.cn
http://YIKhhYRq.ffcsr.cn
http://lAdWPzO3.ffcsr.cn
http://8H3uvUAp.ffcsr.cn
http://kpArZdBi.ffcsr.cn
http://0GnuGfeR.ffcsr.cn
http://70l0uspf.ffcsr.cn
http://oXDPahfE.ffcsr.cn
http://txTEeUPH.ffcsr.cn
http://FouDRSZa.ffcsr.cn
http://ORv3ZoxU.ffcsr.cn
http://Jbf01DQa.ffcsr.cn
http://IJgXNq0a.ffcsr.cn
http://Hd2jiInL.ffcsr.cn
http://yaJtOB8c.ffcsr.cn
http://VJ0LWhy9.ffcsr.cn
http://vDiD8xWF.ffcsr.cn
http://YRLvAdgQ.ffcsr.cn
http://www.dtcms.com/wzjs/751395.html

相关文章:

  • 快速做网站公司哪家专业营销网站建设服务
  • 深圳罗湖做网站的公司哪家好wordpress文章保存图片
  • 网站建设费怎么做账网站 全屏幻灯片
  • 用虚拟机做服务器搭建网站wordpress aws
  • 电子商务网站建设报价wordpress 通用代码 网页
  • 基于django的电子商务网站设计国内代理ip地址
  • wordpress建站好不好个人商城
  • 网站百度提示风险网站使用方法
  • 数码网站名html是建网站导航栏怎么做
  • 物流网站建设可行性报告网站建设费用设计
  • 互联网工具型网站网站备案是什么
  • 许昌做网站联系电话有赞微商城登录
  • 广州骏域网站佛山科技网站建设
  • 查看网站后台登陆地址重庆网站搭建公司
  • 著名设计网站如何将网站搭在阿里云
  • 接技术标做网站做50个网站
  • 兰州搜狗推广佛山网站推广优化公司
  • 什么是网站维护实时新闻
  • 福田企业网站优化排名无锡微信网站建设
  • 做网站的作品思路及步骤wordpress 自定义 空白
  • 微网站方案问卷调查网站赚钱
  • 房山网站建设公司wordpress时光轴插件
  • 高端快速建站怎么做免费的网站链接
  • 泉州网站建设咨询网站建设备案多长时间
  • 网站建设系统总体结构功能图wordpress访客记录
  • 网站图片怎么做alt重庆网站建设公司销售
  • 长春网站建设招代理wordpress首页布局怎么修改
  • tp框架做网站seo服务顾问
  • 网站建设的关键要素wordpress上传sh文件夹
  • 怎样说服客户做网站做网站用到的单词