CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash

目录

1  新建工程

1.1 首先进入软件后,这是初始画面,点击左上角的project。

1.2 出现以下界面,选择第一个New CCS Project

1.3 下面是具体的一个选择界面,仿真器型号选V1 V2 V3都可以,只要能用就行,不能用后面再换​编辑

1.4 这是创建后的画面,注意核对左边的文件夹,是否一样

2  配置工程文件

2.1 复制底层文件到工程

2.2 文件的删除和禁用(均在CCS里面完成)

1)删除   28335_RAM_lnk.cmd   文件

2)配置DSP2833x_common 文件

A. 展开cmd文件

B.  展开gel/ccsv4,只保留f28335.gel文件,结果如下图:

C. 展开source,屏蔽DSP2833x_SWPrioritizedDefaultIsr.c和DSP2833x_SWPrioritizedPieVect.c文件,操作方法和A步骤一致,结果如下图:

3)配置DSP2833x_headers 文件

4)配置FPUfastRTS 文件

5)配置  IQmath  文件

6)选中工程名(我的是Led_try),右键新建文件夹,命名为APPS,存放所写程序 。PS:选做

2.3 索引配置(就是编译的时候,CCS能找到我们上一步保留的各种工程文件)

1)选中工程名(我的是Led_try),右键单击,选最后一个Properties

2)在Build\C2000 Compiler\Include Options里添加如下索引:

3)在Build\C2000 Linker\File Search Path的两个框里添加如下索引:

隐藏关卡

3  点亮LED灯实验

3.1 配置引脚

3.2  完整程序

3.3编译以及烧录

可能遇到的问题:

连接不上板子


       关于这方面的资料已经很多了,但都比较零散,也以此文记录自己从算法优化转向开关电源的学习的历程。

初始装备:你需要已经安装CCS。

1  新建工程

 1.1 首先进入软件后,这是初始画面,点击左上角的project。

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第1张图片

1.2 出现以下界面,选择第一个New CCS Project

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第2张图片

1.3 下面是具体的一个选择界面,仿真器型号选V1 V2 V3都可以,只要能用就行,不能用后面再换CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第3张图片

1.4 这是创建后的画面,注意核对左边的文件夹,是否一样

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第4张图片

                恭喜你,已经完成了第一步新建工程,通过了第一关!

2  配置工程文件

                 让我们开始第二关吧,也就是配置工程文件,这一步的意义,就是让我们可以用别人造好的“轮子”,主要是让我造,我也不会呀。

2.1 复制底层文件到工程

                务必按照这个路径   C:\ti\controlSUITE\device_support\f2833x\v142  复制里面的    DSP2833x_common  和  DSP2833x_headers   两个文件夹到工程下

                同样的选择这个路径   C:\ti\controlSUITE\libs\math   复制里面的   IQmath   和   FPUfastRTS   两个文件到我们的工程下。

PS:以上路径,仅针对和我一样安装CCS在C盘的小伙伴,此时可能有的伙伴可能找不到自己新建的工程在哪里,那么关闭软件,重新打开吧,下图就是你的新建工程路径

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第5张图片

                言归正传,下图就是复制后的图,必须一个不少哦(—甲壳虫文件除外Binaries,这个是仿真后才出来)。

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第6张图片

2.2 文件的删除和禁用(均在CCS里面完成)

1)删除   28335_RAM_lnk.cmd   文件

                选中   28335_RAM_lnk.cmd   文件右键选中Delete

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第7张图片

2)配置DSP2833x_common 文件
A. 展开cmd文件

将    F28335.cmd   文件选中,单击右键选择Exclude from Build

PS:   28335_RAM_lnk.cmd   ————是将程序烧录到RAM。 

         F28335.cmd  ————是将程序烧录到FLASH。也就是断电后,重新开机后程序都在里面。

因为这个模式不适合调试程序,所以先屏蔽了,选择不编译。

 CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第8张图片

 B.  展开gel/ccsv4,只保留f28335.gel文件,结果如下图:

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第9张图片

C. 展开source,屏蔽DSP2833x_SWPrioritizedDefaultIsr.c和DSP2833x_SWPrioritizedPieVect.c文件,操作方法和A步骤一致,结果如下图:

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第10张图片

3)配置DSP2833x_headers 文件

 展开cmd,屏蔽  DSP2833x_Headers_BIOS.cmd   文件,结果如下图:

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第11张图片

 4)配置FPUfastRTS 文件

 展开FPUfastRTS\V100,只保留 include     、  lib  、source三个文件夹,结果如下:

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第12张图片

5)配置  IQmath  文件

展开IQmath \v160,只保留 gel、include、lib   三个文件夹,结果如下:

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第13张图片

