按键应用
时间:10-02
整理:3721RD
点击:
开发板上有多个按键,但是,其共分为两类,一类是软触开关,一类的电容按键。
软触开关就是我们平时最常用的那种有弹片的按键。
其使用就是按下时会检测到电平变化。
如核心板上的唤醒按键
底板上的按键,本来是四个引脚的,但是原理图上只画了两个。
可以看到,有的按键是接地,有的按键是接VCC,这里其实都是大同小异的。只是测一下电平布局。
在配置连接到这些按键上的引脚时,只要配置成输入模式,正确使用上拉下拉,速度可以选高速或是低速。
如下例程:
- GPIO_Initure.Pin=GPIO_PIN_0;
- GPIO_Initure.Mode=GPIO_MODE_INPUT;
- GPIO_Initure.Pull=GPIO_PULLDOWN;
- GPIO_Initure.Speed=GPIO_SPEED_HIGH;
- HAL_GPIO_Init(GPIOA,&GPIO_Initure);
-
- GPIO_Initure.Pin=GPIO_PIN_13;
- GPIO_Initure.Mode=GPIO_MODE_INPUT;
- GPIO_Initure.Pull=GPIO_PULLUP;
- GPIO_Initure.Speed=GPIO_SPEED_HIGH;
- HAL_GPIO_Init(GPIOC,&GPIO_Initure);
之后使用HAL_GPIO_ReadPin函数读取引脚的电平就可以了。
如下是在例程中使用的宏定义。
- #define KEY0 HAL_GPIO_ReadPin(GPIOH,GPIO_PIN_3) //KEY0
- #define KEY1 HAL_GPIO_ReadPin(GPIOH,GPIO_PIN_2) //KEY1
- #define KEY2 HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13) //KEY2
- #define WK_UP HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)
还有一种是电容触摸按键。
其原理图如下:
其原理就是测量电容放电的时间。
如下是原子手册上的原理讲解的图片。
时间的测量使用的是定时2,具体的实现方法可以参考手册,通俗宜懂。
这种方法虽然看上去很高端,但是在代码实现上比较麻烦,不如轻触开关简单,另外在工业应用上似乎也是很少应用的。
就以电容按键来进行测试,将程序下载的开发板后,可以通过电容按键来控制DS0的状态,每按一次,DS0变化一次。