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