概述
带协议栈
APP_TIMER_DEF(led_timer_id); //定义句柄
//定时器触发回调
static void led_callback(void * p_context)
{
printf("testrn");
}
app_timer_init();
app_timer_create(&led_timer_id, APP_TIMER_MODE_REPEATED, led_callback);
app_timer_start(led_timer_id, APP_TIMER_TICKS(5000), NULL);
不带协议栈
协议栈已经使用timer0,所以不能使用timer0,会报无效地址访问错误
在sdk_config.h,勾选nRF_Drivers/TIMER_ENABLED,再勾选TIMER1(NRFX_TIMER勾选无效)
const nrfx_timer_t timer_instance = NRFX_TIMER_INSTANCE(1);
void timer_event_handle(nrf_timer_event_t event_type, void* p_context) //定时器事件回调函数
{
switch (event_type)
{
case NRF_TIMER_EVENT_COMPARE0://定时器0事件
g_counter++;
int32_t temp = 0;
sd_temp_get(&temp);
temp >>= 2;
printf("counter=%d, %drn", g_counter, temp);
break;
default:
break;
}
}
void timer_init_local(void)
{
uint32_t err = NRF_SUCCESS;
uint32_t timer_ms = 1000;
uint32_t timer_ticks;
//可以在sdkconfig.h文件中修改默认配置(16M,32bit, priority:6,无参数,mode:timer)
nrfx_timer_config_t timer_cfg = NRFX_TIMER_DEFAULT_CONFIG; //定义一个定时器结构体,默认配置
err = nrfx_timer_init(&timer_instance, &timer_cfg, timer_event_handle); //初始化定时器,注册回调函数
APP_ERROR_CHECK(err);
timer_ticks = nrfx_timer_ms_to_ticks(&timer_instance,timer_ms); //计算1000ms占用几个tick
nrfx_timer_extended_compare(&timer_instance, NRF_TIMER_CC_CHANNEL0, timer_ticks, NRF_TIMER_SHORT_COMPARE0_CLEAR_MASK,true); //定时器0比较通道溢出清0
}
最后
以上就是贪玩蓝天为你收集整理的nrf52832之定时器的全部内容,希望文章能够帮你解决nrf52832之定时器所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复