一直在找关于shell相关工具,没找到合适的,要不就是需要和操作系统配合的,要不就是移植说明不清晰的。最近发现这r_micro_shell,开源地址:https://gitee.com/nrush/nr_micro_shell.git;既能和操作系统配合也能裸机运行,现在将移植做记录;
将开源工程下载之后,打开文件夹,其中readme.md有关于移植的说明,examples中有使用PC模拟工程,采用gcc 编译即可;在移植过程中只需要实现两个宏定义即可,在nr_micro_shell_config.h中的144行的shell_printf(可以直接使用串口打印函数),145行的ansi_show_char(x)为发送单个字节,如图1所示:
图一 移植修改点
后续在主程序中调用初始化函数shell_init;就完成了初始化,然后对串口数据进行解析,解析函数为shell(c),如果使用串口接收完成中断接收数据,则在每次接收数据之后调用该函数即可,如果采用串口空闲中断加DMA方式接收数据,可参考图2:
图2 数据解析
其中rx_update表示已经接收新的数据标志位,UART4_DMA_buff为DMA接收数据缓存,rx_cnt表示本次接收数据的长度;
添加用户命令用于解析,参见nr_micro_shell_commands文件中提供示例,完整代码参考链接:
https://download.csdn.net/download/ad596142041/18278848