I use the scheduler. All my idea is put an event in interrupt handler(timer event, gpiote event and so on) and schedule it to main loop to let app_sched_execute to handle it. But today I found the app_timer_stop and app_timer_start is called in the interrupt context. I do not use scheduler for app_timer.