我的第一篇技術性文章。
stack timer的使用過程:
1 初始化timer
stack_timer_struct *timer_adcsche;
stack_init_timer(timer_adcsche, "ADC Sche Timer", MOD_BMT);//初始化,三個參數分別爲timer id,timer name和MODULE id
event_scheduler *adc_sche_event_scheduler_ptr;
adc_sche_event_scheduler_ptr = new_evshed(timer_adcsche,
adc_sche_start_base_timer,
adc_sche_stop_base_timer,
0 , kal_evshed_get_mem, kal_evshed_free_mem, 255);
//創建一個event scheduler,六個參數分別爲初始化中已經初始化好的timer id,Start timer函數,stop timer函數,無符號的int數(還不知道有什麼用,在這裏爲0),分配內存的函數,釋放內存的函數,最後是delay time,最大可延遲時間,這個表示timer的準確度,這個參數的作用主要是用於節省電池。。
adc_sche_set_timer_page_align(KAL_TRUE);//This function is to set up timer as page align or not.猜測align應該爲alignment.設定是否爲alignment timer,即是否對timer進行調整,如果傳入kal_ture,會調用evshed_set_aligned_timer(void *timer_id, kal_uint8 max_delay);其中的timer id是全局變量。
2set timer
MeasParameter adc_parameters[MAX_CHANNEL];
void adc_sche_set_timer(kal_uint8 adc_sche_id, kal_uint32 tick, kal_timer_func_ptr call_func)
{
adc_parameters[adc_sche_id].adc_sche_event_id = evshed_set_event(adc_sche_event_scheduler_ptr,
(kal_timer_func_ptr)call_func, &adc_parameters[adc_sche_id], tick);
//4個參數分別爲在初始化中new_evshed創建的adc_sche_event_scheduler_ptr,timer超時後的回調函數,回調函數的參數,最後一個是elapse time,一般設爲1
}
上面是mmi timer的基礎