hello,
I need microsecond timer interrupts in my program, so I thought of using the TIMER of the hal library.
When I enable CONFIG_NRFX_TIMER0=y in prj.conf, the system starts up with an error.
When I enable CONFIG_NRFX_TIMER1=y, the system starts up normally without errors, but timer_event_handler does not execute normally.
#define TIMER_INST_IDX 1 static const nrfx_timer_t timer_inst = NRFX_TIMER_INSTANCE(TIMER_INST_IDX); static void timer_handler(nrf_timer_event_t event_type, void * p_context) { if(event_type == NRF_TIMER_EVENT_COMPARE0) { LOG_INF("NRF_TIMER_EVENT_COMPARE0"); ........ } } void timer_init(void) { IRQ_DIRECT_CONNECT(NRFX_IRQ_NUMBER_GET(NRF_TIMER_INST_GET(TIMER_INST_IDX)), IRQ_PRIO_LOWEST, NRFX_TIMER_INST_HANDLER_GET(TIMER_INST_IDX), 0); nrfx_err_t err; nrfx_timer_config_t config = NRFX_TIMER_DEFAULT_CONFIG(NRFX_MHZ_TO_HZ(16UL)); config.bit_width = NRF_TIMER_BIT_WIDTH_32; err = nrfx_timer_init(&timer_inst, &config, timer_handler); if (err != NRFX_SUCCESS) { LOG_ERR("Failed nrfx_timer_init, error: 0x%08X", err); return ; } nrfx_timer_clear(&timer_inst); uint32_t time_ms = 500; uint32_t desired_ticks = nrfx_timer_ms_to_ticks(&timer_inst, time_ms); nrfx_timer_extended_compare(&timer_inst, NRF_TIMER_CC_CHANNEL0, desired_ticks, NRF_TIMER_SHORT_COMPARE0_CLEAR_MASK, true); nrfx_timer_enable(&timer_inst); NRFX_LOG_INFO("Timer status: %s", nrfx_timer_is_enabled(&timer_inst) ? "enabled" : "disabled"); }
When I add timer1-okay in the .overlay file, Cmake compilation fails
&timer1 { status = "okay"; };
I don't know what hardware Zephyr and OpenThread occupy, can you explain it?
Regards,