赞
踩
1.1 软件平台:sdk14.2
1.2 硬件平台: nrf52832
说明:
只是介绍代码怎么使用,直接点
QQ: 1297311998 ,如果有什么问题,请高手不吝赐教
static uint8_t key_timeout_enable = 0; APP_TIMER_DEF(check_key_timer); static void check_key_timeout(void * p_context) { key_timeout_enable = 1; } // 初始化按键检测定时器 void init_check_key_timer(void) { ret_code_t err_code; err_code = app_timer_create(&check_key_timer, APP_TIMER_MODE_SINGLE_SHOT, check_key_timeout); APP_ERROR_CHECK(err_code); } /***************************************************** *function : start_key_timer *****************************************************/ void start_check_key_timer(uint8_t type) { ret_code_t err_code; if(type == true) { err_code = app_timer_start(check_key_timer, APP_TIMER_TICKS(500), NULL); APP_ERROR_CHECK(err_code); } else if(type == false) { app_timer_stop(check_key_timer); } }
#define keyPin 26 // 按键 io /*****************pin io gpiote*****************************/ void pin_hand(nrf_drv_gpiote_pin_t pin_no, nrf_gpiote_polarity_t action) { if(nrf_gpio_pin_read(keyPin)==0) { // 中断进来-----执行用户函数 start_check_key_timer(true); } } /********************************************** *funtion :key_ledInit *description : init led and key; key use gpiote driver **********************************************/ void key_ledInit(void) { // clear gpiote if (!nrf_drv_gpiote_is_init()) { nrf_drv_gpiote_init(); } nrf_drv_gpiote_in_config_t config = GPIOTE_CONFIG_IN_SENSE_TOGGLE(false); config.pull = NRF_GPIO_PIN_PULLUP, config.sense = NRF_GPIOTE_POLARITY_HITOLO; nrf_drv_gpiote_in_init(keyPin,&config,pin_hand); nrf_drv_gpiote_in_event_enable(keyPin,true); }
按键检测函数,放在mian 函数while
void check_device_key(void) { static uint8_t key_Valid = false; if(key_timeout_enable==0) return; key_timeout_enable = 0; BLE_RTT("key_time_count %d\r\n",key_time_count); if(0==nrf_gpio_pin_read(KEY_PIN)) { key_Valid = true; } else { key_time_count = 0; key_Valid = false; } if(key_Valid == true) // °´¼ü»¹ÔÚ { if(++key_time_count>=long_key_time) // long key { key_Valid = false; key_pressed_count = 0; key_time_count = 0; start_check_key_timer(false); BLE_RTT("device long key %d\r\n",long_key_enable) } } else //if(key_time_count<=short_key_time)// short key { key_pressed_count = 0; key_time_count = 0; start_check_key_timer(false); BLE_RTT("device short_key %d\r\n",short_key); key_Valid = false; } }
可以加入QQ群:687360507
与大伙沟通交流,技术在于分享而进步
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。