本帖最后由 chenwei6991627 于 2016-6-15 13:47 编辑
键盘输入响应
按键的输入其实就是对 GPIO 口进行操作。 同时引入了中断的概念。实际上按键控制分为两种情况, 第一种是按键扫描, 这种情况下, CPU 需要不停的工作, 来判断 GPIO口是否被拉低或者置高,效率是比较低的。另一种方式为中断控制,中断控制的效率很高,一旦系统 IO 口出现上升沿或者下降沿电平就会触发执行中断内的程序。 在
nRF51822 内普通 IO 管脚设置成为 GPIO,中断和任务管脚设置称为 GPIOTE。
SW1 和 SW2 分别和 P0.16 和 P0.17 两个 IO 管脚相连。当 IO 管脚为低的时候可以判断管脚已经按下。通过 key 的按下来控制 led 的亮灭。硬件上设计是比较简单的。
软件中主要是要编写key.c和main函数
#include "key.h"
void KEY_Init(void)
{
nrf_gpio_cfg_input(16,NRF_GPIO_PIN_PULLUP);//
nrf_gpio_cfg_input(17,NRF_GPIO_PIN_PULLUP);
}
uint8_t KEY1_Down(void)
{
if( nrf_gpio_pin_read(BUTTON_0)== 0 )
{
nrf_delay_ms(10);
if(nrf_gpio_pin_read(BUTTON_0)== 0 )
{
while(nrf_gpio_pin_read(BUTTON_0)== 0 );
return 0 ;
}
else
return 1;
}
else
return 1;
}
初始主要配置IO为输入,检测函数主要是完成低电平检测,延时延时去抖,确认按键的输入。
看实物的调试:
QQ562463654 |