zoukankan      html  css  js  c++  java
  • [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.

  • 相关阅读:
    scrapy框架
    003-更改pip的源让下载安装更加快捷
    日志,序列反序列和正则表达式
    菜鸟的IT生活4
    IT菜鸟的3(for循环+分支语句)
    IT菜鸟的第2天(输入输出,数据类型,运算符的使用)
    IT菜鸟的第一天
    第二课笔记
    第一节课预习笔记
    第一节课作业
  • 原文地址:https://www.cnblogs.com/doitjust/p/13888697.html
Copyright © 2011-2022 走看看