硬件电路
实现功能
触摸按键按下时,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.