[STM32F1] [三]使用b_shell功能模块

[复制链接]
856|6
 楼主| liklon 发表于 2020-3-18 20:13 | 显示全部楼层 |阅读模式
本帖最后由 liklon 于 2020-3-18 20:15 编辑

BabyOS的b_shell功能是基于开源代码nr_micro_shell完成,实现MCU的命令行操作,使用方法如下文所述。

STM32CUBE开启串口中断调整波特率9600


bps.png
irq.png
配置b_config.h
          本次实验测试b_shell功能,使能Thirdparty里面的NR Micro Shell

config.png

添加NR Micro Shell代码
   添加BabyOS\bos\core\thirdparty\nr_micro_shell\src\目录所有文件,添加头文件路径

hfile.png

增加命令及执行函数
  1. //b_shell.c内添加
  2. static void _bShellLSCmd(char argc, char *argv);  
  3. static void _bShellTestCmd(char argc, char *argv);  
  4. static void _bShellTickCmd(char argc, char *argv);

  5. const static_cmd_st static_cmd[] =
  6. {
  7.   {"ls", _bShellLSCmd},
  8.   {"test", _bShellTestCmd},
  9.   {"tick", _bShellTickCmd}, //新增此命令获取tick值
  10.   {"\0", NULL}
  11. };

  12. static void _bShellTickCmd(char argc, char *argv)
  13. {
  14. if(argc == 1)
  15.   {
  16.        shell_printf("tick: %d\r\n", bHalGetTick());
  17.   }
  18. }


开启串口中断接收模式
  1. /* Initialize all configured peripherals */
  2. MX_GPIO_Init();
  3. MX_USART1_UART_Init();
  4. /* USER CODE BEGIN 2 */
  5. HAL_UART_Receive_IT(&huart1, &UartData, 1);


  6. uint8_t UartData = 0;

  7. void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
  8. {
  9.    bShellParse(&UartData, 1); //接收数据给shell解析
  10.    HAL_UART_Receive_IT(&huart1, &UartData, 1);
  11. }

启动shell
  1. /* USER CODE BEGIN WHILE */
  2. bInit();
  3. bShellStart();
  4. while (1)
  5. {
  6.      bExec();
  7. /* USER CODE END WHILE */

  8. /* USER CODE BEGIN 3 */

  9. }
  10. /* USER CODE END 3 */

开始测试
测试结果:
shell.png


子模块采用BabyOS master分支 https://gitee.com/notrynohigh/BabyOS





mmuuss586 发表于 2020-3-24 10:27 | 显示全部楼层
感谢分享
xiaoqizi 发表于 2020-4-6 18:02 | 显示全部楼层
非常感谢楼主分享
磨砂 发表于 2020-4-6 18:02 | 显示全部楼层
非常感谢楼主分享
晓伍 发表于 2020-4-6 18:03 | 显示全部楼层
非常感谢楼主分享
八层楼 发表于 2020-4-6 18:03 | 显示全部楼层
非常感谢楼主分享
观海 发表于 2020-4-6 18:03 | 显示全部楼层
非常感谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

50

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部