⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 app.c

📁 AT91SAM7X256微处理器
💻 C
📖 第 1 页 / 共 2 页
字号:
                                                /* Create start task                                   */
    OSTaskCreateExt(AppTaskStart,
                    NULL,
                    (OS_STK *)&AppTaskStartStk[APP_TASK_START_STK_SIZE - 1],
                    APP_TASK_START_PRIO,
                    APP_TASK_START_PRIO,
                    (OS_STK *)&AppTaskStartStk[0],
                    APP_TASK_START_STK_SIZE,
                    NULL,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);

                      
      #if OS_TASK_NAME_SIZE > 11
          OSTaskNameSet(APP_TASK_START_PRIO, "Start Task", &err);
      #endif

    
        
          OSStart();                                  /* Start uC/OS-II                                      */
}



/*
*********************************************************************************************************
*                                     uC/OS-View TERMINAL WINDOW CALLBACK
*********************************************************************************************************
*/

#if OS_VIEW_MODULE > 0
static  void  AppTerminalRx (CPU_INT08U rx_data)
{
}
#endif


/*
*********************************************************************************************************
*                                      AppInit_OSView()
*
* Description : This function is called by AppTaskStart() and is responsible for initializing uC/OSView
*
*********************************************************************************************************
*/

#if OS_VIEW_MODULE > 0
static void AppInit_OSView (void)
{
    OSView_Init(38400);
    OSView_TerminalRxSetCallback(AppTerminalRx);
    OSView_RxIntEn();
}
#endif

/*
*********************************************************************************************************
*                                      AppInit_TCPIP()
*
* Description : This function is called by AppTaskStart() and is responsible for initializing uC/TCP-IP
*               uC/HTTPs, uC/TFTPs and uC/DHCPc if enabled.
*
*********************************************************************************************************
*/

static void AppInit_TCPIP (void)
{
   NET_ERR  err;
#if EMAC_CFG_MAC_ADDR_SEL == EMAC_CFG_MAC_ADDR_SEL_CFG
    NetIF_MAC_Addr[0] = 0x00;
    NetIF_MAC_Addr[1] = 0x50;
    NetIF_MAC_Addr[2] = 0xC2;
    NetIF_MAC_Addr[3] = 0x25;
    NetIF_MAC_Addr[4] = 0x60;
    NetIF_MAC_Addr[5] = 0x01;
#endif

    err = Net_Init();                               /* Initialize uC/TCP-IP                            */
                
              
    ip      = NetASCII_Str_to_IP("202.38.215.187",  &err);
    msk     = NetASCII_Str_to_IP("255.255.255.0", &err);
    gateway = NetASCII_Str_to_IP("202.38.215.186",   &err);

    err     = NetIP_CfgAddrThisHost(ip, msk);
    err     = NetIP_CfgAddrDfltGateway(gateway);
    
  
#if uC_HTTPs_MODULE > 0
    //HTTPs_Init();                                   /* Initialize uC/HTTPs                             */
#endif

#if uC_TFTP_MODULE > 0
    //TFTPs_Init(OS_TICKS_PER_SEC);                   /* Initialize the uC/TFTPs                         */
#endif

}
/*$PAGE*/
/*
*********************************************************************************************************
*                                              STARTUP TASK
*
* Description : This is an example of a startup task.  As mentioned in the book's text, you MUST
*               initialize the ticker only once multitasking has started.
* Arguments   : p_arg is the argument passed to 'AppStartTask()' by 'OSTaskCreate()'.
* Notes       : 1) The first line of code is used to prevent a compiler warning because 'p_arg' is not
*                  used.  The compiler should not generate any code for this statement.
*               2) Interrupts are enabled once the task start because the I-bit of the CCR register was
*                  set to 0 by 'OSTaskCreate()'.
*********************************************************************************************************
*/

