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.       */
    }
}
Exemplo n.º 2
0
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);
        
    }
}
Exemplo n.º 3
0
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();
    
}
Exemplo n.º 4
0
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 ; 
                            } 
                

                        }                              
                }                    
Exemplo n.º 5
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;
            }
        }
    }
}