help命令
//这个函数实现了“帮助”命令。打印简要介绍可用的命令列表。
int
Cmd_help(int argc, char *argv[])
{
tCmdLineEntry *pEntry;
UARTprintf("\nAvailable commands\n");
UARTprintf("------------------\n");
//打印一些标题文件
pEntry = &g_sCmdTable[0];
//指向命令表的起始处。
// Enter a loop to read each entry from the command table. The
// end of the table has been reached when the command name is NULL.
//
while(pEntry->pcCmd)
{
//进入一个循环来读取命令表的每一项,当命令名字为“NULL”时,表示读取结束。
UARTprintf("%s%s\n", pEntry->pcCmd, pEntry->pcHelp);
//打印命令名和详细的描述。
pEntry++;
//自加,进入到表的下一项
}
return(0);
//返回成功
}
tCmdLineEntry g_sCmdTable[] =
{
{ "help", Cmd_help, " : Display list of commands" },
{ "h", Cmd_help, " : alias for help" },
{ "?", Cmd_help, " : alias for help" },
{ "ls", Cmd_ls, " : Display list of files" },
{ "chdir", Cmd_cd, ": Change directory" },
{ "cd", Cmd_cd, " : alias for chdir" },
{ "pwd", Cmd_pwd, " : Show current working directory" },
{ "cat", Cmd_cat, " : Show contents of a text file" },
{ 0, 0, 0 }
};
//这是一张表,用来保存命令行的名字,以及实现的功能和详细介绍。
好,下面就是main函数了。
程序先贴出来:
int
main(void)
{
int nStatus;
FRESULT fresult;
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC |
SYSCTL_XTAL_8MHZ | SYSCTL_OSC_MAIN);
//设置系统时钟工作在主振荡器的8 MHZ下
SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
//打开外设
SysTickPeriodSet(SysCtlClockGet() / 100);
SysTickEnable();
SysTickIntEnable();
//配置100Hz的时钟中断,FatFs需要一个10ms的计时器。
IntMasterEnable();
//打开中断
GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
//设置GPIO的A端口的0,1号引脚为UART。
UARTStdioInit(0);
//初始化UART为文本控制台的输入输出。
UARTprintf("\n\nSD Card Example Program\n");
UARTprintf("Type \'help\' for help.\n");
//打印一个交互界面给用户。
fresult = f_mount(0, &g_sFatFs);
if(fresult != FR_OK)
{ //挂载文件系统,使用逻辑磁盘0
UARTprintf("f_mount error: %s\n", StringFromFresult(fresult));
return(1);
}
while(1)
{
//进入一个无限循环来读取用户的读取以及操作命令
UARTprintf("\n%s> ", g_cCwdBuf);
//打印一个提示到控制台,显示当前工作路径
UARTgets(g_cCmdBuf, sizeof(g_cCmdBuf));
//获取来自用户的文本行
nStatus = CmdLineProcess(g_cCmdBuf);
//从用户那传递命令行给处理器进行解析和执行
if(nStatus == CMDLINE_BAD_CMD)
{
UARTprintf("Bad command!\n");
}
//处理错误的命令
else if(nStatus == CMDLINE_TOO_MANY_ARGS)
{
UARTprintf("Too many arguments for command processor!\n");
}
//处理参数太多的问题。
else if(nStatus != 0)
{
//如果命令没什么问题就被执行,如果命令有问题,就打印错误提示。
UARTprintf("Command returned error code %s\n",
StringFromFresult((FRESULT)nStatus));
}
}
}
之后要做的事情是对文件系统移植的步骤进行总结~