腾讯 tiny os shell移植

默认你已经调通tos,如果没有请移步官网
准备好要移植的文件
腾讯 tiny os shell移植_第1张图片
腾讯 tiny os shell移植_第2张图片
需要把shell文件夹下c和h文件加入到工程中(不会的请自行搜索)
因为是需要串口进行接收,需要用过平台调用st的库

调用
调用
shell框架
platform/hal/stm32xxx.c
我们自己cube生成的usart

腾讯 tiny os shell移植_第3张图片
如图,是将串口抽象的方式,就是上层和下层映射的关系。非常好理解。
腾讯 tiny os shell移植_第4张图片
串口接收中断回调函数,接收是一个字节一个字节接收的,所以实现就是先进先出队列,接收一个压入队列,满了时候就抛弃数据。取数据就直接取多少多少字节,非常普通的串口接收不定长数据的实现方式。接收中断所以需要第一次开启接收中断,我们只需要在初始化时调用一下void HAL_UART_RxCpltCallback(&huart2)即可。
我们的平台是F205,因为hal文件夹中没有我们的文件所以直接从F1中拷贝了一份
腾讯 tiny os shell移植_第5张图片
腾讯 tiny os shell移植_第6张图片
头文件修改所需要的,串口数量映射一下(函数在usart文件找),初始化几个串口就映射几个,不需要的就直接注释就好了
我试了许久也可腾讯大佬交流了,我这种大部分是没问题的。
注意:串口助手
腾讯 tiny os shell移植_第7张图片
绝对不可以在输入框输入\r\n和回车,使用要使用软件的回车和换行!!!不然会没反应。
腾讯 tiny os shell移植_第8张图片
腾讯 tiny os shell移植_第9张图片
只需要编写自己的需要的命令就可以了,这里就很简单了。

__STATIC__ int cmd_reboot(int argc, char *argv[])
{
    tos_shell_printf("reboot:\n");
    
    tos_task_delay(500);
    tos_shell_printf("..");
    
    tos_task_delay(500);
    tos_shell_printf("..");
    
    HAL_NVIC_SystemReset();
    
    return 0;
}

__STATIC__ const shell_cmd_t custom_shell_cmds0[] = {
    { "reboot",     cmd_reboot,     "reboot mcu" },
    { "test01",     cmd_test01,     "test01 cmd" },
    { K_NULL,       K_NULL,         K_NULL  }, /* never forget this!!!*/
};

可配置宏定义等如下

腾讯 tiny os shell移植_第10张图片
腾讯 tiny os shell移植_第11张图片

支持设置参数

腾讯 tiny os shell移植_第12张图片
比如输入参数:reboot空格123456\r\n
argv[0]=reboot
argv[1]=123456
argc 是表示几个输入参数,argv[0]是每个参数的指针,指向参数

实验结果

腾讯 tiny os shell移植_第13张图片

你可能感兴趣的:(Tencentos,STM32,shell)