6)选中工程名(我的是Led_try),右键新建文件夹,命名为APPS,存放所写程序 。PS:选做

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第14张图片

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第15张图片

       太不容易了,终于该删的删,该屏蔽的屏蔽,都做完了,大家可以休息一下了,今天的学习量已经巨大了,该追剧追剧,该打游戏打游戏。

2.3 索引配置(就是编译的时候,CCS能找到我们上一步保留的各种工程文件)

                 你来到了第二关的最后一小关,这里做完,大多数编程场景应该问题不大(因为我也不知道,能满足多少编程场景,比如生成ePWM,PID调节,还没去尝试),反正最后一步了,点个LED灯问题不大。

1)选中工程名(我的是Led_try),右键单击,选最后一个Properties

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第16张图片

2)在Build\C2000 Compiler\Include Options里添加如下索引:

"${PROJECT_LOC}/DSP2833x_common/include"

"${PROJECT_LOC}/APPS"

"${PROJECT_LOC}/DSP2833x_headers/include"

"${PROJECT_LOC}/FPUfastRTS/V100/include"

"${PROJECT_LOC}/IQmath/v160/include"

添加后,结果如下图:

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第17张图片

3)在Build\C2000 Linker\File Search Path的两个框里添加如下索引:

首先是第一个框:

"${PROJECT_LOC}/FPUfastRTS/V100/lib/rts2800_fpu32_fast_supplement.lib"

"${PROJECT_LOC}/IQmath/v160/lib/IQmath_fpu32.lib"

"${PROJECT_LOC}/IQmath/v160/lib/IQmath.lib"

第二个框:

"${PROJECT_LOC}/IQmath/V160/lib"

"${PROJECT_LOC}/FPUfastRTS/V100/lib"

最后一步,按下图所示勾选

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第18张图片

第二关就此结束,工程文件的配置,就此结束,然后大家可以考虑开始编程了。

隐藏关卡

都通关了,怎么可以没有一点黑科技,作弊走起

首先学一个秘籍:导入工程

第一步:XXXXXXXXXXXXXXXX

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第19张图片

第二步:点第一个Browse...选导入工程文件

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第20张图片

链接:https://pan.baidu.com/s/1-3l1qC0upZVbk2A-3SZkDQ?pwd=of4k 
提取码:of4k

以上为秘籍——已经配置好的空工程项目,直接开始写程序,意思是上面的都可以不看,不学,不用一步一步的照着做。咳咳,大家可以偷懒了!

参考文献:《轻松玩转DSP——基于TMS320F2833x》是2018年机械工业出版社出版的图书,作者是马骏杰

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第21张图片

3  点亮LED灯实验

此处所需装备:TMS320F28335开发板一块以及对应的原理图和仿真器

          打开原理图,可以看见D2 D3正极接入了VDD3V3这个电源,负极接入了GPIO0、GPIO1两个接口,于是运用初中物理知识,正极有了差两个负极,可以将两个接口置为低电平,这两个灯就可以亮了。理论可行开始实践。(不同的板子原理图不一样哦)

3.1 配置引脚

在这里就不扯什么寄存器了,直接上代码,在代码里解释

GpioCtrlRegs结构体代表了GPIO控制寄存器

GPXMUX为配置寄存器,这里的X为A、B、C对应不同的引脚

A(0-31)  B(32-63) C(64-87)所以对应的哪个GPIO口,就用哪个

GPIO6就用A为GPAMUX1(0-15),如果是GPIO18就用GPAMUX2(16-31)

 EALLOW;//  打开寄存器访问权限
   GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0;  // GPIO1复用为GPIO功能
   GpioCtrlRegs.GPADIR.bit.GPIO6 = 1;   // GPIO1设置为输出
   GpioCtrlRegs.GPAPUD.bit.GPIO6 = 0;   // GPIO1允许上拉
   GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0;  // GPIO2复用为GPIO功能
   GpioCtrlRegs.GPADIR.bit.GPIO7 = 1;   // GPIO2设置为输出
   GpioCtrlRegs.GPAPUD.bit.GPIO7 = 0;   // GPIO2允许上拉
   GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;  // GPIO1复用为GPIO功能
   GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;   // GPIO1设置为输出
   GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;   // GPIO1允许上拉
   GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0;  // GPIO2复用为GPIO功能
   GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;   // GPIO2设置为输出
   GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0;   // GPIO2允许上拉
EDIS;//  关闭寄存器访问权限

所以其他寄存器同理,GPX对应什么就是什么。

上述整体代码,就是在配置引脚,首先通过MUX配置寄存器,将 引脚配置为GPIO功能

然后,通过DIR方向控制寄存器,将GPIO口设置为输出,因为这只需要当负极,不需要传输数据进入单片机。

