static void ButtonTask_Init(uint8 btnindex,const char *channelname,uint16 channel,uint8 *fn) { static char buf1[20]; static char buf2[20]; if(btnindex>=CHANNEL) return; if(!fn) return; TBUTTON *btn; btn=&tbtn[btnindex]; btn->channelname=channelname; btn->channel=channel; btn->count=0; btn->latchcount=0; btn->logicout=0; btn->state=0; btn->toggle=0; btn->latchtoggle=0; btn->fnPhy=(uint8(*)(uint16))fn; sprintf(buf1,"Button%s",channelname); TaskAdd(&btntask[btnindex],buf1,1,ButtonTask_1ms,btn); sprintf(buf2,"%sCheck",buf1); TaskAdd(&printtask[btnindex],buf2,10,Button_PrintPolling,btn); }
//end Application Layer //------------------------------------------------------------------------------------------------ //Middle Layer static void LEDTask_Init(TLED *ledptr,uint16 channel,uint8 mode,void *fn) { if(!ledptr) return; ledptr->count=0; ledptr->mode=mode; ledptr->channel=channel; ledptr->toggle=0; ledptr->fnPhy=(void(*)(uint16,uint8))fn; switch(channel) { case GPIO_Pin_8: TaskAdd(&taskled[0],"LEDPC8",100,LEDTask_100ms,ledptr); break; case GPIO_Pin_9: TaskAdd(&taskled[1],"LEDPC9",100,LEDTask_100ms,ledptr); break; } }
/*********************************************************************************************************************** Function: SrvThreadBody Description: Called By: Input: Output: Return: Others: ************************************************************************************************************************/ S32 CNetServer::SrvThreadBody() { ASSERT(NULL != m_pSock); ASSERT(NULL != m_pThreadPool); Socket_t sHandle; while (true) { sHandle = m_pSock->Accept(); if (SOCK_HANDLE_OK(sHandle)) { TaskAdd(sHandle); } } return MW_SUCC; }
/******************************************************************************* * @function_name: Init_Adc * @function_file: Drv_Adc.c * @描述:初始化ADC配置 * @入口参数: powerOn 1-on 0-off * @出口参数: 无 *--------------------------------------------------------- * @修改人: ffq (2013-10-09) ******************************************************************************/ void DRV_ADC_Init(uint8 powerOn) { //温度采样电路电源控制IO,其它在AD中初始化 IO_DisableFunc(IO_PORT4,IO_PINxE); IO_ConfigGPIOPin(IO_PORT4,IO_PINxE,IO_DIR_OUTPUT,IO_PULLUP_OFF); IO_EnableAnalogInput(IO_AN00); //TEMP IO_EnableAnalogInput(IO_AN01); // TEMP_A IO_EnableAnalogInput(IO_AN02); //V_1.8V IO_EnableAnalogInput(IO_AN03);//V_CHK IO_EnableAnalogInput(IO_AN04);//BATCHK /*------------------- Global setting -----------------------*/ /* Set sample time */ ADC12_SelSampleTimeReg(ADC12_UNIT0, ADC12_CH0, ADC12_SAMPLE_TIME_SEL_REG0); ADC12_SelSampleTimeReg(ADC12_UNIT0, ADC12_CH1, ADC12_SAMPLE_TIME_SEL_REG0); ADC12_SelSampleTimeReg(ADC12_UNIT0, ADC12_CH2, ADC12_SAMPLE_TIME_SEL_REG0); ADC12_SelSampleTimeReg(ADC12_UNIT0, ADC12_CH3, ADC12_SAMPLE_TIME_SEL_REG0); ADC12_SelSampleTimeReg(ADC12_UNIT0, ADC12_CH4, ADC12_SAMPLE_TIME_SEL_REG0); ADC12_SetSampleTime0(ADC12_UNIT0, 9, ADC12_SAMPLE_TIME_N4); /* Set compare time */ ADC12_SetCompareTime(ADC12_UNIT0, 2); /* Start ADC operation */ ADC12_EnableOpt(ADC12_UNIT0); while(SET != ADC12_GetOptStat(ADC12_UNIT0)); /*------------------- Scan mode setting -----------------------*/ /* Select channel */ ADC12_SelScanCh(ADC12_UNIT0, ((1ul<<ADC12_CH0) | (1ul<<ADC12_CH1) | (1ul<<ADC12_CH2) | (1ul<<ADC12_CH3) | (1ul<<ADC12_CH4))); /* Clear FIFO */ ADC12_ClrScanFIFO(ADC12_UNIT0); /* Set FIFO stage */ ADC12_SetScanFIFOStage(ADC12_UNIT0, (ADC12_ScanFIFOStageT)(USER_ADC_SCAN_CH_NUM-1)); /* Set Scan mode */ ADC12_SetScanMode(ADC12_UNIT0 , ADC12_SCAN_MODE_ONE_SHOT); /* Enable scan interrupt */ ADC12_EnableScanInt(ADC12_UNIT0, ScanIntCallback); /* Enable ADC IRQ */ NVIC_EnableIRQ((IRQn_Type)(ADC0_IRQn + (ADC12_UNIT0-ADC12_UNIT0))); /* Start scan */ //ADC12_StartScan(ADC12_UNIT0); //连续采样5次,填充滤波缓存。 DRV_ADC_On(); DRV_ADC_StartTask(); while(RESET != ADC12_GetScanStatusFlag(ADC12_UNIT0)); DRV_ADC_StartTask(); while(RESET != ADC12_GetScanStatusFlag(ADC12_UNIT0)); DRV_ADC_StartTask(); while(RESET != ADC12_GetScanStatusFlag(ADC12_UNIT0)); DRV_ADC_StartTask(); while(RESET != ADC12_GetScanStatusFlag(ADC12_UNIT0)); DRV_ADC_StartTask(); while(RESET != ADC12_GetScanStatusFlag(ADC12_UNIT0)); DRV_ADC_Off(); if(powerOn) { DRV_ADC_On(); //定时1s采样 //TempNTCPower(OFF); TaskAdd(DRV_ADC_StartTask, 0, 100, 1); } else { DRV_ADC_Off(); } }