API函數
//建立OS_TMR *OSTmrCreate (INT32U dly, INT32U period, INT8U opt, OS_TMR_CALLBACK callback, void *callback_arg, INT8U *pname, INT8U *perr);//刪除BOOLEAN OSTmrDel (OS_TMR *ptmr, INT8U *perr);//定時器名字INT8U OSTmrNameGet (OS_TMR *ptmr, INT8U **pdest, INT8U *perr);//溢出時間INT32U OSTmrRemainGet (OS_TMR *ptmr, INT8U *perr);//定時器狀態INT8U OSTmrStateGet (OS_TMR *ptmr, INT8U *perr);//啟動BOOLEAN OSTmrStart (OS_TMR *ptmr, INT8U *perr);//關閉BOOLEAN OSTmrStop (OS_TMR *ptmr, INT8U opt, void *callback_arg, INT8U *perr);//發送訊號INT8U OSTmrSignal (void);
應用舉例
OS_TMR *tmr;void start_task(void *pdata){ OS_ENTER_CRITICAL(); tmr = OSTmrCreate ((INT32U )0, (INT32U )50, //50*100ms (INT8U )OS_TMR_OPT_PERIODIC, (OS_TMR_CALLBACK)tmr_callback, (void *)0, (INT8U *)"tmr", (INT8U *)&err); OS_EXIT_CRITICAL(); OSTmrStart(msg->tmr, &err);}void tmr_callback(void *ptmr, void *parg){ INT32U remain; remain = OSTmrRemainGet(ptmr, &err); if(remain <= 5) { printf("tmr_callback OSTmrRemainGet remain err: %d\r\n", remain); return; }}