📄 usbhost_main.c
字号:
/*
**************************************************************************************************************
* NXP USB Host Stack
*
* (c) Copyright 2008, NXP SemiConductors
* (c) Copyright 2008, OnChip Technologies LLC
* All Rights Reserved
*
* www.nxp.com
* www.onchiptech.com
*
* File : usbhost_main.c
* Programmer(s) : Ravikanth.P
* Version :
*
**************************************************************************************************************
*/
/*
**************************************************************************************************************
* INCLUDE HEADER FILES
**************************************************************************************************************
*/
#include "usbhost_main.h"
#include "ff.h"
/*
**************************************************************************************************************
* MAIN FUNCTION
*
* Description: This function is the main function where the execution begins
*
* Arguments : None
*
* Returns :
*
**************************************************************************************************************
*/
/* Private variables ---------------------------------------------------------*/
FATFS fs; /* Work area (file system object) for logical drive */
FIL fsrc; /* file objects */
FRESULT res;
UINT br;
char path[512]="0:";
uint8_t textFileBuffer[] = "Thank you for using HY-GoldBull V3.0 Development Board !^_^ \r\n";
/* Private function prototypes -----------------------------------------------*/
int SD_TotalSize(void);
FRESULT scan_files (char* path);
/*******************************************************************************
* Function Name : Delay
* Description : Delay Time
* Input : - nCount: Delay Time
* Output : None
* Return : None
* Attention : None
*******************************************************************************/
void Delay (uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
int main()
{
USB_INT32S rc;
SystemInit(); /* initialize clocks */
UART_Init(115200); /* Initialize the serial port to view the log messages */
PRINT_Log("*******************************************************************\r\n");
PRINT_Log("* *\r\n");
PRINT_Log("* Thank you for using HY-LandTiger V2.0 Development Board ! ^_^ *\r\n");
PRINT_Log("* *\r\n");
PRINT_Log("*******************************************************************\r\n");
Host_Init(); /* Initialize the lpc17xx host controller */
if( Host_EnumDev() == 0 ) /* Enumerate the device connected */
{
PRINT_Log("-- USB device detected OK \r\n");
}
else
{
PRINT_Log("-- Please connect a USB device \r\n");
while( Host_EnumDev() == 0 );
PRINT_Log("-- USB device connection detected \r\n");
Delay(0xffffff);
}
f_mount(0,&fs);
res = f_open( &fsrc , "0:/Demo.TXT" , FA_CREATE_NEW | FA_WRITE);
if ( res == FR_OK )
{
/* Write buffer to file */
res = f_write(&fsrc, textFileBuffer, sizeof(textFileBuffer), &br);
PRINT_Log("Demo.TXT successfully created \r\n");
/*close file */
f_close(&fsrc);
}
else if ( res == FR_EXIST )
{
PRINT_Log("Demo.TXT created in the disk \r\n");
}
scan_files(path);
SD_TotalSize();
while(1);
}
/*******************************************************************************
* Function Name : scan_files
* Description : 搜索文件目录下所有文件
* Input : - path: 根目录
* Output : None
* Return : FRESULT
* Attention : 不支持长文件名
*******************************************************************************/
FRESULT scan_files (char* path)
{
FILINFO fno;
DIR dir;
int i;
char *fn;
#if _USE_LFN
static char lfn[_MAX_LFN * (_DF1S ? 2 : 1) + 1];
fno.lfname = lfn;
fno.lfsize = sizeof(lfn);
#endif
res = f_opendir(&dir, path);
if (res == FR_OK) {
i = strlen(path);
for (;;) {
res = f_readdir(&dir, &fno);
if (res != FR_OK || fno.fname[0] == 0) break;
if (fno.fname[0] == '.') continue;
#if _USE_LFN
fn = *fno.lfname ? fno.lfname : fno.fname;
#else
fn = fno.fname;
#endif
if (fno.fattrib & AM_DIR) {
sprintf(&path[i], "/%s", fn);
res = scan_files(path);
if (res != FR_OK) break;
path[i] = 0;
} else {
PRINT_Log("%s/%s \r\n", path, fn);
}
}
}
return res;
}
/*******************************************************************************
* Function Name : SD_TotalSize
* Description : 文件空间占用情况
* Input : None
* Output : None
* Return : 返回1成功 返回0失败
* Attention : None
*******************************************************************************/
int SD_TotalSize(void)
{
FATFS *fs;
DWORD fre_clust;
res = f_getfree("0:", &fre_clust, &fs); /* 必须是根目录,选择磁盘0 */
if ( res==FR_OK )
{
/* Print free space in unit of MB (assuming 512 bytes/sector) */
PRINT_Log("\r\n%d MB total drive space.\r\n"
"%d MB available.\r\n",
( (fs->n_fatent - 2) * fs->csize ) / 2 /1024 , (fre_clust * fs->csize) / 2 /1024 );
return 0;
}
else
return -1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -