欢迎来到天天文库
浏览记录
ID:37377631
大小:1.32 MB
页数:43页
时间:2019-05-12
《张永祥TMS320C54系列DSP原理与应用第六章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章TMS320C54xDSP的C/C++程序设计第6章TMS320C54xDSP的C/C++程序设计6.1C/C++程序设计基础6.2程序设计示例6.3C语言和汇编语言混合编程2首都师范大学信息工程学院6.1C/C++程序设计基础DSP生产厂商及第三方为DSP软件开发提供了C编译器,使得利用高级语言实现DSP程序的开发成为可能。在TI公司的DSP软件开发平台CCS中,又提供了优化的C编译器,可以对C语言程序进行优化编译,提高程序效率,目前在某些应用中C语言优化编译的结果可以达到手工编写的汇编语言效率的90%以上。3首都师范大学信息工程学院一、
2、面向DSP的程序设计原则面向DSP的C/C++程序设计和通用计算机上的C/C++程序设计从本质上和工作原理上来说都是一致的,都是采用C/C++编程语言来对处理器进行编程,但受硬件资源和处理对象的不同,也有一些区别。在面向DSP的C/C++程序设计中,要注意以下几个原则:1、灵活使用嵌入式C语言中的位操作指令;2、编译系统不允许有太多的程序嵌套;3、对DSP硬件的时序要求需要考虑;4、不同库函数的区别使用;5、变量不同存储类型的使用;6、尽可能模块化设计;4首都师范大学信息工程学院6.1C/C++程序设计基础二、C/C++语言数据类型TMS320C
3、54xDSP支持的基本数据类型5首都师范大学信息工程学院6.1C/C++程序设计基础类型长度最小值最大值charsignedchar16位-3276832767unsignedchar16位065535short16位-3276832767unsignedshort16位065535intsignedint16位-3276832767unsignedint16位065535longsignedlong32位-21474836482147483647unsignedlong32位04294967295enum16位-3276832767float3
4、2位1.19209290e-383.4028235e+38double32位1.19209290e-383.4028235e+38longdouble32位1.19209290e-383.4028235e+38pointers16位00xFFFF要注意的是由于TMS320C54xDSP是16位的处理器,字节长度为16位,sizeof操作符返回的对象长度是以16位为字节长度的字节数。例如sizeof(int)=1。同时可以发现短整型和整型数据类型是一致的,浮点型、双精度浮点型和长双精度浮点型是一致的,所以实际使用中可以将常用的数据类型进行适当简化,
5、即将短整型、整型统一为整型(int),将各种浮点类型统一为浮点型(float)。三、C/C++语言程序结构从执行方式上来划分,基本的程序结构可以划分为顺序结构、分支结构、循环结构三种。四、C/C++语言函数从函数定义的角度看,函数可分为用户定义函数和库函数两种。1.用户定义函数由用户按需要写的函数。用户自定义函数,不仅要在程序中定义函数本身,而且在主调函数模块中还必须对该被调函数进行类型说明,然后才能使用。6首都师范大学信息工程学院6.1C/C++程序设计基础函数定义的一般形式:类型说明符函数名(形式参数表){类型说明语句}类型说明符和函数名称为
6、函数头。类型说明符说明本函数返回值的类型。函数名是由用户定义的标识符,函数名后有一个空括号,其中可以有参数,也可以无参数,但括号不可少。{}中的内容称为函数体。在函数体中也有类型说明,这是对函数体内部所用到的变量的类型说明。在很多情况下都不要求无参函数有返回值,此时函数类型符可以写为void。7首都师范大学信息工程学院6.1C/C++程序设计基础有参函数比无参函数多了形式参数表,包括形式参数及其类型,在形参表中给出的参数称为形式参数,它们可以是各种类型的变量,各参数之间用逗号间隔。示例如下:voidConvolveok(double*Input,
7、//原始输入数据double*Impulse,//冲击响应double*Output,//卷积输出结果Word16length//卷积序列长度)8首都师范大学信息工程学院6.1C/C++程序设计基础{inti,k,p;doubler;p=0;for(k=0;k<=length-1;k++){Output[k]=0;r=0;for(i=0;i<=p;i++)首都师范大学信息工程学院96.1C/C++程序设计基础{r=Input[k-i]*Impulse[i];Output[k]=Output[k]+r;}p=p+1;if(p>length-1)p=
8、length-1;elsep=p;}p=length-2;for(k=length;k<=length+length-1;k++)首都师
此文档下载收益归作者所有