static  void  AppTaskStart (void *p_arg)
{
      CPU_INT08S i;

      (void)p_arg;                                    /* Prevent compiler warning                        */
      //初始化参数
      BSP_Init();    
      FS_Init();                                      //文件系统初始化
      Init_DBGU();                                   /*初始化调试串口*/
      AT91F_USB_Open();                             //初始化USB为CDC                                   /* Initialize the BSP          */
      
      #if OS_VIEW_MODULE > 0
          AppInit_OSView();                         /* Initialize uC/OSView                            */
      #endif
      
          
          
      #if uC_TCPIP_MODULE > 0
          AppInit_TCPIP();                          /* Initialize uC/TCP-IP and associated appliations */
      #endif
      
          LED_Off(0);                               /* Turn on ALL the LEDs                            */
  
      #if OS_TASK_STAT_EN > 0
          OSStatInit();                             /* Start stats task                                */
      #endif
          
         TaskStartCreateTasks();                    //创建任务
         
         
        while (DEF_TRUE)
        {                              /* Task body, always written as an infinite loop.  */
                  
            for ( i=0 ; i < 16 ; i=i+1 )
            {
              LED_On_number(i);
              OSTimeDlyHMSM(0, 0, 1, 0);
              LED_Off_number(i);
              //OSTimeDlyHMSM(0, 0, 1, 0);
           }            
           for ( i=16 ; i > 0 ; i=i-1 )
            {
              LED_On_number(i);
              OSTimeDlyHMSM(0, 0, 1, 0);
              LED_Off_number(i);
              //OSTimeDlyHMSM(0, 0, 1, 0);
           }       
        }
}
/*
********************************************************************
创建军任务
********************************************************************
*/
static  void  TaskStartCreateTasks (void)
{
   CPU_INT08U      err;
  
    OSTaskCreateExt(FSTask,       //创建文件系统任务
                    NULL,
                    (OS_STK *)&FSTaskStk[FS_TASK_SIZE - 1],
                    FS_TASK_PRIO,
                    FS_TASK_PRIO,
                    (OS_STK *)&FSTaskStk[0],
                    FS_TASK_SIZE,
                    NULL,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
     OSTaskCreateExt(USBCDCTask,       //创建USB_CDC任务
                    NULL,
                    (OS_STK *)&USBCDCTaskStk[USB_CDC_TASK_SIZE-1],
                    USB_CDC_TASK_PRIO,
                    USB_CDC_TASK_PRIO,
                    (OS_STK *)&USBCDCTaskStk[0],
                    USB_CDC_TASK_SIZE,
                    NULL,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
     
     
#if uC_TCPIP_MODULE > 0
    OSTaskCreateExt(AppTaskPhy,
                    (void *)0,
                    (OS_STK *)&AppTaskPhyStk[APP_TASK_PHY_STK_SIZE - 1],
                    APP_TASK_PHY_PRIO,
                    APP_TASK_PHY_PRIO,
                    (OS_STK *)&AppTaskPhyStk[0],
                    APP_TASK_PHY_STK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
#if OS_TASK_NAME_SIZE > 11
    OSTaskNameSet(APP_TASK_PHY_PRIO, "PHY Status", &err);
#endif
#endif
    
    
    OSTaskCreateExt(ADCTask,       //创建adc任务
                    NULL,
                    (OS_STK *)&ADCTaskStk[ADC_TASK_SIZE-1],
                    ADC_TASK_PRIO,
                    ADC_TASK_PRIO,
                    (OS_STK *)&ADCTaskStk[0],
                    ADC_TASK_SIZE,
                    NULL,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR);
                                                       
}
/*********************************************************************
*
*             文件系统任务
*/

static void FSTask(void *arg)
{
        int x;
        
             
        for(;;)
         {
                      /* format your RAM disk */
                      x = FS_IoCtl("ram:",FS_CMD_FORMAT_MEDIA,FS_MEDIA_RAM_16KB,0);
                      if (x!=0) {
                        _error("Cannot format RAM disk.\n");
                      }
            
                      /* create file 'default.txt' on your default device */
                      _write_file("default.txt",dev_default_msg);
                    
                      /* create file 'ram.txt' on your RAM disk */
                      _write_file("ram:\\ram.txt",dev_ram_msg);
                    
                      /* dump file 'default.txt' on you default device */
                      _dump_file("default.txt");
                    
                      /* dump file 'ram.txt' on you default RAM disk */
                      _dump_file("ram:\\ram.txt");
                    
                    #if FS_POSIX_DIR_SUPPORT
                      /* show root directory of default device */
                      _show_directory("");
                    
                      /* show root directory of RAM disk */
                      _show_directory("ram:");
                    #endif /* FS_POSIX_DIR_SUPPORT */
                    
                      /* display disk space information of the default device */
                      _show_free("");
                    
                      /* display disk space information of the RAM disk */
                      _show_free("ram:");
                    
                      OSTimeDly(10);
         }
}

/*******************************************************************************************
USB_CDC任务
********************************************************************************************/
static  void  USBCDCTask(void *arg)
{
       for(;;)
       {
             usb_c_irq_handle();
             OSTimeDlyHMSM(0, 0, 0,50 );
       }
}
/*******************************************************************************************
ADC任务
********************************************************************************************/
static  void  ADCTask(void *arg)
{
    
    
       for(;;)
       {
             
             OSTimeDlyHMSM(0, 0, 1,50 );
       }
}

/*
*********************************************************************************************************
*                                         PHY STATUS TASK
*
* Description : This task monitors the link state and updates the NetNIC_ConnStatus.
*
* Arguments   : p_arg   is the argument passed to 'AppTaskPhy()' by 'OSTaskCreate()'.
*
* Returns     : none
*********************************************************************************************************
*/

static  void  AppTaskPhy (void *p_arg)
{
    (void)p_arg;

    while (DEF_TRUE) {                                          /* Task body, always written as an infinite loop.           */

        OSTimeDlyHMSM(0, 0, 1, 0);

        NetNIC_ConnStatus = NetNIC_PhyLinkState2();              /* Set NetNIC_ConnStatus according to link state            */

        if (NetNIC_ConnStatus == DEF_ON) {
            NetNIC_LinkUp();
        } else {
            NetNIC_LinkDown();
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -