- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
3.4.2 DSP的C语言中段的定义
段是在存储器中占据相邻空间的代码或数据 块。在DSP的C语言中段的定义包含以及两个内 容。
1 ?系统定义段;■bss 为C程序中的全局和静态变量保留存储空间
■far 为C程序中用far声明的全局和静态变量保
留存储空间
■stack 为C程序系统堆栈保留存储空间,用于保存
返回地址、函数间的参数传递、存储局部变量和保 存屮间结果
.system 用于C程序中malloc calloc和realloc函 数动态分配存储空间。;2 .用户定义段
包括用户自定义代码段和用户自定义数据段。 格式如下:
#pragma CODE_SECTION(symbol,section name);
用于将一段目标代码symbol链接与.text 段不同的存储空间section name段。 symbol是目标代码的起始地址,” section name是用户自定义段名。;用户自定义数据段:
#pragma DATA_SECTION(symbol/section name) 用于将一段目标数据symbol链接到与.bss 段不同的存储空间section name11段。 symbol是目标数据的起始地址,” section name是用户自定义段名。;3.5 C程序的结构及组成
完整的C程序由一个主函数main ()和其他 的子函数组成,每一个子函数完成特定的功能。
54x DSP的C语言入口地址固定为 c_intOO,在rts.lib中定义。
C语言支持丰富的数据类型和数据结构,在 CCS集成开发环境中,为C语言提供了完整的支 持硬件的底屋函数库和支持算法的DSP函数库。;在使用C语言的库函数时,在工程中 必须包括相应的函数库和rts.lib运行时支 持库。
下面是一般C语言程序的结构和组成 框架。;//#include包含语句定义程序中使用的函数库对应的?h头文件
#include “函数库 1
#include v函数库2
include “函数库3”
■ ■ ■
//#define定义程序中所有的宏替换
#define宏替换名 替换内容
■ ■ ■
〃如果函数调用在函数定义之前,需要对函数进行声明
函数类型函数名(函数参数列表);;//屮断服务程序(函数)的声明
Interrupt void function_name(void);
〃全局变量声明 变量类型全局变量名;
■ ■ ■
〃本程序的内部函数
函数类型函数名(函数参数列表)
{
〃本函数的局部变量定义
■ ■ ■
〃本函数中的算法;〃中断服务程序
Interrupt void function_name(void) ( //中断服务程序的局部变塞定义
■ ■ ■
〃中断服务程序的算法程序
…}
//主函数main()
Void main(void)(
〃局部变量定义
for(;;) { .
//数据的输入
■ ■ ■
〃数据处理函数;通常在CCS工程中需要用户自己编写的文;6.6 C语言的屮断编程
6.6.1 5402 DSP中断寄存器的结构
中断就是暂停正在执行的程序,并进入中 断服务程序(InterruptService Routine.ISR)o
__
5402 DSP的中断按中断源分可分为硬件 中断和软件中断;按中断是否可屏蔽分为可屏 蔽中断和非可丿蔽中断)(例如定时器中断是可 屏蔽的硬件中断。;在5402 DSP内有两个与中断相关的寄存器 ■■中断屏蔽寄存器IMR和中断标志寄存器IFRo 它们都是存储器映像寄存器(MMR) , IMR定 义了可屏蔽的硕件中断,如果IMR的某一位置 L则允许相应的屮断;IFR表示是否发生了中断, 如果IFR的某一位置1,则说明发生了相应的中 断,中断得到处理后,才会将中断标志清零。;以下4种情况会使中断标志清零:
① C54X复位;
② 中断在中断服务程序中得到处理,常用于中 断方式;
③ 将1写到IFR中的相应位,常用于查询方式;
④ 使用适当的中断号执行INTR指令。;在5402 DSP中IMR和IFR寄存器的定义如图 3?2所示。;注意:
在54xx系列的DSP中,不同型号的DSP的 IMR和IFR寄存器的定义有所不同,其中, TINTO表示定时器0的中断位,TINT1表示定时 器1的中断位。;另外,与中断相关的还有状态寄存器ST1中 的INTM位,INTM位是总中断屏蔽位, INTM=O时开放全部可屏蔽中断。具体到某一 个中断是否开放还取决于IMR寄存器的设置。;6.6.2 5402 DSP中断的初始化方法
一般中断的初始化包括以下步骤:
① 清除中断标志寄存器IFR中的中断标志;
② 设置中断屏蔽寄存器IMR中的相应
原创力文档


文档评论(0)