ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

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

基于 TI DSP28335 和 CCS9 ——点亮LED教程(超详细图文教程!) 点亮LED教程 —— 基于 TI DSP28335 和 CCS9超详细图文教程一、前言本文介绍如何使用 TI 的 DSP28335 开发板通过 CCS9 创建一个简单工程实现点亮板载 LED 的功能。涵盖项目创建、代码结构、工程目录组织、库文件添加及程序调试流程帮助初学者快速入门。二、创建工程及项目结构打开 CCSCode Composer Studio打开软件以后切换到CCS Edit界面。如下图新建工程点击 Project New CCS Project选择设备型号TMS320F28335选择对应的仿真器如下图给开发板通电并连接上仿真器。点击Verify。进行测试。如下图提示成功。点击Finish关闭界面继续设置。选择空项目模板Empty Project选择目标芯片信号和仿真器型号设置工程名如 LED_Blink点击完成工程创建成功自动创建了cmd文件和ccxml文件。如下图项目目录结构建议建议项目中创建如下文件夹分类便于管理和维护在工程文件目录E:\V101\LED_Blink下增加APP、SOURCE、USER文件夹。新建后CCS同步更新。按照如下步骤创建LED_led.c和LED_led.h在ccs中右键点击APP文件夹选择New Source File或New Header File根据需求创建源文件时选择Source File在弹出的对话框中输入文件名LED_led.c或LED_led.h点击完成CCS会自动在工程文件夹APP目录下创建对应的文件并加入项目中在USER中创建main.c最终的文件格式如下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.asmADC 校准函数TI预置的汇编代码用于ADC精度校正SOURCE 文件夹DSP2833x_DefaultIsr.c默认中断服务程序防止未定义中断崩溃SOURCE 文件夹DSP2833x_GlobalVariableDefs.c全局变量定义系统和外设使用的全局变量SOURCE 文件夹DSP2833x_Gpio.cGPIO 口初始化和控制代码SOURCE 文件夹DSP2833x_PieCtrl.cPIE 中断控制器初始化代码SOURCE 文件夹DSP2833x_PieVect.cPIE 中断向量表初始化代码SOURCE 文件夹DSP2833x_SysCtrl.c系统控制初始化代码时钟、PLL、看门狗等SOURCE 文件夹DSP2833x_usDelay.asm微秒级延时汇编函数SOURCE 文件夹2.文件放置建议创建 SOURCE 文件夹项目根目录下新建 SOURCE 文件夹如果还没有的话复制所有以上源文件到 SOURCE 文件夹保持文件名不变这样便于代码管理也符合 TI 官方示例工程的结构3.重要说明DSP2833x_ADC_cal.asm和DSP2833x_usDelay.asm是汇编文件编译器会调用其内置延时和校准功能DSP2833x_GlobalVariableDefs.c定义了核心全局变量缺失会导致链接错误如 _main 找不到等DSP2833x_PieCtrl.c和DSP2833x_PieVect.c负责中断控制初始化中断向量表缺失会导致中断相关函数找不到DSP2833x_Gpio.c包含GPIO初始化代码方便快速配置IO口DSP2833x_SysCtrl.c配置系统时钟和PLL是系统稳定运行的基础4.其他文件链接文件DSP2833x_Headers_nonBIOS.cmdTI 官方给出的 DSP2833x_Headers_nonBIOS.cmd 是通用且固定的几乎所有 DSP28335 的工程都用同一个将这个文件DSP2833x_Headers_nonBIOS.cmd赋值到项目的根目录下。CCS会自动识别出来。28335_RAM_lnk.cmd这个文件是程序和数据在 RAM 中的分配方案告诉链接器每个段.text、.cinit、.bss、.stack 等要放到哪个 RAM 区域此cmd文件已在初始化时候进行了默认创建。四、项目链接配置在 TI CCSCode Composer Studio中除了添加源文件还必须告诉编译器去哪里找头文件.h 文件头文件和源文件是一一对应关系。否则编译时会报找不到头文件错误。1.需要添加的头文件目录一般来说TI 官方库的头文件在两个目录DSP2833x_Headers芯片寄存器和外设寄存器的头文件DSP2833x_Common通用的驱动代码头文件这两个目录都要添加进编译器的头文件搜索路径。2. CCS中添加方法以 CCS 9.x 为例在Project Explorer里右键点击你的项目名选择Properties属性在弹出的窗口左侧菜单中选择Build →C2000 Compiler → Include Options点击Add...添加按钮选择你本地存放的 TI 头文件路径比如E:/V101/DSP2833x_headers/includeE:/V101/DSP2833x_common/include根据你本地实际路径填写确认添加点击OK3.注意事项头文件路径必须是目录路径不是具体文件2个目录都要逐一添加否则会导致部分头文件找不到添加完路径后编译器才能正确找到 DSP2833x_Device.h、DSP2833x_Examples.h、DSP2833x_GlobalVariableDefs.h 等关键头文件4、创建调试配置Target Configuration这是关键步骤否则无法正确调试程序.这一步在创建文件的时候已经做了设置仿真器型号了这里练习一下新建调试配置。在 CCS 菜单栏选择View - Target Configurations打开目标配置管理器。弹出如下窗口在弹出窗口空白处右键选择New Target Configuration。输入一个名称保存该配置文件例如 XDS100_V2.ccxml先选择仿真器的型号弹出对话框选择你的设备型号比如 F28335 或对应的开发板型号。并保存到默认目录一般是 C:\Users\用户名\ti\ccsTargetConfigurations\。该 .ccxml 文件即为你的调试配置文件。点击save保存配置文件。把电路板连上电插好仿真器点击“Test Connection”测试连接。正常情况下会提示“The JTAG DR Integrity scan-test has succeeded.”证明仿真器链接成功。5、关联调试配置到工程首先如上图所示打开“Project Explorer (Workspace)”界面右键工程根目录选择Debug As - Debug Configurations...。找到对应的调试配置切换到“Main”选项卡。在“Target Configuration”栏点击“File System...”选择刚刚创建的 .ccxml 文件。点击“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) { // 主循环保持 } }六、编译、烧写及调试编译工程点击 Build 按钮确认无编译或链接错误。最终生成一个“.out”文件连接开发板使用仿真器如 XDS100V2确认连接正确。并给电路板上电如果没上点的话烧写程序点击 Debug按钮下载程序到目标板。点击运行按钮“resume”观察LED如果程序正确执行板载LED会点亮。调试技巧在 CCS 中设置断点观察寄存器值如 GPBSET、GPBCLEAR使用逻辑分析仪或示波器检测GPIO电平七、总结工程结构清晰代码组织合理便于维护必须添加并正确配置TI官方头文件和库链接文件配置正确保证程序在目标内存运行GPIO初始化步骤包含多路复用解除和方向设置关闭看门狗初始化时钟是基础必备步骤通过调用模块化的LED驱动函数实现灵活控制大体流程如上~本次直接打通后续教程2如何烧写到Flash掉电后程序还在。将本文的案例 代码 文档 。挂在百度网盘。友友们自取欢迎讨论。通过网盘分享的文件手把手点亮LED.zip链接: https://pan.baidu.com/s/15-puZ2Xpx3bXxETDG_F0lA?pwdwsgv 提取码: wsgv到最后老铁双击评论666~
返回列表