CCSv7使用指南连载8:构建便于移植的工程

2017-12-17 C2000小百科 C2000小百科
版权声明:本系列文章欢迎转载,请注明出处,谢谢!

1 摘要

CCSv7是Texas Instruments针对自家嵌入式处理器或者单片机开发推出的集成开发环境,同时CCSv7也是完全免费的开发软件。本系列文章主要目的是介绍CCS使用入门及在实际项目开发过程中有用的技巧及方法。第8篇介绍如何构建便于移植的工程。本文也会介绍下在链接源文件时碰到的绝对路径和相对路径的问题。

2 基本概念

当我们导入C2000例程到CCSv7中后,会发现有很多源文件或者其他文件上面有个箭头,如下所示。
这里写图片描述
如果右击某个文件properities,能看到文件如下的属性,文件类型是Linked File, 有Location,还有Resolved location,看上去是链接过去的文件,有一个表示文件系统的路径变量,IDE会自动根据这个变量解析出文件的地址。
这里写图片描述

3 路径变量

在CCS工程里面,会有两部分主要的变量去表示路径:Path Variables 和 Build Variables。

Path variables 用于指定文件系统中的路径,比如源文件的路径。

Build variables 用于工程构建过程中定义的路径,比如指定头文件或者库文件的地址。

以一个工程为例,解释如何使用和操作这些变量的。

Pathvariables 主要目的是为添加文件到工程中提供快捷路径,便于程序移植。

打开一个新的工程,右键工程属性,点击Resource->Linked Resources->Path Variables可以看到当前工程中的Path Variables的列表。
这里写图片描述
再点击Linked Resources,可以看到链接到工程中的文件和相对应的路径。

这里写图片描述
如果要添加一个文件到工程中时,会弹出如下对话框,是选择Copy files还是Link to files,点击Link to files可以选择相对地址路径变量。
这里写图片描述
Build variables 主要目的是为在构建build过程中为编译时提供头文件搜索,为Linking是提供库文件搜索路径。

还是以刚刚打开的工程为例,右键工程属性,点击Build->Variables,可以看到当前定义的非系统的路径变量。
这里写图片描述

在Build->C2000 Compiler->Include Options能看到头文件搜索的路径。
这里写图片描述

在Build->C2000 Linker->File Search Path能看到库文件或者.cmd文件搜索的路径。
这里写图片描述

Note: 有时候在Build过程中会出现头文件或者库文件找不到的时候,一般可以从这些路径设置入手(从上面提供的2个搜索路径选项),来查问题。

这里写图片描述
请关注公众号【C2000小百科】,更多内容将会在公众号中发布。

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用汇编语言在ccsv5中实现DFT运算的示例代码: ``` ; DFT.asm ; 使用汇编语言实现DFT运算 .cdecls C,LIST,"msp430.h" ; 定义常量 .const N = 8 ; DFT长度 PI = 3.1416 ; 圆周率 ; 定义变量 .bss .align 2 x: .space 2*N X: .space 2*N .text ; DFT函数 .global DFT DFT: ; 初始化变量 push R4 push R5 push R6 mov #x, R4 mov #X, R5 mov #N, R6 ; 计算DFT mov #0, R2 ; 初始化k=0 loop: mov.w @R4+, R1 ; x(k) mov.w #0, R0 ; 初始化X(k) mov #0, R3 ; 初始化n=0 inner_loop: mov.w @R4+, R7 ; x(n) mov.w R2, R8 ; k*n mpy R7, r12 ; x(n) * cos(k*n) mac R7, r13 ; x(n) * sin(k*n) add R12, R0 ; X(k) += x(n) * cos(k*n) sub R13, R0 ; X(k) -= x(n) * sin(k*n) inc R3 ; n++ cmp R3, R6 ; n<N? jl inner_loop mov.w R2, R12 ; k mov.w R0, @R5+ ; X(k) add #2, R4 ; x++ inc R2 ; k++ cmp R2, R6 ; k<N? jl loop pop R6 pop R5 pop R4 ret ; 主函数 .global main main: ; 初始化x数组 mov #x, R4 mov.w #1, @R4+ mov.w #2, @R4+ mov.w #3, @R4+ mov.w #4, @R4+ mov.w #5, @R4+ mov.w #6, @R4+ mov.w #7, @R4+ mov.w #8, @R4+ ; 调用DFT函数 call #DFT ; 输出X数组 mov #X, R4 mov.w #N, R6 loop2: mov.w @R4+, R5 ; 输出X(k)的实部和虚部 call #printf mov.w #"\n", R1 call #putchar inc R6 cmp R6, #2*N jl loop2 ; 退出程序 mov.w #0, R15 ; printf函数 .global printf ; putchar函数 .global putchar ``` 这个示例代码实现了一个DFT函数,它可以计算给定长度为N的复数序列x的DFT,结果存储在另一个长度为N的复数序列X中。主函数中初始化了一个长度为8的复数序列x,然后调用DFT函数计算其DFT,最后输出结果。由于ccsv5没有内置printf和putchar函数,所以你需要自己实现这些函数,或者使用msp430-gcc等其他编译器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值