[nRF51822]5.触摸按键

硬件电路

实现功能

触摸按键按下时,LED1点亮;触摸按键松开后,LED1亮熄灭

JR223B是电容式单键触摸按键芯片,当手指与触摸焊接触时,感应到微小电荷来判断手指接近或触摸按键焊盘。其灵敏度可通过电容C9来调节。

当无按键触摸是,P030输出低电平;当按下触摸按键时,P030输出高电平。

设置P0.21为输出,初始为高电平,熄灭LED1;

设置P0.30为下拉输入,读取其电平状态,当为高点时,控制LED1亮;

在if判断中,点亮LED1后增加500ms延时,然后控制LED1熄灭,实现按键松开,最后执行LED1熄灭动作。点亮LED1,延时,熄灭LED1,即使循环这个过程,人眼不会感受到LED1熄灭后再被点亮,看起来的现象是:触摸按键按下,LED1点亮;触摸按键松开,LED1熄灭

代码

main.c

#include "nrf_delay.h"
#include "nrf_gpio.h"

#define TOUCH    30                       /* P0.30连接触摸按键响应引脚 */
#define LED_1    21                        /* P0.21 连接LED1 */
int main(void)
{
    nrf_gpio_cfg_output(LED_1);            //配置单个引脚模式为输出
    
    nrf_gpio_pin_set(LED_1);            //熄灭LED1
    
    nrf_gpio_cfg_input(TOUCH,NRF_GPIO_PIN_PULLDOWN);    //设置引脚下拉
    
    while(1)
    {
        if(nrf_gpio_pin_read(TOUCH) == 1)
        {
            nrf_gpio_pin_clear(LED_1);    //点亮LED1
            
            nrf_delay_ms(500);
            
            nrf_gpio_pin_set(LED_1);    //熄灭LED1
        }
    }
}

知识点

void nrf_gpio_cfg_output(uint32_t pin_number)

  配置单个GPIO为输出

void nrf_gpio_pin_set(uint32_t pin_number)

  设置单个输出GPIO输出高电平

void nrf_gpio_pin_clear(uint32_t pin_number)

  设置单个输出GPIO输出低电平

void nrf_gpio_cfg_input(uint32_t pin_number, nrf_gpio_pin_pull_t pull_config)

  配置单个GPIO为输入模式,并指定上下拉模式,上下拉参数在nrf_gpio.h中有宏定义。

uint32_t nrf_gpio_pin_read(uint32_t pin_number)

  读取输入GPIO的状态,高电平返回1,低电平返回0.

原文地址:https://www.cnblogs.com/doitjust/p/13888697.html