/* * data_process.c * * Created on: 2018年7月5日 * Author: admin */#include "board_led.h"#include "board_uart.h"#include "data_process.h"// Task configuration#define LF_TASK_PRIORITY 1#define LF_TASK_STACK_SIZE 512// Task configurationTask_Struct lfTask;Char lfTaskStack[LF_TASK_STACK_SIZE];Event_Handle eventLedFickerHandle;/********************************************************************* * @fn LedFicker_createTask * * @brief Task creation function for the led ficker. * * @param None. * * @return None. */void LedFicker_createTask(void){ Task_Params taskParams; // Configure task Task_Params_init(&taskParams); taskParams.stack = lfTaskStack; taskParams.stackSize = LF_TASK_STACK_SIZE; taskParams.priority = LF_TASK_PRIORITY; Task_construct(&lfTask, LedFicker_taskFxn, &taskParams, NULL);}/********************************************************************* * @fn LedFicker_taskFxn * * @brief Application task entry point for the Led Ficker. * * @param a0, a1 - not used. * * @return None. */static void LedFicker_taskFxn(UArg a0, UArg a1){ /* LED 闪烁任务,默认200ms闪烁一次,可以通过事件通知的方式更改LED闪烁频率 */ uint32_t events; uint32_t timeoutInTicks = 200 * (1000/Clock_tickPeriod); Event_Params eventParams; Event_Struct structEvent; /* Memory allocated at build time */ Event_Params_init(&eventParams); Event_construct(&structEvent, &eventParams); /* It's optional to store the handle */ eventLedFickerHandle = Event_handle(&structEvent); if (eventLedFickerHandle == NULL) { /* PIN_open() failed */ bspDebugPrintf( true,"eventLedFickerHandle Init false.\r\n" ); while (1); } else { bspDebugPrintf( true,"eventLedFickerHandle Init ok.\r\n" ); } // Application main loop for (;;) { /* Wait for an event to be posted */ events = Event_pend(eventLedFickerHandle, Event_Id_NONE, LED_FICKER_OFF_EVT | LED_FICKER_100MS_EVT | LED_FICKER_1S_EVT, timeoutInTicks); //翻转LED灯 ledBoardToggle( ledBlueBoard ); ledBoardToggle( ledRedBoard ); if (events & LED_FICKER_OFF_EVT) { timeoutInTicks = BIOS_WAIT_FOREVER;/* 超时时间改为永久,这样就关闭了LED */ //关闭LED灯 ledBoardOff( ledBlueBoard ); ledBoardOff( ledRedBoard ); } if (events & LED_FICKER_100MS_EVT) { timeoutInTicks = 100 * (1000/Clock_tickPeriod);/* 超时时间改为100ms,这样LED就会100ms翻转一次 */ } if (events & LED_FICKER_1S_EVT) { timeoutInTicks = 1000 * (1000/Clock_tickPeriod);/* 超时时间改为1s,这样LED就会1s翻转一次 */ } }}void eventLedFicker_post( uint32_t event ){ if( eventLedFickerHandle ) Event_post(eventLedFickerHandle, event);}
/* * data_process.h * * Created on: 2018年7月5日 * Author: admin */#ifndef APPLICATION_DATA_PROCESS_H_#define APPLICATION_DATA_PROCESS_H_#include#include #include #include #define LED_FICKER_OFF_EVT Event_Id_00 /* led 闪烁关闭 */#define LED_FICKER_100MS_EVT Event_Id_01 /* led 100MS 闪烁一次 */#define LED_FICKER_1S_EVT Event_Id_02 /* led 1S 闪烁一次 */void LedFicker_createTask(void);static void LedFicker_taskFxn(UArg a0, UArg a1);void eventLedFicker_post( uint32_t event );#endif /* APPLICATION_DATA_PROCESS_H_ */