nrf52832之定时器

带协议栈

APP_TIMER_DEF(led_timer_id);   //定义句柄

//定时器触发回调
static void led_callback(void * p_context)
{
    printf("test\r\n");
}


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, %d\r\n", 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
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值