我是靠谱客的博主 贪玩蓝天,最近开发中收集的这篇文章主要介绍nrf52832之定时器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

带协议栈

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之定时器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部