打印
[STM32F1]

[三]使用b_shell功能模块

[复制链接]
626|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liklon|  楼主 | 2020-3-18 20:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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





使用特权

评论回复
沙发
mmuuss586| | 2020-3-24 10:27 | 只看该作者
感谢分享

使用特权

评论回复
板凳
xiaoqizi| | 2020-4-6 18:02 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
地板
磨砂| | 2020-4-6 18:02 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
5
晓伍| | 2020-4-6 18:03 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
6
八层楼| | 2020-4-6 18:03 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
7
观海| | 2020-4-6 18:03 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

50

帖子

1

粉丝