I am trying to implement a timer using nrf_drv_timer.h and nrf_timer.h, however, the handler never gets called.
I first create a timer, then define a timer handler and finally write the init function that also enables the timer.
static const nrf_drv_timer_t m_timer = NRF_DRV_TIMER_INSTANCE(0); static void timer_handler(nrf_timer_event_t event_type, void * p_context) { __LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "In timer handler\n"); } typedef enum { APP_SIMPLE_TIMER_MODE_SINGLE_SHOT, /**< The timer will expire only once. */ APP_SIMPLE_TIMER_MODE_REPEATED /**< The timer will restart each time it expires. */ } app_simple_timer_mode_t; void timer_init(void) { ret_code_t err_code; nrf_drv_timer_config_t timer_cfg = NRF_DRV_TIMER_DEFAULT_CONFIG; timer_cfg.bit_width = NRF_TIMER_BIT_WIDTH_32; timer_cfg.mode = NRF_TIMER_MODE_TIMER; /// timer_cfg.frequency = (nrf_timer_frequency_t)4; err_code = nrf_drv_timer_init(&m_timer, &timer_cfg, timer_handler); APP_ERROR_CHECK(err_code); if (NRF_SUCCESS == err_code) { __LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "SUCCESS\n"); } else { __LOG(LOG_SRC_APP, LOG_LEVEL_INFO, "NO\n"); } /* setup m_timer for compare event every 400ms */ uint32_t ticks = nrf_drv_timer_ms_to_ticks(&m_timer, 400); nrf_drv_timer_extended_compare(&m_timer, NRF_TIMER_CC_CHANNEL0, ticks, NRF_TIMER_SHORT_COMPARE0_CLEAR_MASK, true); nrf_drv_timer_enable(&m_timer); }
Any suggestions?