




免费预览已结束,剩余36页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章如何构建一个完整的工程 目录 1 一个完整的工程有哪些文件构成及其作用2 怎样创建一个新的DSP工程3 通用扩展语言GEL 4 1DSP开发环境 硬件平台 DSP开发通常需要软件开发环境和硬件平台 软件开发环境 CCS CodeComposerStudio 是TI公司为方便开发人员而设计的软件环境 硬件平台 由仿真器和目标板组成 仿真器的作用是将目标板和PC机连起来 使得您可以在CCS里对目标板上的DSP进行编程 烧写和调试等工作 而目标板是指具有DSP芯片 上电后能保证DSP独立运行电路板 一个完整的工程由哪些文件构成 打开CCS3 3软件前的准备工作1 要确定访问的文件中不含中文字符 因为CCS3 3是英文字符的软件 2 将TMS320F2812例程文件夹中的Gpio文件夹复制到CCS3 3安装路径下MyProjects文件夹里 打开CCS软件后 打开工程的方式有以下两种 一种是点击菜单栏的Project Open 另一种方法是左侧Files窗口内 点击 Projects 然后右键 点击 OpenProject 打开gpio工程之后 gpio pjt工程会显示在左侧Files窗口内 点击gpio pjt左边的加号 工程内部的文件就展现在我们面前了 下面我们来分析一下构成该工程的文件 首先我们看到的是Include文件夹下面有很多后缀是 h的文件 这就是2812的头文件了 头文件的作用是定义了2812内部寄存器的数据结构 头文件一般情况下不需要修改 如果你需要定义一些在整个工程内都具有作用域的全局变量的时候 可以在头文件中定义这些变量 具体的方法我们以后在例程或项目实践中应该会有介绍 然后是libraries下面扩展名为 lib的库文件 它是C语言系统的库文件 库文件下面是source文件夹 里面的文件都是以 c为扩展名的 顾名思义 就是源文件 也就是我们开发时编写的软件代码都是保存在这些文件中的 最后是以 CMD为扩展名的文件 这个文件的作用是用来分配存储空间的 由于DSP编译器的编译结果是未定位的 DSP也没有操作系统来定位执行代码 DSP系统的配置需求也不尽相同 因此我们根据实际的需求 自己定义代码的存储位置 打个通俗的比喻 就是我们有一个仓库 现在需要把货物存放到仓库里面去 为了便于日后取用货物 我们将货物分门别类 然后把它们存放到指定的位置去 把哪些货物放到哪个位置的规则 就是我们的CMD文件的内容 CMD文件又分成两种 一种是分配RAM空间的 用来将程序load到RAM内进行调试 因为我们大部分时间都是在调试程序 所以多用这类CMD gpio工程中的sram cmd就是用于分配RAM空间的 另一种是分配FLASH空间的 当程序调试完毕后 需要将其烧写到FLASH内部进行固化 这个时侯我们就需要使用这类CMD文件了 总结 1 头文件 以 h为后缀的文件 主要定义了芯片内部寄存器结构 中断服务程序等内容 2 库文件 以 lib为后缀的文件 包含了寄存器的地址和对应标示符的定义 还包含标准C C 运行支持的库函数 3 源文件 所编写的代码都写在各个源文件中 包含了所有要实现功能的代码 是工程的核心 4 CMD文件 分配RAM空间 用来将下载到RAM中的程序进行调试 是因为DSP编译器编译结果是未定位的 DSP也没有相应系统来执行代码 DSP系统的配置需求也不尽相同 因此需要定义代码的存储位置 4 2怎样创建一个新的DSP工程 1 打开CCS 点击菜单栏里的Projects 点击New 会跳出新工程设置的对话框 如下图所示 2 在Projects栏内我们填写工程的名字 hellodsp 检查Location 如果您都是按照默认路径来的 那没有问题 如果不是默认路径 您得手工指定一下文件路径 确认没有问题后点击Finish 我们发现在myprojects文件夹下多了hellodsp文件夹 hellodsp文件夹下生成了hellodsp pjt文件 而且在CCS左侧的Files栏内 出现了我们刚刚创建的hellodsp pjt 3 根据前面一个完整工程的组成情况的分析 我们首先来准备头文件 由于头文件多数情况下是不需改动的 也就是说大家用的头文件都是一样的 因为是定义2812的内部资源 所以可以将newproject文件夹内的头文件全部复制到hellodsp文件夹 4 将newproject文件夹内的 lib文件和 cmd文件同样复制到hellodsp文件夹 5 下面就剩下源文件了 我们先来分析一下newproject文件夹下各个源文件的内容 以便于我们更好的理解和采用这种文件结构 F2812常用的源文件 通过上面的分析我们可以看到几个文件非常重要 DSP28 DefaultIsr C DSP28 GlobalVariableDefs C DSP28 PieCtrl C DSP28 PieVect C DSP28 SysCtrl C 把这些未编辑过的文件复制过来 其他的外设相关的文件 这个工程中涉及到哪个外设 就把这个外设相关的源文件复制过来 一起加入工程 接下来就是往工程内添加文件了 首先我们来添加库文件 点击 hellodsp pjt 右键 点击 AddFilestoProject 跳出了添加文件的对话框 在筛选框栏内选择 ObjectandLibraryFiles 就会看到RTS2800N lib 点击并打开 便将库文件添加到工程中来了 用同样的方法 来添加sources文件夹下的源文件和CMD文件 只是添加源文件时 筛选框的条件是 C SourceFile cpp cc cxx 添加CMD文件时 筛选框的条件应当选择 LinkerCommandFile cmd lcf 创建main函数 点击菜单栏中的 File New SourceFile 在编辑区域内出现了一个新的Untitled1文件 点击 File Save 会出现保存文件的对话框 文件名填写 hellodsp 关键要注意的是保存类型 因为我们现在要建立的是源文件 所以选择 C C SourceFlies c 点击保存 这时 我们看到原来的 Untitled1 变成了 hellodsp 了 我们在hellodsp文件内输入以下内容 然后点击保存 并关闭hellodsp c文件 再用我们刚才添加文件的方法将hellodsp c添加到工程中来 点击工具栏上的 RebuildAll 对hellodsp pjt进行编译 编译结果如图所示 出现了一个warning 根据warning的提示是用默认的1024bytes来创建 stacksection 就是堆栈段 点击菜单栏的 Project buildoptions 弹出编译选项的对话框 选择 Linker 标签 在StackSize stack 栏填写 800 点击确定 重新编译 4 3通用扩展语言GEL GEL是GeneralExtendedLanguage的缩写 即通用扩展语言 是一种类似于C的解释性语言 用户可以通过在文件中使用GEL语言来创建函数 从而扩展CCS的功能 通过GEL 可以访问目标板的存储器 并为CCS的GEL菜单添加选项 4 3 1GEL语法 GEL语法支持的语句类型 GEL是C语言的一个子集 GEL函数的定义 GEL函数定义如下 斜体字表示变量 funcName parameter1 parameter2 parametern statements funcNameGEL函数名parameters有效的GEL参数statements有效的GEL语句 注 GEL函数定义在文本文件中 其扩展名是 gel 一个GEL文件可以包含多个GEL函数的定义 但是一个GEL函数定义不能嵌套在另一个GEL函数的定义中 例4 1定义平方函数 square a returna a square 1 5 2 25 square 3 9 在GEL函数square中 并没有指定返回值的类型 也没有说明参数a的类型 这是GEL语言和C语言的区别 例4 2定义初始化对话框函数 dialogInit filename FiletobeLoaded CPUname CPUName initValue InitializationValue GEL Load filename CPUname a initValue 首先 dialog不是指返回值的类型 这个函数里也没有返回值 dialog是关键字 意思是对话框 也就是说当调用函数Init的时候 会弹出一个对话框 该对话框会有3个项 分别是函数的3个参数 filename CPUName和initValue 每个参数后面紧跟的字符串是对参数的描述 4 3 2GEL函数的参数 GEL参数可以是以下任意一种 一个实际的 仿真的DSP目标板符号值 一个数字常量 如果传递的是表达式或者常数值 一个字符串常量 例4 3分析GEL函数参数 Initialize a filename b targVar b a 0 GEL Load filename returnb b 下面是对函数Initialize的正确调用 Initialize targetSymbol C CCStudio v3 3 MyProjects gpio Debug gpio out 28 4 2 52 当执行函数Initialize时 参数a被定义为DSP的标示符targetSymbol 参数filename初始化为字符串常量 C CCStudio v3 3 MyProjects gpio Debug gpio out 参数b通过计算成为常数114 52 这些值在函数中对应参数的地方使用 GEL函数的调用 通常可以在可以输入C表达式的任何地方调用一个GEL函数 可以从任何能接受有效C表达式的对话框中调用一个GEL函数 还可以在一个GEL函数中调用另一个GEL函数 4 3 3GEL语句 返回语句If else语句While语句注释语句预处理语句 GEL返回语句 GEL在一个函数里支持标准C的返回语句 其一般形式为 returnexpression 一个返回语句并不是需要返回一个值 一个没有表达式的返回语句将控制返回到调用处 但并不返回有用的值 这和当函数执行到终点时仍没有遇到返回语句的结果是一样的 与标准C语言不同的是 GEL函数的定义并不需要指定返回值的类型 返回值的类型在程序运行时决定 GELif else语句 GEL支持标准C的if else语句 通用格式为 if expression statement1elsestatement2 执行if else语句时 两个语句中只有一个才会执行 statement1和statement2可以是一个单语句 也可以是用括号括起来的多个语句 GELwhile语句 GEL的while语句类似于标准C的while语句 但是GEL不支持标准C的continue和break语句 通用格式为 while expression statement 执行while语句时 先计算表达式expression的值 如果expression的值为真 语句执行 表达式被从新计算 这里的statement可以是单语句 也可以是括号里的多个语句 GEL注释 GEL支持标准C语言的注释 GEL的注释 限用字符 和 可以跨越若干行 GEL预处理语句 GEL支持标准C的 define预处理关键字 这也是唯一可用的预处理关键字 下面的语句 使预处理器用给定的字符序列取代标识符 其中字符序列前后的空格都不要 defineidentifiertoken sequence下面的语句 第一个标识符和括号之间没有空格 是一个宏定义 其参数是标识符列表 defineidentifier identifier list token sequence 4 4关键字hotmenu 使用关键字hotmenu 将一个GEL函数添加到GEL菜单里 则该函数一旦被选中就立即执行 其语法如下 hotmenufuncname statements 关键字dialog 使用关键字dialog 向GEL菜单添加GEL函数 并为参数输入创建一个对话框 从GEL菜单选择该函数时 会出现一个对话窗口 并提示输入参数 函数定义时紧跟在参数后面的字符串用来在对话窗口里描述参数 其语法如下 dialogfuncName paramName1 param1definition param
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 华宁县期末数学试卷
- 关于幼儿园现状的调查报告
- 畜牧科普教育基地创新创业项目商业计划书
- 城市道路、广场草坪维护服务创新创业项目商业计划书
- 创业投资对IPO抑价的影响:基于中国上市公司的实证研究
- 小升初语文名师辅导计划
- 企业文化与组织适应能力关联考核试卷
- 刺绣艺术在交互式教育平台中的文化传承教育考核试卷
- 乐器行业市场数字营销工具应用案例分析考核试卷
- 纺织品行业财务分析框架考核试卷
- 品质管理培训资料
- 成都国资委采购管理办法
- 2025年物业管理师考试试卷及答案
- 面向信息意识培养的高中信息技术大单元教学设计与实施
- 林业生物技术课件
- 印章管理规定培训
- 政务新媒体培训
- 公司搬迁开工仪式策划方案
- 2025年劳动关系协调员(初级)专业考试试卷
- 人员配备方案(3篇)
- 如何提高患者满意度
评论
0/150
提交评论