61ic电子在线 首页 技术 嵌入式系统 查看内容

CCS6.0 DSP28335工程配置问题

2018-1-1 01:25| 发布者: 61ic| 查看: 270| 评论: 0|原作者: XUGONG|来自: XUGONG

摘要: 对于建立ccs工程,首先一直都想着自己去建立一个新的工程,实际上建立新的工程中需要链接的文件特别多,对于新手而言,具有很大困难性。因此在此处强烈建议不要去建立新的工程,而是在现有的代码例程中改。那么问题 ...
对于建立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后直接使用该变量无需再次定义

该两种方法亲测有效

鲜花

握手

雷人

路过

鸡蛋

地址 :湖南省株洲市天元区利江花园
合作 Email: administration@61ic.com

  • 关注61ic官方微博
    了解最新动态

  • 关注61ic微信公众号
    这里有好玩的讯息

  • 加入61ic交流群
    不断在这里成长

© 2014-2017 HuNan 湖南索炜达电子科技有限公司 . All rights reserved.
湘公网安备 43020202000020号

Archiver|手机版|小黑屋||湘ICP备13001086号-2 QQ 
返回顶部