ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

[单片机][KEIL5] 参数的意义和使用 L #L @L K #K $, #, %, @, ~, ^

[单片机][KEIL5] 参数的意义和使用 L #L @L K #K $, #, %, @, ~, ^ 文章目录1. 概述术语对照表2. 键码Key Code说明3. 文件码File Code说明4. 实战示例4.1 命令行场景4.2 对话框场景4.3 运行结果5. 常用键码速查5. 常见问题与排查5.1 特殊字符未转义导致键序列失效5.2 路径含空格未加引号5.3 命令行下关键代码未重复5.4 路径中包含 ~ 或 # 未转义6. 总结7. [参考链接](https://www.keil.com/support/man/docs/uv4/uv4_ut_keysequence.htm)1. 概述术语对照表术语中文解释首次出现章节键序列Key Sequence由键码和文件码组合而成的参数传递字符串用于从 µVision 向外部用户程序传递参数1. 概述键码Key Code键序列中的核心符号如%、#、等代表特定类型的文件名或路径信息2. 键码说明文件码File Code键序列中用于表示特定文件或路径的代码如$D、E、F等3. 文件码说明转义Escape通过双写符号如$$、##来避免特殊字符被误解析为键码1. 概述SVCS软件版本控制系统Software Version Control SystemµVision 中用于集成版本管理工具的接口1. 概述µVisionKeil 提供的集成开发环境IDE用于嵌入式软件的开发与调试1. 概述使用键序列从 µVision 传递参数给外部用户程序。键序列是键码和文件码的组合。键序列可以使用例如在对话框工具、SVCS、选项的目标用户或从命令行。以下规则适用当从命令行使用时某些关键代码必须重复。使用符号$、#、%、、~、^。用$$、##、%%、、~~、^^来转义它们。当使用可能包含特殊字符空格、~或#的文件夹名称时将键序列用引号 括起来。下面是键序列从 µVision 传递参数到外部用户程序的整体流程命令行对话框 / SVCSµVision IDE键序列键码 文件码使用场景关键代码需重复书写直接填写键序列µVision 解析并展开键码外部用户程序接收参数执行构建 / 后处理任务2. 键码Key Code说明关键码及档案码列于下表Key例子描述%PROJECT1.UVPROJX带扩展名的文件名#C:\MYPROJECT\PROJECT1.UVPROJX带扩展名的完整路径和文件名PROJECT1没有扩展名或路径说明的文件名$C:\MYPROJECT\用反斜杠扩展的文件路径名!.\SRC\TEST.C具有当前文件夹扩展名和相对路径规范的文件名~1123当前光标位置的行号^151当前光标位置的列号3. 文件码File Code说明文件代码描述$D从设备数据库中选择的设备名称E当前处于焦点的编辑器文件名F根据上下文返回Project 窗口中选择的文件、当前活动的编辑器文件、或当前由构建过程编译的文件H应用程序 HEX 文件名PROJECT1.H86$J绝对编译系统包含文件夹。编译器基本文件夹在「项目-管理-项目项目-文件夹/扩展-ARMCC 文件夹」中指定K开发工具链的绝对根文件夹与使用的关键代码无关L链接器输出文件通常为用于调试的可执行文件PROJECT1$MCPU 掩码修订号CPU mask revision numberP当前项目文件名$S当前激活的设备族包的安装文件夹X视觉可执行程序文件..\UV4\UV4.exe。适用于键码%、#和$X在「目标-目标-XTAL」选项中指定的以 MHz 为单位的 XTAL 时钟频率^X在「目标-目标-XTAL」选项中指定的以 kHz 为单位的 XTAL 时钟频率Y为 C 文件类型定义的预处理器符号文件co-arm_target_name.h。适用于键码#Z为 C 文件类型定义的预处理器符号文件co-arm_target_name.hpp。适用于键码#4. 实战示例下面通过一个完整案例演示如何从 µVision 将参数传递给外部用户程序。假设工程文件位于C:\MYPROJECT\PROJECT1.UVPROJX目标程序为C:\Tools\postbuild.exe需要把当前工程文件名和输出 HEX 文件路径传给它。4.1 命令行场景在命令行中调用外部程序时键序列中的关键代码需要重复书写并用引号包裹含空格的路径C:\Tools\postbuild.exe #C:\MYPROJECT\PROJECT1.UVPROJX H其中#C:\MYPROJECT\PROJECT1.UVPROJX传入带扩展名的完整工程路径H传入应用程序 HEX 文件名PROJECT1.H86整个键序列用引号包裹避免路径中的空格被拆分成多个参数。4.2 对话框场景在 µVision 的「Options for Target - User」对话框或自定义工具对话框中无需重复关键代码直接填写键序列即可C:\Tools\postbuild.exe #C:\MYPROJECT\PROJECT1.UVPROJX HµVision 会自动展开#和H将展开后的完整路径与文件名作为参数传递给postbuild.exe。4.3 运行结果假设postbuild.exe接收参数后打印如下信息Project: C:\MYPROJECT\PROJECT1.UVPROJX HEX file: C:\MYPROJECT\PROJECT1.H86说明键序列已正确展开并传递。若输出与预期不符请参考「6. 常见问题与排查」中的转义与引号规则进行检查。下面是本案例中参数从 µVision 传递到postbuild.exe的时序过程postbuild.exeµVision用户postbuild.exeµVision用户触发构建 / 后处理命令解析键序列传递展开后的完整路径与文件名执行后处理逻辑输出运行结果5. 常用键码速查常用值描述L工程目标名称KKeil 所在目录P工程文件所在路径5. 常见问题与排查5.1 特殊字符未转义导致键序列失效问题现象键序列中的$、#、%、、~、^等符号被 µVision 当作键码解析导致实际传入的参数与预期不符。解决方法使用双写符号进行转义。错误示例$C:\MYPROJECT\PROJECT1.UVPROJX正确示例$$C:\MYPROJECT\PROJECT1.UVPROJX5.2 路径含空格未加引号问题现象当文件夹名称包含空格如C:\My Project\时键序列会被拆分成多个参数导致外部程序接收到的路径不完整。解决方法将整个键序列用引号 括起来。错误示例#C:\My Project\PROJECT1.UVPROJX正确示例#C:\My Project\PROJECT1.UVPROJX5.3 命令行下关键代码未重复问题现象从命令行使用键序列时某些关键代码只写一次导致参数无法正确传递。解决方法当从命令行使用时需要重复某些关键代码。错误示例UV4.exe -b %PROJECT1.UVPROJX正确示例UV4.exe -b %PROJECT1.UVPROJX %PROJECT1.UVPROJX5.4 路径中包含~或#未转义问题现象文件夹名称中包含~或#时这些字符被误解析为键码导致路径错误。解决方法使用双写符号转义并用引号包裹整个键序列。错误示例#C:\My#Project\PROJECT1.UVPROJX正确示例#C:\My##Project\PROJECT1.UVPROJX6. 总结本文围绕 µVision 的键序列机制系统讲解了从 IDE 向外部用户程序传递参数的方法。核心要点如下键序列 键码 文件码键码如%、#、代表文件名或路径信息文件码如H、L、P代表特定文件或路径二者组合即可在对话框工具、SVCS、命令行等场景中传递参数。特殊字符需转义$、#、%、、~、^会被 µVision 当作键码解析必须用双写符号$$、##、%%、、~~、^^转义。含空格或特殊字符的路径要加引号用 包裹整个键序列避免路径被拆分成多个参数。命令行下关键代码需重复从命令行使用时某些关键代码必须重复书写在对话框场景中则无需重复。常见错误速查错误正确做法$C:\MYPROJECT\PROJECT1.UVPROJX$$C:\MYPROJECT\PROJECT1.UVPROJX#C:\My Project\PROJECT1.UVPROJX#C:\My Project\PROJECT1.UVPROJXUV4.exe -b %PROJECT1.UVPROJXUV4.exe -b %PROJECT1.UVPROJX %PROJECT1.UVPROJX#C:\My#Project\PROJECT1.UVPROJX#C:\My##Project\PROJECT1.UVPROJX最佳实践编写键序列前先确认目标场景命令行还是对话框据此决定是否重复关键代码。路径中包含空格、~或#时先转义再用引号包裹避免解析歧义。在「5. 实战示例」的完整案例基础上结合「6. 常见问题与排查」逐项核对可快速定位并解决参数传递失败的问题。遇到键序列问题时可按下图流程快速定位并解决是否是否是否是否键序列传递失败路径含空格用引号包裹整个键序列含特殊字符$ # % ~ ^双写符号转义$$ ## %% ~~ ^^命令行场景重复关键代码检查键码 / 文件码拼写重新测试传递成功完成查阅官方文档7.参考链接
返回列表