搜索
查看: 4948|回复: 9

[原创] [STM32L496] 使用FreeRTOS任务通知实现命令行解释器

[复制链接]

该用户从未签到

1

主题

54

帖子

21

蝴蝶豆

中级会员

最后登录
2020-8-21
发表于 2018-4-13 18:01:07 | 显示全部楼层 |阅读模式
趁着这次RTOS在线培训》,听说有开发板送,就尝试着申请下,以为会像以前一下申请了就没有然后了。直到接到破总的电话,才知道自己中奖啦。。。
之前已经有很多坛友已经分享过很多开箱的帖子了,我就不重复了,贴张图,证明开箱过……

图-1.jpg
这次主要和大家分享下使用FreeRTOS通知实现命令行解释器,以前一直希望单片机能像Linux那样,能在命令行模式下调试。奈何资源不够用。现在有了“神器”,特意来研究一下,方便以后调试。
1、首先使用STM32CubeMX创建一个FreeRTOS工程
工程比较简单,勾选FreeRTOSLPUART1LPUART1默认IOPA2PA3,开发板上连接的是PG8PG9,需要手动改过来。另外配置PC7为输出,此IO连接开发板的绿色LED
图-2.jpg
串口设置如下,打开串口中断。
TIM截图20180413175445.jpg TIM截图20180413175452.jpg
完成后创建工程。
2、工程创建好后,对printf进行重映射,方便打印调试信息。
打开工程“选项”设置界面,勾选Use MicroLIB
TIM截图20180413175623.jpg
然后把下面代码添加到工程中,就可以使用printf进行打印。
int fputc(int ch, FILE *f)
{
         /*Printf内容发往串口 */
         HAL_UART_Transmit(&hlpuart1,(uint8_t*)&ch,1,0xffff);
         
         return(ch);
}
3、移植命令行解释代码
命令行解释器实现的思路:创建一个vTaskCmdAnalyze()任务,用来分析接收到的命令,如果命令有效则调用命令实现函数。串口接收中断用于接收命令,每收到一个字符就保存在buff里面,如果接收到回车换行符,表明已经接收到一条完整命令,则向任务vTaskCmdAnalyze()发送任务通知,任务可以去处理了。

TIM截图20180413175658.jpg
代码较长,都是从网上搜集资料移植过来的,这里就不贴出来了。帖子后面上传工程,有兴趣的同学可以自己研究。
4、串口工具
当然是大名鼎鼎的SecureCRT了,串口设置这里就不多啰嗦了。为了正常使用命令解释器,有一个地方设置需要注意。

依次点击菜单栏的“选项”---“会话选项”,在弹出的“会话选项”界面中,点击左边树形菜单的“终端”---“仿真”---“模式”,在右边的仿真模式区域选中“换行”和“新行模式”

TIM截图20180413175747.jpg TIM截图20180413175756.jpg
设置好这两个地方,然后加上我们刚才移植好的代码,就可以使用了。
5、命令测试
输入“help”命令,返回当前支持的命令和用法
TIM截图20180413175827.jpg
输入task,打印所有的任务信息
Task命令调用vTaskList函数,要使用次函数需要在FreeRTOSConfig.h中需要定义如下两个宏:
#defineconfigUSE_TRACE_FACILITY 1
#defineconfigUSE_STATS_FORMATTING_FUNCTIONS 1
TIM截图20180413175846.jpg
arg命令参数测试
TIM截图20180413175919.jpg
随便输入一个命令,返回不支持的命令
TIM截图20180413175941.jpg
6、以后调试的时候可以根据情况,自己写一些调试的函数,就可以在命令行下面轻松的使用各种参数进行调试了。感觉在FreeRTOS里面层层调用, 硬件调试已经没那么好用了,使用命令行调试,能准确知道任务运行的参数信息,比较容易找出问题。
板子保护不力,才两天按键就不翼而飞了。

STM32L296_Demo_RTOS.rar (27.21 KB, 下载次数: 120)
图-13.jpg
回复

使用道具 举报

该用户从未签到

18

主题

234

帖子

4

蝴蝶豆

金牌会员

最后登录
2021-1-9
发表于 2018-4-16 13:10:37 | 显示全部楼层
回复

使用道具 举报

该用户从未签到

1

主题

4

帖子

0

蝴蝶豆

初级会员

最后登录
2020-6-10
发表于 2018-5-9 21:34:52 | 显示全部楼层
刚好看到那篇博客,找了一下,果然有人已经做了,感谢大神
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

2

帖子

0

蝴蝶豆

新手上路

最后登录
2018-6-7
发表于 2018-6-7 08:42:36 | 显示全部楼层
谢谢,刚好我也参照在做这个功能,谢谢你的分享,我学习下
回复 支持 反对

使用道具 举报

该用户从未签到

41

主题

332

帖子

42

蝴蝶豆

金牌会员

最后登录
2021-4-2
发表于 2018-7-5 14:34:39 | 显示全部楼层
看的有点糊涂, 还没明白实现过程
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

6

帖子

0

蝴蝶豆

新手上路

最后登录
2019-9-1
发表于 2018-7-20 14:43:15 | 显示全部楼层
感谢LZ !!!!
回复

使用道具 举报

该用户从未签到

0

主题

6

帖子

0

蝴蝶豆

新手上路

最后登录
2019-9-1
发表于 2018-7-20 16:17:47 | 显示全部楼层
能否上传整个工程,附件的工程文件太少了
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

8

帖子

0

蝴蝶豆

初级会员

最后登录
2018-10-8
发表于 2018-7-23 16:33:59 | 显示全部楼层
不完整,不好不好
回复 支持 反对

使用道具 举报

该用户从未签到

19

主题

182

帖子

32

蝴蝶豆

版主

最后登录
2020-2-21
发表于 2018-7-23 19:14:24 | 显示全部楼层
大神受我一拜
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

33

帖子

0

蝴蝶豆

初级会员

最后登录
2019-9-12
发表于 2018-8-6 17:51:49 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-19 16:38 , Processed in 1.203117 second(s), 41 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表