/** * @copyright 2015 Indie Semiconductor. * * This file is proprietary to Indie Semiconductor. * All rights reserved. Reproduction or distribution, in whole * or in part, is forbidden except by express written permission * of Indie Semiconductor. * * @file measureTask.c * @Author: Jack.Pan * @E-mail:jack.pan@indiemicro.com * @Date: 2020/09/10 */ #include #include static TaskState_t adcTaskState = TASK_STATE_INIT; static volatile uint32_t measStart = 0U; void measureDoneISR(ADCMeasureParam_t item, uint16_t *const result); void measureParamInit(void); void updateTimerExpired(SoftTimer_t *timer); static volatile uint32_t adcConvertDone = 0U; static SoftTimer_t updateTimer = { .mode = TIMER_PERIODIC_MODE, .interval = 50U, .handler = updateTimerExpired }; void updateTimerExpired(SoftTimer_t *timer) { TM_PostTask(TASK_ID_ADC_MEASURE); } extern uint16_t g_AdVal[3]; void measureDoneISR(ADCMeasureParam_t param, uint16_t *const result) { measStart = 1U; TM_PostTask(TASK_ID_ADC_MEASURE); g_AdVal[0] = result[3]; g_AdVal[1] = result[2]; } void MES_TaskHandler(void) { switch(adcTaskState){ case TASK_STATE_INIT: measureParamInit(); ADC_GeneralInit();/* init ADC */ ADC_RegisterIRQ(measureDoneISR); /* start updating timer */ SoftTimer_Start(&updateTimer); adcTaskState = TASK_STATE_ACTIVE; break; case TASK_STATE_ACTIVE: break; default: break; } } void measureParamInit(void) { }