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.

[参考译文] TMS320F28377S:构建 PinMux 生成的 c 和 h 文件

Guru**** 2391175 points
Other Parts Discussed in Thread: C2000WARE, SYSCONFIG

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1484290/tms320f28377s-building-pinmux-generated-c-and-h-file

器件型号:TMS320F28377S
主题中讨论的其他器件:C2000WARESysConfig

工具与软件:

TI PinMux 工具生成 pinmux.c 和头文件。  pinmux、c 包括 driverlib.h 在构建时、未找到 driverlib.h。  

我使用的是 f2837xs 处理器、因此我已将其添加到我的包含路径中。

C:\ti\c2000\C2000Ware_5_04_00_00\driverlib\f2837xs+ driverlib\

这解决了未找到初始标头的问题、但未找到另一个。 我添加了

C:\ti\c2000\C2000Ware_5_04_00_00\device_support\f2837xs+ common\include

来解决下一个问题。  这起作用了。

但现在我的问题是这与我们在项目 version.h 中定义的头文件发生了冲突 C2000Ware 文件夹中也包含 version.h。 首先找到 C2000Ware 文件夹中的插件。 如果我更改头文件的顺序、则会发生不同的问题、因为 driverlib.h 使用的本地版本 version.h 或 driverlib.h 中包含的某些标头

1.配置 CCS 的正确方法是什么、当我包含 pinmux.c 时能找到"driverlib.h"?

我使用的是 CCS v12。

谢谢!

Paul Hetherington

引脚 mux.c

//
//
// pinmux.c -将生成的引脚多路复用值写入适当的函数
//寄存器。
//在上午10:21:41的2025年3月7日 上使用 TI Pinmux 4.0.1543创建。
//
//
//
//版权所有(C) 2017德州仪器(TI)公司- http://www.ti.com/
/

.

.

.

//
//
//注意!! 该文件使用 C2000Ware 的 driverlib 寄存器宏。
//提供此功能是为了您的方便并作为示例
//使用生成的头文件、但不需要使用它。
//
//要下载 C2000Ware: www.ti.com/.../C2000Ware
//
//

#include "driverlib.h"
#include "pinmux.h"

//
//
//使用生成的寄存器值配置引脚多路复用寄存器。
//
//此函数将引脚多路复用工具生成的值写入其值
//相应的 GPIO 控制寄存器。 应该会找到这些生成的值
//在生成的"pinmux.h"中
//
//
空洞
GPIO_setPinMuxConfig (void)

uint32_t lockVala;
uint32_t lockValB;
uint32_t lockValC;
uint32_t lockVald;
uint32_t lockVale;
uint32_t lockValF;

EALLOW;

//
//保存 GPIO 锁定寄存器的当前值
//
lockValA = HWREG (GPIOCTRL_base + GPIO_GPALOCK);
lockValB = HWREG (GPIOCTRL_base + GPIO_GPBLOCK);
lockValC = HWREG (GPIOCTRL_base + GPIO_GPCLOCK);
lockValD = HWREG (GPIOCTRL_base + GPIO_GPDLOCK);
lockValE = HWREG (GPIOCTRL_base + GPIO_GPELOCK);
lockValF = HWREG (GPIOCTRL_base + GPIO_GPFLOCK);

//
//解锁 GPIO 控制寄存器
//
HWREG (GPIOCTRL_BASE + GPIO_GPALOCK)= 0x00000000;
HWREG (GPIOCTRL_BASE + GPIO_GPBLOCK)= 0x00000000;
HWREG (GPIOCTRL_base + GPIO_GPCLOCK)= 0x00000000;
HWREG (GPIOCTRL_BASE + GPIO_GPDLOCK)= 0x00000000;
HWREG (GPIOCTRL_BASE + GPIO_GPELOCK)= 0x00000000;
HWREG (GPIOCTRL_BASE + GPIO_GPFLOCK)= 0x00000000;

//
//清除要更改的多路复用器寄存器字段
//
HWREG (GPIOCTRL_base + GPIO_GPAGMUX1)&=~GPAMUX1_MASK;
HWREG (GPIOCTRL_BASE + GPIO_GPAGMUX2)&=~GPAMUX2_MASK;
HWREG (GPIOCTRL_base + GPIO_GPAMUX1)&=~GPAMUX1_MASK;
HWREG (GPIOCTRL_BASE + GPIO_GPAMUX2)&=~GPAMUX2_MASK;
HWREG (GPIOCTRL_base + GPIO_GPBGMUX1)并且=~GPBMUX1_MASK;
HWREG (GPIOCTRL_BASE + GPIO_GPBGMUX2)&=~GPBMUX2_MASK;
HWREG (GPIOCTRL_base + GPIO_GPBMUX1)&=~GPBMUX1_MASK;
HWREG (GPIOCTRL_base + GPIO_GPBMUX2)&=~GPBMUX2_MASK;
HWREG (GPIOCTRL_base + GPIO_GPCGMUX1)&=~GPCMUX1_MASK;
HWREG (GPIOCTRL_BASE + GPIO_GPCGMUX2)&=~GPCMUX2_MASK;
HWREG (GPIOCTRL_base + GPIO_GPCMUX1)&=~GPCMUX1_MASK;
HWREG (GPIOCTRL_base + GPIO_GPCMUX2)&=~GPCMUX2_MASK;
HWREG (GPIOCTRL_base + GPIO_GPDGMUX1)并且=~GPDMUX1_MASK;
HWREG (GPIOCTRL_base + GPIO_GPDGMUX2)并且=~GPDMUX2_MASK;
HWREG (GPIOCTRL_base + GPIO_GPDMUX1)并且=~GPDMUX1_MASK;
HWREG (GPIOCTRL_base + GPIO_GPDMUX2)并且=~GPDMUX2_MASK;
HWREG (GPIOCTRL_BASE + GPIO_GPEGMUX1)&=~GPEMUX1_MASK;
HWREG (GPIOCTRL_BASE + GPIO_GPEGMUX2)&=~GPEMUX2_MASK;
HWREG (GPIOCTRL_BASE + GPIO_JPEMUX1)&=~GPEMUX1_MASK;
HWREG (GPIOCTRL_BASE + GPIO_JPEMUX2)&=~GPEMUX2_MASK;
HWREG (GPIOCTRL_BASE + GPIO_GPFGMUX1)并且=~GPFMUX1_MASK;
HWREG (GPIOCTRL_base + GPIO_GPFMUX1)&=~GPFMUX1_MASK;

