static void AppTaskStart (void *p_arg) { OS_ERR os_err; (void)p_arg; CPU_Init(); /* Initialize the uC/CPU Services. */ Mem_Init(); /* Initialize the Memory Management Module */ Math_Init(); /* Initialize the Mathematical Module */ BSP_Ser_Init(115200u); OSTaskCreate(&TaskRedTCB, /* Create the red task */ "App Task Red", AppTaskRed, 0u, APP_CFG_TASK_START_PRIO, &TaskRedStk[0u], (APP_CFG_TASK_START_STK_SIZE / 10u), APP_CFG_TASK_START_STK_SIZE, 0u, 0u, 0u, (OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR | OS_OPT_TASK_SAVE_FP), &os_err); OSTaskCreate(&TaskGreenTCB, /* Create the green task */ "App Task Green", AppTaskGreen, 0u, APP_CFG_TASK_START_PRIO, &TaskGreenStk[0u], (APP_CFG_TASK_START_STK_SIZE / 10u), APP_CFG_TASK_START_STK_SIZE, 0u, 0u, 0u, (OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR | OS_OPT_TASK_SAVE_FP), &os_err); while (DEF_TRUE) { /* Task body, always written as an infinite loop. */ } }
static void AppTaskStart (void *p_arg) { OS_ERR err; CPU_ERR cpu_err; uint32_t value; static uint32_t pulse_flag = 0; CPU_TS64 before, after; char tmp[80]; (void)p_arg; CPU_Init(); Mem_Init(); Math_Init(); BSP_Ser_Init(115200u); while (DEF_ON) { GPIO_DRV_TogglePinOutput( outPTB23 ); value = GPIO_DRV_ReadPinInput( inPTB9 ); if( value ){ if(pulse_flag == 0) before = CPU_TS_Get64(); // in cpu_cfg.h must set: #define CPU_CFG_TS_64_EN DEF_ENABLED pulse_flag = 1; GPIO_DRV_ClearPinOutput( BOARD_GPIO_LED_BLUE ); } else{ GPIO_DRV_SetPinOutput( BOARD_GPIO_LED_BLUE ); if(pulse_flag == 1) { after = CPU_TS_Get64(); // see comment above sprintf( tmp, "Elapsed time in Task R = %f s\n\r", (float)((1.0*(after-before))/CPU_TS_TmrFreqGet( &cpu_err )) ); APP_TRACE_DBG(( tmp )); } pulse_flag = 0; } OSTimeDlyHMSM(0u, 0u, 0u, 200u, OS_OPT_TIME_HMSM_STRICT, &err); } }
static void AppTaskStart (void *p_arg) { CPU_INT32U cpu_clk_freq; CPU_INT32U cnts; OS_ERR err; (void)p_arg; BSP_Init(); /* Initialize BSP functions */ CPU_Init(); cpu_clk_freq = BSP_CPU_ClkFreq(); cnts = cpu_clk_freq / (CPU_INT32U)OSCfg_TickRate_Hz;/* Determine nbr SysTick increments */ OS_CPU_SysTickInit(cnts); /* Init uC/OS periodic time src (SysTick). */ #if OS_CFG_STAT_TASK_EN > 0u OSStatTaskCPUUsageInit(&err); /* Compute CPU capacity with no task running */ #endif CPU_IntDisMeasMaxCurReset(); //init USART1 BSP_Ser_Init(9600); BSP_Ser_WrStr("start"); //init ADC1, ACC sensor TERM_init_adc(); //init PWM TERM_init_pwm(); //AppTaskCreate(); /* Create application tasks */ TERM_createTask(); }
void App_TaskUserIF (void *p_arg) { CPU_INT32U *msg; CPU_INT08U err; CPU_INT32U key_state; CPU_INT08U ruler_id; (void)p_arg; OSTimeDly(500); //wait for other tasks be ready , and time for power stable for ruler Head_Info(); //Send header Ruler_Power_Switch(1); Init_Global_Var(); AB_POST(); #ifndef BOARD_TYPE_AB01 APP_TRACE_INFO_T(("WARNING: NOT AB01, NO MCU CRT UART SWITCH\r\n")); #endif while ( DEF_TRUE ) { /* Task body, always written as an infinite loop. */ msg = (CPU_INT32U *)(OSMboxPend(App_UserIF_Mbox, 0, &err)); //pending, no timeout if (msg != NULL) { key_state = *msg ; APP_TRACE_INFO(("\r\n")); switch( key_state & MSG_TYPE_MASK ) { case MSG_TYPE_RESET : //reset send msg //PDM_Pattern_Gen(0); //gen cp2240 pattern Head_Info(); break; case MSG_TYPE_SWITCH ://Switch APP_TRACE_INFO_T(("Switch status updated: SW[1..0] = [%d, %d]\r\n",\ (key_state>>0)&(0x01),(key_state>>1)&(0x01) )); /**********************************************************************/ //To do something to do with Switch selection... // Switch 'SW0' used to control DEBUG port: // 0: ON : UART1 used as debug port // 1: OFF: DBG UART used as debug port if( (key_state>>(8 + 1)) & 0x01) { //check if SW0 switch status changed OSTaskDel( APP_CFG_TASK_SHELL_PRIO ); OSSemSet (Bsp_Ser_Tx_Sem_lock, 1, &err) ; OSSemSet (Bsp_Ser_Rx_Sem_lock, 1, &err) ; Task_ReCreate_Shell(); if( ((key_state>>1)& 0x01 ) == 0 ) { //debug to UART1 Debug_COM_Sel = 1 ; BSP_Ser_Init(115200); } else { //debug to DBG_UART Debug_COM_Sel = 0 ; UART_Init(PC_UART, ISR_PC_UART, 115200 ); //To PC ? Sem recreat issue } } // // Switch 'SW1' used to control Buzzer mute: // // 0: ON : Buzzer muted // // 1: OFF: Buzzer unmuted // if( (key_state>>(8 + 0)) & 0x01) { //check if SW1 switch status changed // if( ((key_state>>0)& 0x01 ) == 0 ) { // BUZZER_MUTE = 1; //mute buzzer // } else { // BUZZER_MUTE = 0; //unmute buzzer // } // } // Switch 'SW1' used to control CODEC LOUT PGA Gain: // 0: ON : 24dB attenuated signal for Phone MIC input // 1: OFF: Normal signal for ACQUA if( (key_state>>(8 + 0)) & 0x01) { //check if SW1 switch status changed if( ((key_state>>0)& 0x01 ) == 0 ) { err = CODEC_LOUT_Small_Gain_En( true ) ; //enable 24dB attenuated signal for Phone Mic } else { err = CODEC_LOUT_Small_Gain_En( false ) ; //normal signal, no attenuation } if( OS_ERR_NONE != err ) { APP_TRACE_INFO_T(("ERR: Set CODEC_LOUT_Small_Gain_En err! [%d]\r\n",err)); } } break; case MSG_TYPE_PORT_DET : if( port_enable == false ) { //APP_TRACE_INFO(("Ruler port disabled !\r\n")); break; } APP_TRACE_INFO_T(("Ruler port status changed: Port[3..0] = [%1d%1d%1d%1d] ",\ (key_state>>0)&(0x01),(key_state>>1)&(0x01),(key_state>>2)&(0x01),(key_state>>3)&(0x01) )); for( ruler_id = 0 ; ruler_id < 4 ; ruler_id++ ) { if( (key_state>>( 8 + 3 - ruler_id)) & 0x01) { //check if Ruler Port[0] switch status changed if( ( (key_state>>(3 - ruler_id)) & 0x01 ) == 0 ) { // ruler attached, setup ruler //LED_Set( LED_P0 + ruler_id ); APP_TRACE_INFO_T(("Ruler[%d] Attached.\r\n", ruler_id )); Global_Ruler_State[ruler_id] = RULER_STATE_ATTACHED; err = Init_Ruler( ruler_id ); if( OS_ERR_NONE != err ) { //LED_Clear( LED_P0 + ruler_id ); continue; } err = Setup_Ruler( ruler_id ); if( OS_ERR_NONE != err ) { //LED_Clear( LED_P0 + ruler_id ); continue; } //// err = Ruler_Setup_Sync( ruler_id ); //// if( OS_ERR_NONE != err ) { //// //LED_Clear( LED_P0 + ruler_id ); //// continue; //// } err = Get_Ruler_Type( ruler_id ); if( OS_ERR_NONE != err ) { //LED_Clear( LED_P0 + ruler_id ); continue; } err = Get_Ruler_Version( ruler_id ); if( OS_ERR_NONE != err ) { //LED_Clear( LED_P0 + ruler_id ); continue; } err = Ruler_POST( ruler_id ); if( OS_ERR_NONE != err ) { //LED_Clear( LED_P0 + ruler_id ); continue; } Global_Ruler_State[ruler_id] = RULER_STATE_CONFIGURED ; // mic_mask = Global_Mic_Mask[ruler_id]; // err = Update_Mic_Mask( ruler_id, mic_mask ); // if( OS_ERR_NONE != err ) { // continue; // } // if( mic_mask ) { // Global_Ruler_State[ruler_id]= RULER_STATE_SELECTED; // } //OSTimeDly(500); //simple_test_use();//test for Dr.Yang and use USBApp0815.exe } else { // ruler detached //LED_Clear( LED_P0 + ruler_id ); APP_TRACE_INFO_T(("Ruler[%d] Detached.\r\n", ruler_id )); Global_Ruler_State[ruler_id] = RULER_STATE_DETACHED ; Global_Ruler_Type[ruler_id] = 0 ; Global_Mic_Mask[ruler_id] = 0 ; } } }
static void AppTaskStart (void *p_arg) { CPU_INT08U seq; OS_ERR err; #if (APP_CFG_TCPIP_MODULE_EN > 0u) NET_ERR net_err; #endif (void)&p_arg; BSP_Init(); /* Initialize BSP functions */ CPU_Init(); /* Initialize the uC/CPU services */ OS_CPU_TickInit(); /* Init uC/OS periodic time src (SysTick). */ BSP_Ser_Init(BSP_CFG_SER_BAUDRATE); #if (OS_CFG_STAT_TASK_EN > 0u) OSStatTaskCPUUsageInit(&err); /* Compute CPU capacity with no task running */ #endif Mem_Init(); /* Initialize mem mgmt module, required for TCP-IP. */ BSP_GraphLCD_Init(); AppGraphLCD_Hdr(); #if (APP_CFG_FS_EN > 0u) App_FS_Init(); #endif #if (APP_CFG_TCPIP_MODULE_EN > 0u) AppTCPIP_Init(&net_err); /* Initialize uC/TCP-IP & associated applications. */ if ((net_err == NET_ERR_NONE) || (net_err == NET_IF_ERR_LINK_DOWN)) { AppTCPIP_Cfg = DEF_TRUE; } #if (APP_CFG_TFTPs_MODULE_EN > 0u) TFTPs_Init(); #endif AppCloud_Init(1); #else AppTCPIP_Cfg = DEF_TRUE; #endif #if OS_CFG_SCHED_ROUND_ROBIN_EN > 0u OSSchedRoundRobinCfg(DEF_ENABLED, 5, &err); #endif #if (APP_CFG_AUDIO_EN > 0u) AppAudio_Init(); #endif #ifdef CPU_CFG_INT_DIS_MEAS_EN CPU_IntDisMeasMaxCurReset(); #endif seq = 0; LED_Off(0); /* turn all LEDs off */ while (DEF_ON) { /* Task body, always written as an infinite loop. */ if (AppTCPIP_Cfg == DEF_FALSE) { LED_Toggle(14); /* simple LED flash */ LED_Toggle( 5); LED_Toggle( 8); LED_Toggle(11); OSTimeDlyHMSM(0u, 0u, 0u, 100u, OS_OPT_TIME_HMSM_STRICT, &err); } else { switch (seq){ case 0: LEDDisplay_Seq0(); seq++; break; case 1: LEDDisplay_Seq1(); seq++; break; case 2: LEDDisplay_Seq2(); seq++; break; case 3: LEDDisplay_Seq3(); seq = 0; break; default: seq = 0; break; } } } }