1. 调试环境搭建与CCS工程配置
任务说明
本案例目标为:在C2000系列DSP(以TMS320F28379D为例)上完成调试环境搭建,并创建一个可编译、可烧录、可单步调试的最小CCS工程。完成标准为:工程编译无错误、通过XDS110仿真器连接目标板、可执行一次Flash烧录并进入CCS调试会话。
硬件与软件准备
- 硬件:TMS320F28379D LaunchPad开发板(板载XDS110仿真器)、USB线缆
- 软件:Code Composer Studio 12.x(含C2000编译器TI v22.6.x)、controlSUITE或C2000Ware(获取器件支持库)
- 驱动:确认XDS110仿真器驱动已安装,设备管理器中识别为“Texas Instruments XDS110”
工程创建与配置步骤
打开CCS,设置工作区路径(建议不含中文与空格)。通过菜单 File → New → CCS Project 创建工程,关键配置如下:
- Target:TMS320F28379D
- Connection:Texas Instruments XDS110 USB Debug Probe
- Project name:
lab1_blink - Compiler version:选择已安装的TI C2000编译器
- Project type:Empty Project(空工程,从零添加源文件)
工程创建后,需在工程属性中完成以下关键配置:
- Build → C2000 Compiler → Processor Options:确认器件型号为
F28379D,浮点支持选择FPU32(若使用硬件浮点) - Build → C2000 Compiler → Optimization:调试阶段选择
Off(优化关闭,保证变量可观测) - Build → C2000 Linker → Basic Options:堆栈大小设为
0x400(1KB栈空间足够本案例使用) - Build → C2000 Linker → File Search Path:添加C2000Ware中
driverlib库路径(若使用寄存器操作则无需添加)
最小工程代码实现
本案例采用寄存器直接操作方式,避免引入额外库依赖,使工程最小化。代码实现功能:初始化系统时钟为200MHz,配置GPIO31为输出模式,循环翻转该引脚电平,实现板载LED闪烁。
// main.c - C2000 F28379D LED Blink (寄存器操作)
#include "F2837xD_device.h" // 器件寄存器定义头文件
// 系统时钟初始化:PLL配置为200MHz
void InitSysClk(void) {
// 解锁系统控制寄存器
EALLOW;
// 配置外部晶振为10MHz输入(LaunchPad板载)
ClkCtlRegs.PERCLKSRCSELS.bit.XTAL = 0;
// 等待晶振稳定
while (SysCtrlRegs.PCLKCR0.bit.XTALEN != 1) {}
// 禁用看门狗
WdRegs.WDCR.all = 0x00A5; // 写入WDCR以禁用
// 配置PLL:SYSPLLMULT = 20 (10MHz * 20 = 200MHz)
ClkCtlRegs.SYSPLLCTL1.bit.PLLEN = 0; // 先关闭PLL
ClkCtlRegs.SYSPLLMULT.all = 20 - 1; // 倍频值-1写入
ClkCtlRegs.SYSPLLCTL1.bit.PLLEN = 1; // 使能PLL
// 等待PLL锁定
while (ClkCtlRegs.SYSPLLSTS.bit.LOCKS != 1) {}
// 设置CPU时钟分频为1(200MHz)
ClkCtlRegs.SYSCLKDIVSEL.bit.PLLSYSCLKDIV = 0;
EDIS;
}
// GPIO初始化:GPIO31配置为推挽输出
void InitGPIO(void) {
EALLOW;
// 将GPIO31从复用功能中释放,设置为GPIO模式
GpioCtrlRegs.GPCMUX1.bit.GPIO31 = 0;
// 设置为输出方向
GpioCtrlRegs.GPCDIR.bit.GPIO31 = 1;
// 内部上拉使能(可选)
GpioCtrlRegs.GPCPUD.bit.GPIO31 = 0;
EDIS;
}
// 简单延时函数(基于空循环,约0.5秒@200MHz)
void Delay(void) {
volatile unsigned long i;
for (i = 0; i < 5000000; i++) {} // 约0.5秒延时
}
void main(void) {
// 初始化系统时钟
InitSysClk();
// 初始化GPIO
InitGPIO();
// 主循环:翻转LED
while (1) {
GpioDataRegs.GPCTOGGLE.bit.GPIO31 = 1; // 翻转GPIO31
Delay();
}
}
上述代码中,F2837xD_device.h头文件位于C2000Ware的device_support/f2837xd/common/include目录下。若编译提示找不到该头文件,需在工程属性的Include Options中添加此路径。
编译与烧录验证
完成代码输入后,点击锤子图标(Build)进行编译。编译成功应在Console窗口输出Build Finished且无Error。若出现错误,优先检查头文件路径与器件型号配置。
编译通过后,进行烧录与调试验证:
- 使用USB线连接LaunchPad与电脑,确认设备管理器识别XDS110
- 点击甲虫图标(Debug)启动调试会话,CCS将自动连接目标板并烧录程序
- 烧录完成后,程序自动运行至
main()入口处暂停 - 点击Resume(绿色三角)运行程序,观察LaunchPad上GPIO31对应的LED(通常为红色LED)是否以约0.5秒间隔闪烁
验证方法与判定标准
按以下步骤确认调试环境搭建成功:
- 编译验证:工程编译0 Error、0 Warning(或仅有可忽略的链接警告),生成
.out文件 - 连接验证:点击Debug后,CCS的Debug窗口显示目标板状态为
Connected,且无连接超时错误 - 烧录验证:烧录过程无报错,程序计数器(PC)停在
main()函数入口 - 运行验证:点击Resume后,板载LED以约0.5秒周期闪烁;点击Suspend暂停时,可在Variables窗口观察到
i变量值随延时循环变化 - 单步验证:在
GpioDataRegs.GPCTOGGLE.bit.GPIO31 = 1;行设置断点,点击Resume后程序能稳定停在断点处,连续单步执行时LED状态翻转
以上五项全部通过,即判定本案例调试环境搭建与CCS工程配置成功。
调试观测点示意
上图展示了调试会话中需要重点观测的三个位置:CPU程序计数器(确认程序执行位置)、GPIO数据寄存器(确认引脚电平翻转)、以及LED物理状态(确认实际输出)。三者应保持一致,若程序运行但LED不亮,则需检查GPIO配置或硬件连接。