CCS6.0 DSP28335工程配置问题
2019-07-13 11:11发布
生成海报
对于建立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后直接使用该变量无需再次定义该两种方法亲测有效
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