📄 main.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 + -