
趁着这次《RTOS在线培训》,听说有开发板送,就尝试着申请下,以为会像以前一下申请了就没有然后了。直到接到破总的电话,才知道自己中奖啦。。。 之前已经有很多坛友已经分享过很多开箱的帖子了,我就不重复了,贴张图,证明开箱过…… 7 C0 B0 K& p# s% e5 c* c) k* v4 d![]() 这次主要和大家分享下使用FreeRTOS通知实现命令行解释器,以前一直希望单片机能像Linux那样,能在命令行模式下调试。奈何资源不够用。现在有了“神器”,特意来研究一下,方便以后调试。 1、首先使用STM32CubeMX创建一个FreeRTOS工程 工程比较简单,勾选FreeRTOS和LPUART1,LPUART1默认IO是PA2和PA3,开发板上连接的是PG8和PG9,需要手动改过来。另外配置PC7为输出,此IO连接开发板的绿色LED。 ![]() 串口设置如下,打开串口中断。 ![]() ![]() 完成后创建工程。 2、工程创建好后,对printf进行重映射,方便打印调试信息。 打开工程“选项”设置界面,勾选Use MicroLIB ![]() 然后把下面代码添加到工程中,就可以使用printf进行打印。 int fputc(int ch, FILE *f) { /*将Printf内容发往串口 */ HAL_UART_Transmit(&hlpuart1,(uint8_t*)&ch,1,0xffff); return(ch); } 3、移植命令行解释代码 命令行解释器实现的思路:创建一个vTaskCmdAnalyze()任务,用来分析接收到的命令,如果命令有效则调用命令实现函数。串口接收中断用于接收命令,每收到一个字符就保存在buff里面,如果接收到回车换行符,表明已经接收到一条完整命令,则向任务vTaskCmdAnalyze()发送任务通知,任务可以去处理了。 ![]() 代码较长,都是从网上搜集资料移植过来的,这里就不贴出来了。帖子后面上传工程,有兴趣的同学可以自己研究。 4、串口工具 当然是大名鼎鼎的SecureCRT了,串口设置这里就不多啰嗦了。为了正常使用命令解释器,有一个地方设置需要注意。 ( S) U l" R4 d4 n 依次点击菜单栏的“选项”---“会话选项”,在弹出的“会话选项”界面中,点击左边树形菜单的“终端”---“仿真”---“模式”,在右边的仿真模式区域选中“换行”和“新行模式” ![]() ![]() 设置好这两个地方,然后加上我们刚才移植好的代码,就可以使用了。 5、命令测试 输入“help”命令,返回当前支持的命令和用法 ![]() 输入task,打印所有的任务信息 Task命令调用vTaskList函数,要使用次函数需要在FreeRTOSConfig.h中需要定义如下两个宏: #defineconfigUSE_TRACE_FACILITY 1 #defineconfigUSE_STATS_FORMATTING_FUNCTIONS 1 ![]() arg命令参数测试 ![]() 随便输入一个命令,返回不支持的命令 ![]() 6、以后调试的时候可以根据情况,自己写一些调试的函数,就可以在命令行下面轻松的使用各种参数进行调试了。感觉在FreeRTOS里面层层调用, 硬件调试已经没那么好用了,使用命令行调试,能准确知道任务运行的参数信息,比较容易找出问题。 板子保护不力,才两天按键就不翼而飞了。 ![]() ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
刚好看到那篇博客,找了一下,果然有人已经做了,感谢大神 |
谢谢,刚好我也参照在做这个功能,谢谢你的分享,我学习下 |
看的有点糊涂, 还没明白实现过程 |
感谢LZ !!!! |
能否上传整个工程,附件的工程文件太少了 |
不完整,不好不好 |
大神受我一拜![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
【实测教程】STM32CubeMX-STM32L4之研究(ADC)
【STWINKT1B评测】2.初步测试IIS3DWB振动传感器
【圣诞专享活动】使用TouchGFX做GUI显示:圣诞快乐&Merry Christmas!
串口通信波特率异常的解决办法
【STWINKT1B 评测】6. NanoEdge AI 音频分类器 (2)
【STWINKT1B 评测】5. NanoEdge AI 音频分类器 (1)
STWINKT1B评测】4.测试板载ISM330DHCX(6轴)
【STWINKT1B评测】-03-CoreMark跑分测试
【STWINKT1B评测】-02-串口-定时器LED灯测试
【STWINKT1B评测】-01-开箱和资料分享