news 2026/9/3 13:39:11

基于 TI DSP28335 和 CCS9 ——点亮LED教程(超详细图文教程!)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 TI DSP28335 和 CCS9 ——点亮LED教程(超详细图文教程!)

点亮LED教程 —— 基于 TI DSP28335 和 CCS9(超详细图文教程)


一、前言

本文介绍如何使用 TI 的 DSP28335 开发板通过 CCS9 创建一个简单工程,实现点亮板载 LED 的功能。
涵盖项目创建、代码结构、工程目录组织、库文件添加及程序调试流程,帮助初学者快速入门。


二、创建工程及项目结构

  1. 打开 CCS(Code Composer Studio)

打开软件以后,切换到CCS Edit界面。如下图

  1. 新建工程
    • 点击 Project > New CCS Project

    • 选择设备型号:TMS320F28335

选择对应的仿真器,如下图:

给开发板通电,并连接上仿真器。点击Verify。进行测试。如下图,提示成功。

点击Finish,关闭界面,继续设置。

    • 选择空项目模板(Empty Project)
    • 选择目标芯片信号和仿真器型号
    • 设置工程名,如 LED_Blink
    • 点击完成,工程创建成功

自动创建了cmd文件和ccxml文件。如下图

  1. 项目目录结构建议

建议项目中创建如下文件夹分类,便于管理和维护:

在工程文件目录E:\V101\LED_Blink下,增加APP、SOURCE、USER文件夹。新建后CCS同步更新。按照如下步骤,创建LED_led.c和LED_led.h

  1. 在ccs中右键点击APP文件夹
    • 选择New > Source FileNew > Header File(根据需求,创建源文件时,选择Source File)
  2. 在弹出的对话框中输入文件名(LED_led.cLED_led.h),点击完成
    • CCS会自动在工程文件夹APP目录下创建对应的文件,并加入项目中
  3. 在USER中创建main.c
  4. 最终的文件格式如下

LED_Blink/

├── APP/ // 自定义应用功能模块,例如LED相关代码

│ ├── LED_led.h // LED头文件

│ └── LED_led.c // LED源文件

├── SOURCE/ // 准备存放TI官方提供的DSP2833x库文件,下一章说明

│ ├── DSP2833x_GlobalVariableDefs.c

│ ├── DSP2833x_SysCtrl.c

│ ├── DSP2833x_usDelay.c

│ └── ...

├── USER/ // 用户自定义代码,主程序等

│ └── main.c

├── DSP2833x_Headers_nonBIOS.cmd // 链接头文件,暂时还没添加进来

├── 28335_RAM_lnk.cmd // 链接脚本

└── ...


三、添加TI官方必要控制库文件(不可省略)

为了让程序正常运行,使用 TI 的 DSP28335 必须添加一些官方的库文件,这些文件提供了芯片的初始化、系统控制、GPIO、中断管理、延时等底层功能。缺少它们,编译或链接会报错。库文件位置为DSP2833x_common及DSP2833x_headers文件夹下。

1、必须添加的源文件清单

文件名

说明

建议放置目录

DSP2833x_ADC_cal.asm

ADC 校准函数,TI预置的汇编代码,用于ADC精度校正

SOURCE 文件夹

DSP2833x_DefaultIsr.c

默认中断服务程序,防止未定义中断崩溃

SOURCE 文件夹

DSP2833x_GlobalVariableDefs.c

全局变量定义,系统和外设使用的全局变量

SOURCE 文件夹

DSP2833x_Gpio.c

GPIO 口初始化和控制代码

SOURCE 文件夹

DSP2833x_PieCtrl.c

PIE 中断控制器初始化代码

SOURCE 文件夹

DSP2833x_PieVect.c

PIE 中断向量表初始化代码

SOURCE 文件夹

DSP2833x_SysCtrl.c

系统控制初始化代码,时钟、PLL、看门狗等

SOURCE 文件夹

DSP2833x_usDelay.asm

微秒级延时汇编函数

SOURCE 文件夹

2.文件放置建议

  • 创建 SOURCE 文件夹:项目根目录下,新建 SOURCE 文件夹(如果还没有的话)
  • 复制所有以上源文件到 SOURCE 文件夹,保持文件名不变
  • 这样便于代码管理,也符合 TI 官方示例工程的结构


3.重要说明

  • DSP2833x_ADC_cal.asmDSP2833x_usDelay.asm是汇编文件,编译器会调用其内置延时和校准功能
  • DSP2833x_GlobalVariableDefs.c定义了核心全局变量,缺失会导致链接错误如 _main 找不到等
  • DSP2833x_PieCtrl.cDSP2833x_PieVect.c负责中断控制,初始化中断向量表,缺失会导致中断相关函数找不到
  • DSP2833x_Gpio.c包含GPIO初始化代码,方便快速配置IO口
  • DSP2833x_SysCtrl.c配置系统时钟和PLL,是系统稳定运行的基础

4.其他文件

  • 链接文件:DSP2833x_Headers_nonBIOS.cmd(TI 官方给出的 DSP2833x_Headers_nonBIOS.cmd 是通用且固定的,几乎所有 DSP28335 的工程都用同一个)

将这个文件DSP2833x_Headers_nonBIOS.cmd赋值到项目的根目录下。CCS会自动识别出来。

  • 28335_RAM_lnk.cmd(这个文件是程序和数据在 RAM 中的分配方案,告诉链接器每个段(.text、.cinit、.bss、.stack 等)要放到哪个 RAM 区域,此cmd文件已在初始化时候,进行了默认创建。

四、项目链接配置

在 TI CCS(Code Composer Studio)中,除了添加源文件,还必须告诉编译器去哪里找头文件(.h 文件),头文件和源文件是一一对应关系。否则编译时会报找不到头文件错误。


1.需要添加的头文件目录

一般来说,TI 官方库的头文件在两个目录:

  • DSP2833x_Headers:芯片寄存器和外设寄存器的头文件
  • DSP2833x_Common:通用的驱动代码头文件

这两个目录都要添加进编译器的头文件搜索路径。


2. CCS中添加方法

以 CCS 9.x 为例:

  1. Project Explorer里,右键点击你的项目名,选择Properties(属性)
  2. 在弹出的窗口左侧菜单中选择Build →C2000 Compiler → Include Options
  3. 点击Add...(添加)按钮
  4. 选择你本地存放的 TI 头文件路径,比如:
    • E:/V101/DSP2833x_headers/include
    • E:/V101/DSP2833x_common/include
      (根据你本地实际路径填写)
  5. 确认添加,点击OK

3.注意事项

  • 头文件路径必须是目录路径,不是具体文件
  • 2个目录都要逐一添加,否则会导致部分头文件找不到
  • 添加完路径后,编译器才能正确找到 DSP2833x_Device.h、DSP2833x_Examples.h、DSP2833x_GlobalVariableDefs.h 等关键头文件

4、创建调试配置(Target Configuration)

这是关键步骤,否则无法正确调试程序.这一步在创建文件的时候,已经做了,设置仿真器型号了,这里练习一下新建调试配置。

  1. 在 CCS 菜单栏选择View -> Target Configurations,打开目标配置管理器。

  1. 弹出如下窗口

  1. 在弹出窗口空白处右键,选择New Target Configuration。输入一个名称保存该配置文件(例如 XDS100_V2.ccxml),
  2. 先选择仿真器的型号

  1. 弹出对话框,选择你的设备型号,比如 F28335 或对应的开发板型号。

  1. 并保存到默认目录(一般是 C:\Users\用户名\ti\ccsTargetConfigurations\)。
  2. 该 .ccxml 文件即为你的调试配置文件。
  3. 点击save保存配置文件。把电路板连上电,插好仿真器,点击“Test Connection”测试连接。

正常情况下,会提示:“The JTAG DR Integrity scan-test has succeeded.”

证明仿真器链接成功。

5、关联调试配置到工程

  1. 首先,如上图所示,打开“Project Explorer (Workspace)”界面
  2. 右键工程(根目录),选择Debug As -> Debug Configurations...

  1. 找到对应的调试配置,切换到“Main”选项卡。
  2. 在“Target Configuration”栏,点击“File System...”
  3. 选择刚刚创建的 .ccxml 文件。

  1. 点击“Apply”保存配置。

五、运行代码示例

#将以下代码,赋值到对应文件夹

1. APP/LED_led.h

#ifndef APP_LED_LED_H_ #define APP_LED_LED_H_ void LED_Init(void); void LED_On(void); void LED_Off(void); #endif /* APP_LED_LED_H_ */

2. APP/LED_led.c

#include "DSP2833x_Device.h" #include "LED_led.h" void LED_Init(void) { EALLOW; GpioCtrlRegs.GPBMUX2.bit.GPIO60 = 0; // 设置GPIO60为普通GPIO GpioCtrlRegs.GPBDIR.bit.GPIO60 = 1; // 设置GPIO60为输出 GpioDataRegs.GPBSET.bit.GPIO60 = 1; // 默认LED关闭(高电平) EDIS; } void LED_On(void) { GpioDataRegs.GPBCLEAR.bit.GPIO60 = 1; // GPIO60输出低电平,LED亮 } void LED_Off(void) { GpioDataRegs.GPBSET.bit.GPIO60 = 1; // GPIO60输出高电平,LED灭 }

3. USER/main.c

#include "DSP2833x_Device.h" #include "DSP2833x_Examples.h" #include "APP/LED_led.h" void main(void) { DisableDog(); // 关闭看门狗 InitSysCtrl(); // 初始化系统时钟和外设时钟 LED_Init(); // 初始化LED DINT; // 关闭中断 InitPieCtrl(); // 初始化中断控制器 IER = 0x0000; // 禁用CPU中断 IFR = 0x0000; // 清除中断标志 InitPieVectTable(); // 初始化中断向量表 LED_On(); // 点亮LED while(1) { // 主循环保持 } }

六、编译、烧写及调试

  1. 编译工程
    点击 Build 按钮,确认无编译或链接错误。最终生成一个“.out”文件

  1. 连接开发板
    使用仿真器(如 XDS100V2),确认连接正确。并给电路板上电(如果没上点的话)
  2. 烧写程序
    点击 Debug按钮,下载程序到目标板。

  1. 点击运行按钮“resume”
  2. 观察LED
    如果程序正确执行,板载LED会点亮。

  1. 调试技巧
    • 在 CCS 中设置断点
    • 观察寄存器值(如 GPBSET、GPBCLEAR)
    • 使用逻辑分析仪或示波器检测GPIO电平

七、总结

  • 工程结构清晰,代码组织合理,便于维护
  • 必须添加并正确配置TI官方头文件和库
  • 链接文件配置正确,保证程序在目标内存运行
  • GPIO初始化步骤包含多路复用解除和方向设置
  • 关闭看门狗,初始化时钟是基础必备步骤
  • 通过调用模块化的LED驱动函数,实现灵活控制

大体流程如上~本次直接打通!

后续教程2,如何烧写到Flash,掉电后,程序还在。
将本文的案例 代码 + word文档 。挂在百度网盘。友友们自取,欢迎讨论。

通过网盘分享的文件:手把手点亮LED.zip
链接: https://pan.baidu.com/s/15-puZ2Xpx3bXxETDG_F0lA?pwd=wsgv 提取码: wsgv


到最后,老铁双击评论666~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 13:32:43

SQLBot数据源备注导入:智能问数准确率提升的关键实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 13:24:36

安卓连连看游戏开发实战:从MVC架构到连通算法详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/3 13:23:33

SSM医院远程会诊系统:嵌入临床工作流的轻量级协同诊断方案

简介:本资源是一套完整的医院远程诊断系统课程设计与毕业设计实战项目,面向Java Web开发初学者及高校计算机相关专业学生,解决医疗信息化场景下医患远程协作、跨机构信息共享与临床数据管理等核心问题。压缩包共1273个文件,涵盖10…

作者头像 李华