趁着这次《RTOS在线培训》,听说有开发板送,就尝试着申请下,以为会像以前一下申请了就没有然后了。直到接到破总的电话,才知道自己中奖啦。。。 之前已经有很多坛友已经分享过很多开箱的帖子了,我就不重复了,贴张图,证明开箱过……
这次主要和大家分享下使用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了,串口设置这里就不多啰嗦了。为了正常使用命令解释器,有一个地方设置需要注意。
依次点击菜单栏的“选项”---“会话选项”,在弹出的“会话选项”界面中,点击左边树形菜单的“终端”---“仿真”---“模式”,在右边的仿真模式区域选中“换行”和“新行模式”
设置好这两个地方,然后加上我们刚才移植好的代码,就可以使用了。 5、命令测试 输入“help”命令,返回当前支持的命令和用法 输入task,打印所有的任务信息 Task命令调用vTaskList函数,要使用次函数需要在FreeRTOSConfig.h中需要定义如下两个宏: #defineconfigUSE_TRACE_FACILITY 1 #defineconfigUSE_STATS_FORMATTING_FUNCTIONS 1 arg命令参数测试 随便输入一个命令,返回不支持的命令 6、以后调试的时候可以根据情况,自己写一些调试的函数,就可以在命令行下面轻松的使用各种参数进行调试了。感觉在FreeRTOS里面层层调用, 硬件调试已经没那么好用了,使用命令行调试,能准确知道任务运行的参数信息,比较容易找出问题。 板子保护不力,才两天按键就不翼而飞了。
|