主题中讨论的其他器件:C2000WARE、 SysConfig
工具与软件:
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;
}