论坛元老
 
- 积分
- 4467
- 金钱
- 4467
- 注册时间
- 2013-6-27
- 在线时间
- 565 小时
|
本帖最后由 DongInker 于 2021-10-7 21:32 编辑
演示工程
- 安装keil5
- 安装stm32f103支持包
- 编译工程(F7)
- 进入仿真模式(Ctrl + F5)
- 运行仿真调试(F5)
- 打开串口1串口命令交互(View > Serial Windows > Uart #1)
- 在Uart #1窗口输入help<回车>,输出模块列表
- 输入.norlfs<回车>,输出对littlefs文件系统的相关操作命令(文件系统信息,文件列表,创建文件,创建目录,读写文件等)
串口命令行进化论
- 升级下载
- 设备通信(鱼)
- 打印信息(熊)
- 单个字符控制命令
- 字符串控制命令
- 给每个命令取个名字,便于记忆
- 调试改变参数,避免不了修改,编译,下载,查看
- 命令名称+参数命令
- MCU十进制与十六进制平分天下
- 没有十六进制参数是没有色彩的
- 添加十六进制命令参数
- 命令名称 [H]参数(十六进制) ...(回车)
- 熊和鱼
- 对于只有一个串口资源的mcu只拿来调试,谁都不同意
- 创造登录口令进而复用串口
- 设备运行时串口是处理设备通信任务
- 需要调试监控时,登录调试模式
- 局部与全局关闭编译
- 局部
- 添加模块命令只有2个函数,一个是初始化注册函数,一个是命令行函数
- 要模块这2个函数添加预编译,而预编译DBG_CMD_EN定义在命令行.h文件中
- 模块屏蔽*include "dbg_cmd.h",则关闭相应模块命令行编译代码
- 全局
- 要在命令行.h文件中屏蔽命令行DBG_CMD_EN定义,则关闭整个工程命令编译
调试信息打印进化论
- 常规
- 遇到问题需要调试
- 代码修改编译选项,编译,下载,查看调试信息
- 分析调试信息,发现调试信息不全,进一步开启更高一级调试信息打印,编译,下载
- 海量调试信息找问题
- 结合命令行,可灵活设置各模块调试信息打印等级
- 为每个模块定制不同打印等级信息
- 过命令行可用根据实际需求配置不通打印信息等级
- 遇到问题,直接登录调试平台,根据实际问题及开启相应打印信息,逐渐靠近问题定位问题
- 局部与全局关闭编译
- 局部
- 屏蔽模块中MODULE_PRINT_INFO_EN定义,关闭信息打印等级编译
- 全局
- 要在myprint.h文件中屏蔽PRINTF_INFO_EN定义,则关闭整个工程信息打印等级
驱动模块
- 驱动.c.h文件
- 调试等级打印(可屏蔽)
- 命令行调试交互(可屏蔽)
- 在没有调试及命令行环境下,只要屏蔽局部调试等级及调试命令
- 最小的移植代价,只要复制.c.h文件就可用任意平台编译使用驱动代码
抛砖引玉,欢迎大家提宝贵建议!
|
|