一、资源
硬件:NRF52840蓝牙模块;
软件:SDK17.0.2中ble_central_and_periphera的lble_app_hrs_rscs_relay工程。
二、SDK配置
点击sdk_config.h文件,再点击Configuration Wizard
勾选nRF_Drivers中GPIOTE选项
保存,每改动一次sdk_config.h文件中的内容编译时需要花费比较长的时间。
三、代码编写
.c文件
/*********************************************************************
* INCLUDES
*/
#include "nrf_drv_gpiote.h"
#include "app_timer.h"
#include "app_error.h"
#include "board_gpi.h"
#include "nrf_log.h"
static void irqCallbackFunc(nrf_drv_gpiote_pin_t pin, nrf_gpiote_polarity_t action);
static void timer_irqDebounceCallback(void *arg);
static void timer_resetCallback(void *arg);
/*********************************************************************
* LOCAL VARIABLES
*/
APP_TIMER_DEF(s_longPressTimer); // 按键长按定时器
APP_TIMER_DEF(s_irqDebounceTimer); // 中断消抖的定时器
static uint8 s_irqValue; // 中断值
/*********************************************************************
* PUBLIC FUNCTIONS
*/
/**
@brief 按键中断初始化函数
@param 无
@return 无
*/
void Board_KeyInit(void)
{
ret_code_t errCode = nrf_drv_gpiote_init(); // GPIOE驱动初始化
APP_ERROR_CHECK<