📄 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 */
OS_STK TaskFileStk[512];
/*********************************************************************************************************
** 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;
}
#define N 1024
INT8U GcWritFileData[N];
INT8U GcReadFileData[N];
INT8U GcStr[] = "USB OTG---Designed by ZLGMCU\r\n";
/*********************************************************************************************************
** Function name: TASK0
** Descriptions: None
** input parameters: None
** output parameters: None
*********************************************************************************************************/
void TASK0 (void *pdata)
{
char cBuf1[4];
char cBuf[40];
char cStrBuf[28];
HANDLE FHandle;
uint32 j, uiLen1;
INT8U ucErr;
pdata = pdata;
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;
#endif
TargetInit();
PINSEL7 = PINSEL7 & ~(0x03 << 28); /* 峰鸣器端口设置 */
FIO3DIR |= 1 << 30;
FIO3SET = 1 << 30;
ramdiskFormat(); /* 大容量类存储器格式化 */
ucErr = otgInit(2, 3, 4);
if (ucErr != TRUE) {
while (1);
}
OSTaskCreate(OSFileTask, (void *)0, &TaskFileStk[511], 5);
OSTimeDly(1);
strcpy(cBuf1, "rw");
while (otgGetCurRole() != OTG_ROLE_HOST) { /* 等待当前角色为主机 */
OSTimeDly(10);
}
j = 0;
while (!otgIsDeviceReady()) { /* 等待枚举完设备 */
OSTimeDly(10);
if (j++ > 200) {
j = 0;
USBDEBUG_SENDSTR("\r\nwait device ready...\r\n");
}
}
OSAddFileDriver(usbCammand); /* 增加ATA设备0 */
for (j = 0; j < N; j++) {
GcWritFileData[j] = GcStr[j % (sizeof(GcStr) - 1)];
}
sprintf(cBuf, "a:\\OTG.txt");
FHandle = OSFileOpen(cBuf, cBuf1); /* 打开文件 */
if (FHandle == 0xFF) {
UART0_SendStr("\r\n\tOSFileOpen failed!\r\n");
}
OSFileSeek(FHandle, 0, SEEK_END); /* 文件指针移到文件末尾 */
uiLen1 = OSFileWrite(GcWritFileData, sizeof(GcWritFileData), FHandle);
/* 写入文件 */
OSFileClose(FHandle);
if (uiLen1 > 0) {
OSAllCacheWriteBack();
}
if (uiLen1 >= sizeof(GcWritFileData)) { /* 写文件成功 */
sprintf(cStrBuf, "\r\nWritefile sucess!");
UART0_SendStr(cStrBuf);
} else {
UART0_SendStr("\r\nWrite file failed!\r\n");
}
FHandle = OSFileOpen(cBuf, cBuf1); /* 打开文件 */
if (FHandle == 0xFF) {
UART0_SendStr("\r\n\tOSFileOpen failed!\r\n");
}
OSFileSeek(FHandle, 0, SEEK_SET); /* 文件指针移到文件头部 */
uiLen1 = OSFileRead(GcReadFileData, sizeof(GcReadFileData), FHandle);
/* 读出文件 */
OSFileClose(FHandle);
if (uiLen1 >= sizeof(GcReadFileData)) { /* 读文件成功 */
sprintf(cStrBuf, "\r\nReadfile sucess");
UART0_SendStr(cStrBuf);
} else {
UART0_SendStr("\r\nRead file failed!\r\n");
}
if (memcmp(GcReadFileData, GcWritFileData, N)) {
UART0_SendStr("\r\nVerify file failed!\r\n");
} else {
UART0_SendStr("\r\nVerify file sucessed!\r\n");
}
OSTimeDly(100);
OSRemoveFileDriver(0); /* 移除设备 */
OSTimeDly(5);
if (otgGetDeviceAB() == OTG_DEVICE_A) { /* 当前设备为A设备 */
otgHNPStart(); /* 启动HNP,切换主从机角色 */
} else {
ucErr = otgRetControlToA(); /* 否则为B设备,归还总线控制权 */
if (ucErr == TRUE) {
FIO3CLR = 1 << 30;
OSTimeDly(200);
FIO3SET = 1 << 30;
}
}
while (1) {
OSTimeDly(50);
}
}
/*********************************************************************************************************
END FILE
*********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -