標籤:freertos
根據上一篇添加完成後,下面就是添加一個自己的命令列。其實添加一個命令列格式很簡單,就是按照demo中的資料格式添加一個結構體,然後在註冊函數中註冊就可以使用了。
第一步:添加自己的結構體
/* The structure that defines command line commands. A command line command should be defined by declaring a const structure of this type. */typedef struct xCOMMAND_LINE_INPUT{ const char * const pcCommand; /* The command that causes pxCommandInterpreter to be executed. For example "help". Must be all lower case. */ const char * const pcHelpString; /* String that describes how to use the command. Should start with the command itself, and end with "\r\n". For example "help: Returns a list of all the commands\r\n". */ const pdCOMMAND_LINE_CALLBACK pxCommandInterpreter;/* A pointer to the callback function that will return the output generated by the command. */ int8_t cExpectedNumberOfParameters; /* Commands expect a fixed number of parameters, which may be zero. */} CLI_Command_Definition_t;
參考實際格式:
/* Structure that defines the "task-stats" command line command. This generatesa table that gives information on each task in the system. */static const CLI_Command_Definition_t xTaskStats ={ "task-stats", /* The command string to type. */ "\r\ntask-stats:\r\n Displays a table showing the state of each FreeRTOS task\r\n", prvTaskStatsCommand, /* The function to run. */ 0 /* No parameters are expected. */};
於是按葫蘆畫瓢自己寫一個自己的命令“whatbook”吧!如下:
static const CLI_Command_Definition_t xWhatbook ={ "whatbook", "\r\nwhatbook:\r\n Displays a string "I Love ZML!"\r\n", prvWhatbookCommand, /* The function to run. */ 0 /* No parameters are expected. */};
第二步:實現上面資料結構後,然後寫資料結構中的回呼函數。
static BaseType_t prvWhatbookCommand( char *pcWriteBuffer, size_t xWriteBufferLen, const char *pcCommandString ){ BaseType_t xReturn; /* Remove compile time warnings about unused parameters, and check the write buffer is not NULL. NOTE - for simplicity, this example assumes the write buffer length is adequate, so does not check for buffer overflows. */ ( void ) pcCommandString; ( void ) xWriteBufferLen; configASSERT( pcWriteBuffer ); /* The first time the function is called after the command has been entered just a header string is returned. */ sprintf( pcWriteBuffer, "I Love ZML!!!\r\n" ); xReturn = pdFALSE; return xReturn;}
第三步:註冊資料結構。
FreeRTOS_CLIRegisterCommand( &xWhatbook );
至此,就完成了一個命令whatbook的實現。在串口工具輸入whatbook,就返回如下列印資訊:
>
I Love ZML!!!
[Press ENTER to execute the previous command again]
>
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
如何在FreeRTOS-Plus-CLI中添加一個自己的命令列