//
//将引脚复用写入多路复用到多路复用寄存器
//
HWREG (GPIOCTRL_BASE + GPIO_GPAGMUX1)|= GPAGMUX1_VALUE;
HWREG (GPIOCTRL_BASE + GPIO_GPAGMUX2)|= GPAGMUX2_VALUE;
HWREG (GPIOCTRL_base + GPIO_GPAMUX1)|= GPAMUX1_VALUE;
HWREG (GPIOCTRL_BASE + GPIO_GPAMUX2)|= GPAMUX2_VALUE;
HWREG (GPIOCTRL_base + GPIO_GPBGMUX1)|= GPBGMUX1_VALUE;
HWREG (GPIOCTRL_BASE + GPIO_GPBGMUX2)|= GPBGMUX2_VALUE;
HWREG (GPIOCTRL_base + GPIO_GPBMUX1)|= GPBMUX1_VALUE;
HWREG (GPIOCTRL_BASE + GPIO_GPBMUX2)|= GPBMUX2_VALUE;
HWREG (GPIOCTRL_base + GPIO_GPCGMUX1)|= GPCGMUX1_VALUE;
HWREG (GPIOCTRL_BASE + GPIO_GPCGMUX2)|= GPCGMUX2_VALUE;
HWREG (GPIOCTRL_base + GPIO_GPCMUX1)|= GPCMUX1_value;
HWREG (GPIOCTRL_BASE + GPIO_GPCMUX2)|= GPCMUX2_VALUE;
HWREG (GPIOCTRL_base + GPIO_GPDGMUX1)|= GPDGMUX1_VALUE;
HWREG (GPIOCTRL_BASE + GPIO_GPDGMUX2)|= GPDGMUX2_VALUE;
HWREG (GPIOCTRL_base + GPIO_GPDMUX1)|= GPDMUX1_VALUE;
HWREG (GPIOCTRL_base + GPIO_GPDMUX2)|= GPDMUX2_value;
HWREG (GPIOCTRL_BASE + GPIO_GPEGMUX1)|= GPEGMUX1_VALUE;
HWREG (GPIOCTRL_BASE + GPIO_GPEGMUX2)|= GPEGMUX2_VALUE;
HWREG (GPIOCTRL_BASE + GPIO_JPEMUX1)|= GPEMUX1_VALUE;
HWREG (GPIOCTRL_BASE + GPIO_JPEMUX2)|= GPEMUX2_VALUE;
HWREG (GPIOCTRL_BASE + GPIO_GPFGMUX1)|= GPFGMUX1_VALUE;
HWREG (GPIOCTRL_base + GPIO_GPFMUX1)|= GPFMUX1_VALUE;

//
//将引脚模拟模式选择写入寄存器
//
HWREG (GPIOCTRL_BASE + GPIO_GPBAMSEL)&=~GPBAMSEL_MASK;
HWREG (GPIOCTRL_base + GPIO_GPBAMSEL)|= GPBAMSEL_VALUE;

//
//恢复 GPIO 锁定寄存器值
//
HWREG (GPIOCTRL_base + GPIO_GPALOCK)= lockValA;
HWREG (GPIOCTRL_base + GPIO_GPBLOCK)= lockValB;
HWREG (GPIOCTRL_base + GPIO_GPCLOCK)= lockValC;
HWREG (GPIOCTRL_base + GPIO_GPDLOCK)= lockValD;
HWREG (GPIOCTRL_base + GPIO_GPELOCK)= lockValE;
HWREG (GPIOCTRL_base + GPIO_GPFLOCK)= lockValF;

EDIS;
}

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Paul、你好!

    使用 SysConfig 构建默认工程时、我未看到 pinmux.c 文件。 你是指 pinmux.csv 吗? 您能否发送 pinmux.c 和 pinmux.h 文件生成位置的屏幕截图?

    谢谢!

    Luke

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想发送一个屏幕截图、但我无法找到如何使用此工具执行此操作。 插入视频/图像/文件不起作用。

    (Im 使用的 pinmux 文件由 T.I. PinMux 工具生成)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Paul、

    这个版本的 pinmux 工具似乎相当旧。 我建议使用嵌入到 CCS 中的 SysConfig 工具。 可通过在工程中打开任何.syscfg 文件并正常添加外设来访问此路径。 如果您只希望将 SysConfig 用于 pinmux 配置、您可以调用在 SysConfig 生成的 board.c 文件中生成的 Pinmux_init ()。 如果您有任何其他问题、请告诉我。

    谢谢!

    Luke