LiteOS 入门学习笔记 - STM32增加reboot Shell命令

环境

系统版本:LiteOS Kernel Version : 5.1.0

硬件:STM32F103VE开发板

开发IDE:HUAWEI-LiteOS-Studio

 

需求

LiteOS支持Shell,用户可以自己定义Shell 命令。

LiteOS Shell使用文档地址:https://gitee.com/LiteOS/LiteOS/blob/master/shell/README_CN.md

 

需求:增加自定义的shell命令,我增加:【reboot】重启命令

 

操作方法

通过看文档,增加Shell命令的方法,有两种,静态与动态,这里使用动态的方式,增加代码如下:

修改:targets\STM32F103_FIRE_Arbitrary\Src\user_task.c

 

增加Shell 头文件:

#include "shell.h"
#include "shcmd.h"
#define SCB_AIRCR       (*(volatile unsigned long *)0xE000ED0C)  /* Reset control Address Register */
#define SCB_RESET_VALUE 0x05FA0004  /* Reset value, write to SCB_AIRCR can reset cpu */

INT32 sys_reboot(INT32 argc, const CHAR **argv)
{
    if (argc == 0) {
        SCB_AIRCR = SCB_RESET_VALUE;
        return 0;
    }
    PRINTK("Reboot: invalid option %s\n"
           "Reboot has NO ARGS.\n",
           argv[0]);
    return -1;
}

void UserShellCmdInit(void)
{
    osCmdReg(CMD_TYPE_EX, "reboot", 0,(CMD_CBK_FUNC)sys_reboot);
}

修改:app_init

VOID app_init(VOID)
{
    printf("Hello, welcome to liteos!\n");
    LedTaskCreate();
#ifdef LOSCFG_SHELL
    (VOID)ShellQueueCreat();
    if (OsShellInit(0) != LOS_OK) {
        PRINT_ERR("Shell init failed.\n");
    }
#endif
    UserShellCmdInit();
    DemoEntry();
}

 

编译下载运行

 

********Hello Huawei LiteOS********

LiteOS Kernel Version : 5.1.0
build data : Jun 13 2021 11:59:52

**********************************
OsAppInit
cpu 0 entering scheduler
Hello, welcome to liteos!

Huawei LiteOS # Hello, welcome to liteos demo!

Huawei LiteOS # help
*******************shell commands:*************************

date          free          help          hwi           memcheck      reboot        swtmr         systeminfo    
task          uname         watch         

Huawei LiteOS # reboot

********Hello Huawei LiteOS********

LiteOS Kernel Version : 5.1.0
build data : Jun 13 2021 11:59:52

**********************************
OsAppInit
cpu 0 entering scheduler
Hello, welcome to liteos!

Huawei LiteOS # Hello, welcome to liteos demo!

Huawei LiteOS # 

通过串口shell,输入help,发现有了自己的命令:reboot,运行后,系统可以争的复位。

 

总结

后期可以根据需要,增加用户的命令,方便开发与调试。

静态初始化与动态初始化,其实功能差不多。

如果增加shell命令后,提示shell未初始化,需要手动初始化shell cmd

#ifdef LOSCFG_SHELL
    (VOID)ShellQueueCreat();
    if (OsShellInit(0) != LOS_OK) {
        PRINT_ERR("Shell init failed.\n");
    }
#endif

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangsz_sh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值