APP_timer(软件定时器移植)
1.添加库文件Libraries和驱动文件
2.修改SDK_config.h
3.在keil里面定义全局宏
4.添加lfclk初始化
/**
* @brief Function for starting lfclk needed by APP_TIMER.
*/
static void lfclk_init(void)
{
uint32_t err_code;
err_code = nrf_drv_clock_init();
APP_ERROR_CHECK(err_code);
nrf_drv_clock_lfclk_request(NULL);
}
代码使用
1.包含头文件
#include "app_timer.h"
2.定义一个定时器实例
APP_TIMER_DEF(s_testTimer); // 定义软件定时器实例
5.函数
#include "app_timer.h"
APP_TIMER_DEF(s_testTimer); // 定义软件定时器实例
lfclk_init(); //lfclk初始化
ret_code_t app_timer_init(void); //soft timer初始化
/**@brief Timer modes. */
typedef enum
{
APP_TIMER_MODE_SINGLE_SHOT, /**< The timer will expire only once. */
APP_TIMER_MODE_REPEATED /**< The timer will restart each time it expires. */
} app_timer_mode_t;
/*
创建一个软件定时器
参数:
p_timer_id: 软件定时器实例
mode: 模式,单次还是循环周期
timeout_handler: 超时回调函数
*/
ret_code_t app_timer_create(app_timer_id_t const * p_timer_id,
app_timer_mode_t mode,
app_timer_timeout_handler_t timeout_handler);
/*
开启软件定时器
参数:
p_timer_id: 软件定时器实例
timeout_ticks: 超时时间
p_context: 设置为NULL
*/
ret_code_t app_timer_start(app_timer_id_t timer_id, uint32_t timeout_ticks, void * p_context);
//停止软件定时器
ret_code_t app_timer_stop(app_timer_id_t timer_id);