1 创建空白文件夹,使用vscode创建工程框架

2 prj.conf
CONFIG_SHELL=y
CONFIG_SHELL_BACKEND_SERIAL=y
# 串口控制台、日志
CONFIG_CONSOLE=y
CONFIG_LOG=y
CONFIG_UART_CONSOLE=y
CONFIG_SERIAL=y
CONFIG_LOG_DEFAULT_LEVEL=3
# shell 增强(tab补全、历史命令、命令别名)
CONFIG_SHELL_TAB=y
CONFIG_SHELL_HISTORY=y
CONFIG_SHELL_HISTORY_BUFFER=512
# 栈大小
CONFIG_MAIN_STACK_SIZE=2048
CONFIG_SHELL_STACK_SIZE=1024
# reboot 命令需要内核的复位支持
CONFIG_REBOOT=y
3 CMakeLists.txt
cmake_minimum_required(VERSION 3.20.0)
find_package(Zephyr REQUIRED)
project(shell_demo)
target_sources(app PRIVATE src/main.c)
src/main.c
#include <zephyr/kernel.h>
#include <zephyr/shell/shell.h>
#include <zephyr/sys/printk.h>
#include <zephyr/sys/reboot.h>
static int cmd_hello(const struct shell *shell, size_t argc, char **argv)
{
shell_print(shell, "Hello from shell demo, stm32wb5mm_dk!");
return 0;
}
static int cmd_reboot(const struct shell *shell, size_t argc, char **argv)
{
shell_print(shell, "Rebooting the system...");
sys_reboot(SYS_REBOOT_COLD);
return 0;
}
SHELL_CMD_REGISTER(hello, NULL, "Print hello message", cmd_hello);
SHELL_CMD_REGISTER(reboot, NULL, "Reboot the system", cmd_reboot);
int main(void)
{
printk("Shell demo application started.\n");
return 0;
}
编译、烧录命令
在zephyr的目录中执行如何初始命令
cd D:/luglZephyrproject
export ZEPHYR_BASE=D:/luglZephyrproject/zephyr # 正斜杠
export ZEPHYR_SDK_INSTALL_DIR=D:/luglZephyrproject/zephyr-sdk-1.0.1/zephyr-sdk-1.0.1
export ZEPHYR_TOOLCHAIN_VARIANT=zephyr
west build -b stm32wb5mm_dk -d build_stm32wb5mm_dk_shell app/stm32wb5mm_dk_shell

烧写:$ west flash -d build_stm32wb5mm_dk_shell
实现效果:
