参照TI的driver_example创建CCS5.2的工程,要求绝对的移植性,这个工程复制到任何一台装有CCS v5的电脑上都能编译通过,不需要改动任何地方,包括路径。
首先,下载安装TI的2802x C/C++ Header Files and PeripheralExamples,以2802x为例,下载地址:http://www.ti.com/tool/sprc832
建立一个文件夹,按照项目的意义命名,最好保存在全英文路径目录下。
然后,把2802x C/C++ Header Files andPeripheral Examples安装目录下的DSP2802x_common文件夹和DSP2802x_headers文件夹复制到这个文件夹里。
然后在这个文件夹里在新建一个文件夹,命名为project。
在2802x C/C++ Header Files andPeripheral Examples安装目录下找到需要用到的cmd文件和asm文件复制到这个文件夹下,如下图:
在此文件夹下新建一个文件夹,命名为src:
打开src文件夹,在2802x C/C++ Header Files andPeripheral Examples安装目录下找到这些文件复制到src中
如果还需要其他的文件,比如要用到AD,就把DSP2802x_Adc.c文件也复制到此文件夹中,这个文件夹用来放c语言的源文件。
然后,打开CCS v5。单击Project,选择New CCS Project。按下图设置:
然后看到ccs左侧的资源管理视图中已经出现了我们刚刚建立的test的工程。我们刚刚建立的test的工程。
右击test项目,单击Properties
在General下可以设置芯片,仿真器,cmd文件等
Optimization页面下可以设置优化等级。
Include Options页面可以设置头文件路径。我们如下设置:
在Predefined Symbols页面下可以定义一些宏,用于条件编译等
在C2000 Linker下的File Search Path页面可以设置库文件的路径。我们如下设置:
右击src,新建一个文件,这里命名为main.c
在main.c中写下测试程序,点击编译,如果有c2000 Launchpad,点击Debug,把程序下到tms320f28027的ram里调试,将会看到板子上的流水灯。以后创建工程就以此为模板,复制修改即可。
测试代码:
#include "DSP28x_Project.h" // Device Headerfile and Examples Include File void Gpio_select(void); void main(void) { // Step 1. Initialize System Control: // PLL, WatchDog, enable Peripheral Clocks // This example function is found in the DSP2802x_SysCtrl.c file. InitSysCtrl(); // Step 2. Initalize GPIO: // This example function is found in the DSP2802x_Gpio.c file and // illustrates how to set the GPIO to it's default state. // InitGpio(); // Skipped for this example // For this example use the following configuration: Gpio_select(); // Step 3. Clear all interrupts and initialize PIE vector table: // Disable CPU interrupts DINT; // Initialize PIE control registers to their default state. // The default state is all PIE interrupts disabled and flags // are cleared. // This function is found in the DSP2802x_PieCtrl.c file. InitPieCtrl(); // Disable CPU interrupts and clear all CPU interrupt flags: IER = 0x0000; IFR = 0x0000; // Initialize the PIE vector table with pointers to the shell Interrupt // Service Routines (ISR). // This will populate the entire table, even if the interrupt // is not used in this example. This is useful for debug purposes. // The shell ISR routines are found in DSP2802x_DefaultIsr.c. // This function is found in DSP2802x_PieVect.c. InitPieVectTable(); // Step 4. Initialize all the Device Peripherals: // This function is found in DSP2802x_InitPeripherals.c // InitPeripherals(); // Not required for this example // Step 5. User specific code: while(1) { GpioDataRegs.GPADAT.all = 0x0000000e; DELAY_US(1000000); GpioDataRegs.GPADAT.all = 0x0000000d; DELAY_US(1000000); GpioDataRegs.GPADAT.all = 0x0000000b; DELAY_US(1000000); GpioDataRegs.GPADAT.all = 0x00000007; DELAY_US(1000000); } } void Gpio_select(void) { EALLOW; GpioCtrlRegs.GPAMUX1.all = 0x00000000; // All GPIO GpioCtrlRegs.GPAMUX2.all = 0x00000000; // All GPIO GpioCtrlRegs.GPBMUX1.all = 0x00000000; // All GPIO GpioCtrlRegs.GPADIR.all = 0xFFFFFFFF; // All outputs GpioCtrlRegs.GPBDIR.all = 0x0000000F; // All outputs EDIS; } //========================================================================= // No more. //=========================================================================