比較現在時間與鬧鈴時間,相等時開啟鬧鈴開關(以LED代)。收到按鍵命令關閉時關閉鬧鈴開關(以LED代)。
結構體型態
typedef struct {
uint8_t* AlarmPort_p; /* Address of portto send Alarm*/
uint8_t AlarmMask; /* Mask of the flagsto control Alarm*/
uint8_t AlarmShift; /* Shift of flags tocontrol Alarm*/
uint8_t*ExCountIn_p; /*Front Task Execution Count*/
uint8_t ExCount;/*Task Execution Count*/
uint8_t*ExCountOut_p; /*Front Task Execution Count*/
uint8_tAlarmMinit;/*Alarm Minit Count*/
uint8_t*AlarmMinit_p;/* Alarm Minit IO pointer*/
uint8_tAlarmHour;/*Alarm Hour Count*/
uint8_t*AlarmHour_p;/*Minit Count IO pointer*/
uint8_t state; /* State Machine State 0 or 1 */
}AlarmCheckerStr_t;
佈局巨集
#defineALARMCHECKER_LAY(ALMCHKSTR, AlarmPortAdd, AlarmMask,AlarmShift)\
AlarmCheckerStr_t ALMCHKSTR={0};\
ALMCHKSTR.ExCountOut_p=&(ALMCHKSTR.ExCount);\
ALMCHKSTR.AlarmMinit_p=&(ALMCHKSTR.AlarmMinit );\ALMCHKSTR.AlarmHour_p=&(ALMCHKSTR.AlarmHour);\
ALMCHKSTR.AlarmPort_p=AlarmPortAdd;\
ALMCHKSTR.AlarmMask= AlarmMask;\
ALMCHKSTR.AlarmShift=AlarmShift;
呼叫範例:
ALARMCHECKER_LAY(AlarmChecker_str);
/*與前級 ClockCounter_str 串接 */
AlarmChecker_str.ExCountIn_p=ClockCounter_str.ExCountOut_p;
步級執行函式
AlarmChecker_step(void* VoidStr_p)簡介:當鬧鈴狀態未啟動,則執行本函式會比較目前時間及鬧鈴時間,吻合時切到啟動狀態並輸出啟動鬧鈴。
• 傳址參數及回傳: 同標準C4M-OS可排程工作方塊。
呼叫範例:
AlarmChecker_step((void*) &AlarmChecker_str);
受命執行調控函式
Void CloseAlarm(AlarmCheckerStr_t* Str_p)
簡介:被呼叫後會直接切到關閉狀態並輸出關閉鬧鈴,非步級函式不檢察前級執行與否。
傳址參數:
AlarmCheckerStr_t* Str_p:鬧鈴比較器結構體指標。
回傳: Void
呼叫範例:
CloseAlarm(AlarmCheckerStr_t &AlarmChecker_str);