This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

main endless loop Timer Problem

i am running this code on my nrf.

const nrf_drv_timer_t TIMER_LED = NRF_DRV_TIMER_INSTANCE(0);


uint8_t flag;

/**
 * @brief Handler for timer events.
 */
void timer_led_event_handler(nrf_timer_event_t event_type, void* p_context)
{
    //static uint32_t i;
    //uint32_t led_to_invert = (1 << leds_list[(i++) % LEDS_NUMBER]);
    
    switch(event_type)
    {
        case NRF_TIMER_EVENT_COMPARE0:
            //LEDS_INVERT(led_to_invert);
				nrf_gpio_pin_clear(LED_1);
				flag = 1;
				
            break;
        
        default:
            //Do nothing.
		
            break;
    }    
}


/**
 * @brief Function for main application entry.
 */
int main(void)
{
	flag=0;

    uint32_t time_ms = 3000; //Time(in miliseconds) between consecutive compare events.
    uint32_t time_ticks;
    //uint32_t err_code = NRF_SUCCESS;
    
    //Configure all leds on board.
    LEDS_CONFIGURE(LEDS_MASK);
    LEDS_OFF(LEDS_MASK);
    
    //Configure TIMER_LED for generating simple light effect 
    nrf_drv_timer_init(&TIMER_LED, NULL, timer_led_event_handler);
    
    time_ticks = nrf_drv_timer_ms_to_ticks(&TIMER_LED, time_ms);
    
    nrf_drv_timer_extended_compare(
         &TIMER_LED, NRF_TIMER_CC_CHANNEL0, time_ticks, NRF_TIMER_SHORT_COMPARE0_CLEAR_MASK, true);
    
    nrf_drv_timer_enable(&TIMER_LED);
	while(1)
	{}
}

Why there is a need of while loop at the end without it my timer never starts