| 本帖最后由 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 
 
 
 
 
 |