请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
流水白菜 发布时间:2018-4-13 18:01
趁着这次RTOS在线培训》,听说有开发板送,就尝试着申请下,以为会像以前一下申请了就没有然后了。直到接到破总的电话,才知道自己中奖啦。。。
之前已经有很多坛友已经分享过很多开箱的帖子了,我就不重复了,贴张图,证明开箱过……
+ _! _' u5 `5 K  z. B. g: G6 E; j* S/ O
图-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()发送任务通知,任务可以去处理了。

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

& I) c4 S+ ~9 s3 B- x/ Z7 u8 ~
依次点击菜单栏的“选项”---“会话选项”,在弹出的“会话选项”界面中,点击左边树形菜单的“终端”---“仿真”---“模式”,在右边的仿真模式区域选中“换行”和“新行模式”
) ^* |0 e& ^4 E( S
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里面层层调用, 硬件调试已经没那么好用了,使用命令行调试,能准确知道任务运行的参数信息,比较容易找出问题。
板子保护不力,才两天按键就不翼而飞了。

0 ]: k! d; R$ w- p  [. V4 h
STM32L296_Demo_RTOS.rar (27.21 KB, 下载次数: 148)
图-13.jpg
收藏 1 评论9 发布时间:2018-4-13 18:01

举报

9个回答
湉湉 回答时间:2018-4-16 13:10:37
So_cracy 回答时间:2018-5-9 21:34:52
刚好看到那篇博客,找了一下,果然有人已经做了,感谢大神
denglongbing32 回答时间:2018-6-7 08:42:36
谢谢,刚好我也参照在做这个功能,谢谢你的分享,我学习下
AI++ 回答时间:2018-7-5 14:34:39
看的有点糊涂, 还没明白实现过程
darkxiefei 回答时间:2018-7-20 14:43:15
感谢LZ !!!!
darkxiefei 回答时间:2018-7-20 16:17:47
能否上传整个工程,附件的工程文件太少了
mcu8031 回答时间:2018-7-23 16:33:59
不完整,不好不好
xiaojie0513 回答时间:2018-7-23 19:14:24
大神受我一拜
Lufie 回答时间:2018-8-6 17:51:49
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版