本帖最后由 liklon 于 2020-3-18 20:15 编辑
BabyOS的b_shell功能是基于开源代码nr_micro_shell完成,实现MCU的命令行操作,使用方法如下文所述。
STM32CUBE开启串口中断调整波特率9600
配置b_config.h
本次实验测试b_shell功能,使能Thirdparty里面的NR Micro Shell
添加NR Micro Shell代码
添加BabyOS\bos\core\thirdparty\nr_micro_shell\src\目录所有文件,添加头文件路径
增加命令及执行函数
//b_shell.c内添加
static void _bShellLSCmd(char argc, char *argv);
static void _bShellTestCmd(char argc, char *argv);
static void _bShellTickCmd(char argc, char *argv);
const static_cmd_st static_cmd[] =
{
{"ls", _bShellLSCmd},
{"test", _bShellTestCmd},
{"tick", _bShellTickCmd}, //新增此命令获取tick值
{"\0", NULL}
};
static void _bShellTickCmd(char argc, char *argv)
{
if(argc == 1)
{
shell_printf("tick: %d\r\n", bHalGetTick());
}
}
开启串口中断接收模式 /* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART1_UART_Init();
/* USER CODE BEGIN 2 */
HAL_UART_Receive_IT(&huart1, &UartData, 1);
uint8_t UartData = 0;
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
bShellParse(&UartData, 1); //接收数据给shell解析
HAL_UART_Receive_IT(&huart1, &UartData, 1);
}
启动shell
/* USER CODE BEGIN WHILE */
bInit();
bShellStart();
while (1)
{
bExec();
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
开始测试
测试结果:
子模块采用BabyOS master分支 https://gitee.com/notrynohigh/BabyOS
|