趁着这次《RTOS在线培训》,听说有开发板送,就尝试着申请下,以为会像以前一下申请了就没有然后了。直到接到破总的电话,才知道自己中奖啦。。。 之前已经有很多坛友已经分享过很多开箱的帖子了,我就不重复了,贴张图,证明开箱过…… + _! _' u5 `5 K z. B. g: G6 E; j* S/ O这次主要和大家分享下使用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了,串口设置这里就不多啰嗦了。为了正常使用命令解释器,有一个地方设置需要注意。 依次点击菜单栏的“选项”---“会话选项”,在弹出的“会话选项”界面中,点击左边树形菜单的“终端”---“仿真”---“模式”,在右边的仿真模式区域选中“换行”和“新行模式” ) ^* |0 e& ^4 E( S设置好这两个地方,然后加上我们刚才移植好的代码,就可以使用了。 5、命令测试 输入“help”命令,返回当前支持的命令和用法 输入task,打印所有的任务信息 Task命令调用vTaskList函数,要使用次函数需要在FreeRTOSConfig.h中需要定义如下两个宏: #defineconfigUSE_TRACE_FACILITY 1 #defineconfigUSE_STATS_FORMATTING_FUNCTIONS 1 arg命令参数测试 随便输入一个命令,返回不支持的命令 6、以后调试的时候可以根据情况,自己写一些调试的函数,就可以在命令行下面轻松的使用各种参数进行调试了。感觉在FreeRTOS里面层层调用, 硬件调试已经没那么好用了,使用命令行调试,能准确知道任务运行的参数信息,比较容易找出问题。 板子保护不力,才两天按键就不翼而飞了。 |
刚好看到那篇博客,找了一下,果然有人已经做了,感谢大神 |
谢谢,刚好我也参照在做这个功能,谢谢你的分享,我学习下 |
看的有点糊涂, 还没明白实现过程 |
感谢LZ !!!! |
能否上传整个工程,附件的工程文件太少了 |
不完整,不好不好 |
大神受我一拜 |
基于STM32L4R9 的QuadSPI Flash 通讯速率不理想经验分享
STM32L4超低功耗功能概述
基于STM32L431RC Standby和RTC中断唤醒经验分享
基于STM32L431的睡眠模式经验分享
STM32L4R9 的 QuadSPI Flash 通讯速率不理想
STM32L4、STM32L4+和STM32G4系列 微控制器上的专利代码读取保护
STM32L433在STOP模式USART不能工作的解决办法
【实测教程】基于STM32L4系列的实测教程分享合集
STM32L4系列MCU的五种振荡器和使用说明
【实测教程】STM32CubeMX-STM32L4之研究串口通信(printf)