CCS6.0 DSP28335工程配置问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lamusique/article/details/76374344

对于建立ccs工程,首先一直都想着自己去建立一个新的工程,实际上建立新的工程中需要链接的文件特别多,对于新手而言,具有很大困难性。因此在此处强烈建议不要去建立新的工程,而是在现有的代码例程中改。那么问题来了,现有代码怎么进行二次开发呢?

首先我经过测试发现,以Example_2833x_Spi_7Led为例,其Example_2833x_Spi_7Led.c(即main文件)改动其名字仍可以有效编译。说明CCS6的工程文件指向不限于其.c文件名称,这就给我们提供了可以在原例程上通过添加.c文件来进行二次开发,下面具体介绍.c、.h文件的写法。以delay .c/.h为例。

delay.c文件code:

#include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h"   // DSP2833x Examples Include File

void delayloop(void)
{
    volatile long i;
    for (i = 0; i < 500000; i++) {}
}
其中引用DSP2833x_Device.h,DSP2833x_Examples.h两个头文件,那么我们的delay.h去哪了呢?后面讲。

delay.h文件code:

#ifndef DELAY_H
#define DELAY_H

#ifdef __cplusplus
extern "C" {
#endif

void delayloop(void);

#ifdef __cplusplus
}
#endif /* extern "C" */

#endif
固定模板总结:

#ifndef 大写头文件名
#define 大写头文件名

#ifdef __cplusplus
extern "C" {
#endif

.c文件的宏定义

.c文件的函数声明

.c文件的变量声明


#ifdef __cplusplus
}
#endif /* extern "C" */

#endif

还差最后一步便可在main.c文件引用,在此我们需要在DSP2833x_Device.h添加#include “delay.h”,和其他头文件放在同一文件路径下,进行编译便可解决问题。如图所示。


以上说明所有的头文件均需要包括在#include DSP2833x_Device.h,DSP2833x_Examples.h两个头文件中。

其中DSP2833x_Examples.h包括

#include "DSP2833x_GlobalPrototypes.h" 
#include "DSP2833x_ePwm_defines.h"             // Macros used for PWM examples.
#include "DSP2833x_Dma_defines.h"              // Macros used for DMA examples.
#include "DSP2833x_I2C_defines.h"              // Macros used for I2C examples.
#include "DSP2833x_DefaultISR.h"

最好不要改动DSP2833x_Examples.h中代码,建议在DSP2833x_Device.h添加自己写的.c文件的头文件。最后如果想改工程名字可以在ccs6软件中对该工程右键Rename,可改成与项目文件同名。


再来说说.C和.H文件的关系:

(1).H文件是同名.C放置其供别的文件调用的函数声明的地方。

(2).H文件是同名.C放置其供别的文件调用的变量声明(全局变量)的地方。

(3).H文件是同名.C放置文件包含的地方。

(4).H文件是同名.C放置宏定义的地方。

可以说主文件引用#include "ABC.h"文件后,相当于调用了ABC.c里面的函数和全局变量、对于已经在ABC.c文件定义且在同名.h中声明的全局变量,main.c文件中再次调用无需重复定义(因为你调用了这个文件的全部,包含在main中);其次必须声明为全局变量,才能为其他.c文件调用。


那么如何在写一个全局变量来实现多个函数调用呢,在这有两个方法:

1、对于某个.c文件我们定义该变量(同名.h文件不声明),但在main.c文件我们使用全局变量extern如:extern int i;

2、在某个.c文件同名.h文件中对该变量全局声明如extern u16 USART2_RX_STA;同时在该.c文件中再次定义u16 USART2_RX_STA;继而在main文件添加#include 该.h后直接使用该变量无需再次定义

该两种方法亲测有效



猜你喜欢

转载自blog.csdn.net/lamusique/article/details/76374344