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

📄 main.c

📁 SmartARM2400系列开发板全套资料
💻 C
字号:
/****************************************Copyright (c)****************************************************
**                         Guangzhou ZHIYUAN electronics Co.,LTD.                               
**                                     
**                               http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**--------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
*********************************************************************************************************/
#include "main.h"

/*********************************************************************************************************
  TASK0 任务ID、优先级、堆栈设置及函数声明                                
*********************************************************************************************************/
#define TASK0_ID            11                                          /* 任务的ID                     */
#define TASK0_PRIO          TASK0_ID                                    /* 任务的优先级                 */
#define TASK0_STACK_SIZE    512                                         /* 定义用户堆栈长度             */
OS_STK  TASK0_STACK[TASK0_STACK_SIZE];                                  /* 定义任务0 堆栈               */
void    TASK0(void *pdata);                                             /* 声明任务0                    */


/*********************************************************************************************************
** Function name:       main
** Descriptions:        主函数
** Input parameters:    None
** output parameters:   None
** Created Date:        
*********************************************************************************************************/
int main (void)
{
	OSInit(); 
    OSTaskCreateExt(TASK0,
                    (void *)0,
                    &TASK0_STACK[TASK0_STACK_SIZE-1],
                    TASK0_PRIO,
                    TASK0_ID,
                    &TASK0_STACK[0],
                    TASK0_STACK_SIZE,
                    (void *)0,
                    OS_TASK_OPT_STK_CHK | OS_TASK_OPT_STK_CLR); 
    OSStart();    
    return 0;                                   
}

/*********************************************************************************************************
** Function name: EnumSucessCallBack
** Descriptions:  设备断开连接回调函数
** Input:         无
** Output:        无 
*********************************************************************************************************/
void EnumSucessCallBack (void)
{
    UART0_SendStr("\r\nHello, Enum is Success\r\n");
}

/*********************************************************************************************************
** Function name: DevDisconCallBack
** Descriptions:  设备断开连接回调函数
** Input:         无
** Output:        无 
*********************************************************************************************************/
void DevDisconCallBack (void)
{
    UART0_SendStr("\r\nHello, device is disconnect\r\n");
}

#define START_ADDR              1000                                    /*  读写块的起始地址            */
#define DATA_N		            (1024 * 1024)                             /*  读写数据长度(字节数)        */
INT8U GucUsbData[DATA_N];                                               /*  读写缓冲区                  */
/*********************************************************************************************************
** Function name:       TASK0
** Descriptions:        None
** input parameters:    None
** output parameters:   None
*********************************************************************************************************/
void TASK0 (void *pdata)
{
    INT8U  ucRet;
    uint32 i, uiLen;
    char   strBuf[40];

	pdata = pdata;	    
    TargetInit();      

    /*  
     *  初始化USB HOST              
     */
    ucRet = usbHostInitialize(4, 5, EnumSucessCallBack, DevDisconCallBack);
    if (ucRet != TRUE) {
        while (1);
    }
    while (!usbIsDeviceReady()) {                                       /*  等待枚举完设备              */
        OSTimeDly(100);
    }
    
    ucRet = msHostInit(0);	                                            /*  大容量类设备初始化          */
    if (ucRet != MS_ERR_SUCESS) {
        sprintf(strBuf, "\r\n!!msInit failed: 0x%-X\r\n", ucRet);
        UART0_SendStr(strBuf);
        while (1);
    } else {
        UART0_SendStr("\r\nmsHostInit sucess!\r\n");
    }
    
    for (i = 0; i < DATA_N; i++) {                                      /*  初始化待写入的数据缓冲区    */
        GucUsbData[i] = (INT8U)((i + 1) & 0xff);
    }
    
    uiLen = DATA_N / 512;                                               /*  计算块总数                  */
    ucRet = rbcWrite10(0, 0, START_ADDR, uiLen, GucUsbData);            /*  将数据写入大容量类设备中    */
    if (ucRet != MS_ERR_SUCESS) {
        sprintf(strBuf, "\r\n!!read failed!: ErrorCode : 0x%-X\r\n", ucRet);
        UART0_SendStr(strBuf);
    } else {
        UART0_SendStr("\r\nrbcWrite10 sucess!\r\n");
    }
    
    ucRet = rbcRead10(0, 0, START_ADDR, uiLen, GucUsbData);             /*  从大容量类设备中读出数据    */
    if (ucRet != MS_ERR_SUCESS) {
        sprintf(strBuf, "\r\n!!read failed!: ErrorCode : 0x%-X\r\n", ucRet);
        UART0_SendStr(strBuf);
    } else {
        UART0_SendStr("\r\nrbcRead10 sucess!\r\n");
    }
    
    for (i = 0; i < uiLen * 512; i++) {                                 /*  校验数据                    */
        if (GucUsbData[i] != (INT8U)((i + 1) & 0xff)) {
            UART0_SendStr("\r\n校验 NOT OK!\r\n");
            break;
        }
    }
     
    if (i >= uiLen * 512) {
        UART0_SendStr("\r\n校验 OK!\r\n");
    }
    
   	while(1) {	
		OSTimeDly(OS_TICKS_PER_SEC);
	}
}

/*********************************************************************************************************
  END FILE
*********************************************************************************************************/

⌨️ 快捷键说明

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