最后通过上拉寄存器PUD,使能上拉电阻。

ok配置什么的弄完了,剩下的就和C语言没什么不一样了

3.2  完整程序

//先把头文件都弄过来
#include "DSP28x_Project.h"
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
#include "math.h"
#include "IQmathLib.h"
//将GPIO口的数据寄存器,直接定义为LED,简便一些
#define LED1 GpioDataRegs.GPADAT.bit.GPIO0
#define LED2 GpioDataRegs.GPADAT.bit.GPIO1
#define LED3 GpioDataRegs.GPADAT.bit.GPIO6
#define LED4 GpioDataRegs.GPADAT.bit.GPIO7
int main(void)
{
/*系统初始化*/

InitSysCtrl();//这个函数用于初始化系统控制器,包括时钟源、时钟分频等系统级别的配置。
DINT;//这个指令用于禁用全局中断。它会清除 CPU 的中断使能位,确保在初始化过程中不会发生任何中断。
InitPieCtrl();//这个函数用于初始化中断控制器模块 
IER = 0x0000;//将中断使能寄存器 IER(Interrupt Enable Register)的值设置为 0x0000,
//即禁用所有中断。
IFR = 0x0000;//将中断标志寄存器 IFR(Interrupt Flag Register)的值设置为 0x0000,
//即清除所有中断标志。
InitPieVectTable();//这个函数用于初始化中断向量表。中断向量表是一张保存了
//每个中断处理程序地址的表格,它告诉 CPU 在中断发生时去执行哪个中断处理程序。



//此处为烧录FLASH的代码,在调试好RAM前,不用管它
//        MemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd,&RamfuncsRunStart);
//        InitFlash();





//初始化,配置GOIO为点亮LED
EALLOW;
        GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0;  // GPIO1复用为GPIO功能
        GpioCtrlRegs.GPADIR.bit.GPIO6 = 1;   // GPIO1设置为输出
        GpioCtrlRegs.GPAPUD.bit.GPIO6 = 0;   // GPIO1允许上拉
        GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0;  // GPIO2复用为GPIO功能
        GpioCtrlRegs.GPADIR.bit.GPIO7 = 1;   // GPIO2设置为输出
        GpioCtrlRegs.GPAPUD.bit.GPIO7 = 0;   // GPIO2允许上拉
        GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;  // GPIO1复用为GPIO功能
        GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;   // GPIO1设置为输出
        GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;   // GPIO1允许上拉
        GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0;  // GPIO2复用为GPIO功能
        GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;   // GPIO2设置为输出
        GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0;   // GPIO2允许上拉
EDIS;

            while(1)
            {

                LED3 = 0;    //点亮LED3;因为我的原理图的低电平,点亮
                DELAY_US(1);//使用DAT寄存器赋值,需要间隔4个时钟周期
                LED2 = 1;    //熄灭LED2;
                DELAY_US(500000);//延时500ms

                LED3 = 1;
                DELAY_US(1);//使用DAT寄存器赋值,需要间隔4个时钟周期
                LED4 = 0;
                DELAY_US(500000);//延时500ms

                LED4 = 1;
                DELAY_US(1);
                LED1 = 0;
                DELAY_US(500000);//延时500ms

                LED1 = 1;
                DELAY_US(1);
                LED2 = 0;
                DELAY_US(500000);//延时500ms

            }
}

我这里配置的是四个LED循环亮,大家复制过去改改就是自己的了

3.3编译以及烧录

                先编译,没问题过后开始烧录。

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第22张图片

                开始烧录到RAM,进行开发板上的调试,如无误后,最后烧录到FLASH

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第23张图片

                上述都无误后,开始烧录到FLASH

第一步,先把28335_RAM_lnk.cmd屏蔽掉,再把  F28335.cmd  解放出来

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第24张图片

 第二步,把这个代码取消注释

//此处为烧录FLASH的代码,在调试好RAM前,不用管它
//        MemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd,&RamfuncsRunStart);
//        InitFlash();

第三步,同样是点甲壳虫,就可以烧录到FLASH

可能遇到的问题:

连接不上板子

展开 targetConfigs 文件夹,双击  TMS320F28335.ccxml  这个文件

 

 稍等一会,出现如下界面

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第25张图片

更换仿真器型号

 ​​​​​​CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第26张图片

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第27张图片

成功的界面如下:

CCS8.0 TMS32028335新建工程、导入工程以及LED实验程序烧录Flash_第28张图片

 祝大家成功通过教学关卡,可以开始摸索新手村了,我也要去摸索了

 如有侵权,联系,马上删

你可能感兴趣的:(dsp开发,硬件工程,单片机,stm32,c++)