This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
器件型号:TM4C_PINMUX
工具/软件:Code Composer Studio
大家好、我刚刚在 TI 引脚多路复用器工具(离线版本、请参阅下面的内容)中输入了我的项目的引脚分配(使用 TM4C1294NCPT)。 生成的代码很可能会将 I/O 引脚设置为我所需的状态。
但是、我在工具中为每个 I/O 引脚指定了一个有意义的名称、但生成的代码中没有显示这些名称。 我希望在生成的代码中获得一些#defines、以便以后在切换引脚等时可以使用我指定的名称来引用它们。 在围绕每个引脚的初始化代码创建的 doxygen 注释中甚至没有引用它们。这有多愚蠢?
某些竞争对手设法为其工具中定义的每个 GPIO 提供至少一个#define 用于 fancy _name_port 和 fancy _name_PIN、因此可以从代码中轻松引用它。
我是否忽略了某些内容、或者是否真正不会这样做?
Amit、您好!
赦免,但“名字的重复”似乎不太可能出现在“真正的问题”状态附近的任何地方——难道不是吗?
海报看起来最有能力-他的请求看起来(非常)公平和恰当...
也许像"oj"-我们需要寻找"真正的"杀手 问题...
我只想指出、我简直不能相信任何人会想到在 C 代码中提供客户给出的"别名"。 当它甚至未用于芯片引脚的图形表示时,它也不会显示在输出文件的*ANY*中,这就是您首先需要它们的原因。
我尽量少地就如何大幅提高此工具的客户价值提出建议。 竞争对手的工具比他们的工具领先...。
Markus
我不理解这里的问题。 我只需要为该引脚名称和位编号定义 GPIO_base_ADDR。
因此、假设我在工具中将引脚命名为"REL_OUT_N"、假设它位于端口 PN3上、假设工具需要在头文件中生成:
#define REL_OUT_N_GPIO_base (GPIO_PORTN_BASE) #define REL_OUT_N_BIT (GPIO_PIN_3)
因此我可以像这样访问它
GPIOPinWrite (RELAY_OUTP_N_PGPIO_BASE、RELAY_OUTP_N_BIT、0);
输出设为低电平。
这基本上就是我所要求的一切。 不可能真的这么难、或者?
Markus
[引用用户="Amit Ashara"]由于没有字段,因此基址将变得更加困难。
Amit、我读过这几次了、但没有真正得到它... 我认为 Markus 的建议是"仅基于文本"的,让 pinmux 创建他建议的输出行似乎没有问题:
#define REL_OUT_N_GPIO_base (GPIO_PORTN_BASE)
一段时间后、这里的每个开发人员都可能为其电路板引脚分配的 HAL 定义创建了自己的"方便方法"。 我确实对 PINMUX 进行了一次防护/使用、但最终放弃了、并返回进行复制/粘贴/编辑、因为该工具不完整。 我的第二个观点是、完整的"确定的"PINMUX 应该是一种有效的方法、这样引脚映射任务就可以在用户和项目之间更加机械和一致。
布鲁诺
我仍然不知道您所指的"多个同名定义"是什么。 只需检查用户输入的别名的唯一性即可。 问题已解决。
您好 Markus
您可以尝试以下补丁文件吗?
替换安装 PinMux V4的目录中附加的文件。 在我的计算机上、它安装在 D:\驱动器下
D:\ti\pinmux_v4\pinmux\deviceData\TM4C129x\temples\driverlib
请将文件重命名为 pinout.c.xdt 和 pinout.h.xdt (请注意、这不是正式版本或最终解决方案)
对我来说、它会编译我的项目。 我现在无法测试行为是否发生了变化、但如果我注意到问题、我会告诉您。
如果您读取以下内容、则初始化代码的可读性已提高了500%:
// //为 PL7配置 GPIO 引脚多路复用 器//为 GPIO_PL7配置 GPIO 引脚多路复用器 // map_GPIOPinTypeGPIOOutput (LCD_D15_port、LCD_D15_PIN); map_GPIOPinWrite (LCD_D15_port、LCD_D15_PIN、0x0); // //为 PK4配置 GPIO 引脚多路复用 器//为 GPIO_PK4 // MAP_GPIOPinTypeGPIOOutput (LCD_CS_N_PORT、LCD_CS_N_PIN); MAP_GPIOPinWrite (LCD_CS_N_PORT、LCD_CS_N_PIN、LCD_CS_N_PIN); // //为 PK5配置 GPIO 引脚多路复用 器//为 GPIO_PK5 // map_GPIOPinTypeGPIOOutput (LCD_Rs_port、LCD_Rs_PIN); map_GPIOPinWrite (LCD_Rs_port、LCD_Rs_PIN、LCD_Rs_PIN); // //为 PK7配置 GPIO 引脚多路复用 器//为 GPIO_PK7 // MAP_GPIOPinTypeGPIOOutput (LCD_WR_N_PORT、LCD_WR_N_PIN); MAP_GPIOPinWrite (LCD_WR_N_PORT、LCD_WR_N_PIN、LCD_WR_N_PIN);