1. 调试环境搭建与CCS工程配置

调试环境搭建与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。若出现错误,优先检查头文件路径与器件型号配置。

编译通过后,进行烧录与调试验证:

  1. 使用USB线连接LaunchPad与电脑,确认设备管理器识别XDS110
  2. 点击甲虫图标(Debug)启动调试会话,CCS将自动连接目标板并烧录程序
  3. 烧录完成后,程序自动运行至main()入口处暂停
  4. 点击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工程配置成功。

调试观测点示意

CCS调试会话观测点布局 CCS Debug 视图 Resume | Suspend | Terminate Variables 窗口 i : unsigned long = 1234567 GPIO31 : 0x1 (输出高) Breakpoints main.c:42 (GPIO翻转) main.c:38 (延时循环) XDS110 TMS320F28379D LaunchPad C28x CPU 200MHz PC = 0x3F8000 寄存器: PC, SP, ST0 GPIO 外设 GPIO31 方向: 输出 数据: 翻转中 观测点1: CPU寄存器 观测点2: GPIO数据寄存器 LED状态: 闪烁 状态: 已连接 | 运行中 | 断点命中: main.c:42

上图展示了调试会话中需要重点观测的三个位置:CPU程序计数器(确认程序执行位置)、GPIO数据寄存器(确认引脚电平翻转)、以及LED物理状态(确认实际输出)。三者应保持一致,若程序运行但LED不亮,则需检查GPIO配置或硬件连接。