DSP技术及应用 教学课件 作者 江金龙 第5-8章_第7章.ppt

DSP技术及应用 教学课件 作者 江金龙 第5-8章_第7章.ppt

ID:50354659

大小:1.55 MB

页数:63页

时间:2020-03-08

DSP技术及应用 教学课件 作者 江金龙 第5-8章_第7章.ppt_第1页
DSP技术及应用 教学课件 作者 江金龙 第5-8章_第7章.ppt_第2页
DSP技术及应用 教学课件 作者 江金龙 第5-8章_第7章.ppt_第3页
DSP技术及应用 教学课件 作者 江金龙 第5-8章_第7章.ppt_第4页
DSP技术及应用 教学课件 作者 江金龙 第5-8章_第7章.ppt_第5页
资源描述:

《DSP技术及应用 教学课件 作者 江金龙 第5-8章_第7章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第7章C语言编程与混合编程7.1C语言编程7.2C程序编译7.3C语言与汇编语言混合编程7.1C语言编程7.1.1C54x支持的基本数据类型C54xDSP的基本数据类型如表7.1所示,字长为16位或32位。7.1.2常量与变量常量名和变量名都以字母或下划线开头,最多可以有100个字符,不能使用C语言的关键字来命名常量名和变量名。常量在编译后直接嵌入代码中。变量名经C编译器编译后,代表一个变量的内存地址,并自动在变量名前加下划线(_), 如变量“a”经编译后,在内存单元显示为“_a”。这样的好处就是C语言定义的变量和汇编文件定义的变量可以重名且不会混淆,还有一个好处就是汇编

2、文件可以调用C语言定义的变量和函数(C语言定义的函数名在编译后也在函数名前加“_”),以实现混合编程。   符号的常量名通常用大写字母表示,变量名用小写字母表示,以示区别。变量名常采用著名的匈牙利命名规则,当然,变量较少时,也可以简单地命名变量。7.1.3运算符与表达式将常量或变量用运算符连在一起就构成了表达式,再在句末加上分号(;)即成为语句。(1)赋值运算符:=。对DSP寄存器进行赋值时,先将寄存器定义为指针,然后与C语言变量赋值类似地进行赋值。如中断屏蔽寄存器(IMR)的地址为0地址,其定义和赋值如下:#defineIMR*(int*)0x0IMR=0;对外部端

3、口进行赋值时,先用关键字ioport和端口地址定义端口名,然后也是与C语言变量赋值类似地进行赋 值,其定义和赋值如下:ioportunsignedintport8000;//定义一个外部端口,地址为0x8000port8000=0;(2)算术运算符:+(加)、-(减)、*(乘)、/(除)、%(取模)。 在C54xDSP中,取模运算按分子的符号确定取值的符号,如10%-3=1;-10%3=-1等。类似地,C54xDSP也支持组合运算符,如+=、-=、*=、/=、%=及++、--等。   在表达式中,只能使用小括号改变运算的优先顺序。(3)关系运算符:==(等于)、![K

4、G-*2]=(不等于)、>(大于)、>=(大于等于)、<(小于)、<=(小于等于)。   作为关系运算表达式的输入,0为假,非0为真;作为运算结果,0表示假,1表示真。(4)位运算符:&(按位与)、

5、(按位或)、∧(按位异或)、~(取反)、<<(左移)、>>(右移)。(5)逻辑运算符:&&(逻辑与)、‖(逻辑或)、!(逻辑非)。(6)三元运算符:“?:”,它有三个参加运算的元素,而且有返回值,其使用格式为(express)?(val1):(val2);[HT5]如果express的值为真,则返回表达式val1的值,否则返回val2的值。这条语句也可用if语句代替,

6、可不必记忆。   运算符的优先级自高到低为逻辑非、算术运算符、关系运算符、逻辑运算符&&或‖、赋值运算符。7.1.4函数及调用规则一个C语言编写的函数就是一个功能模块,多个函数可以组成更大的功能模块。main函数包括除中断函数外的其他全部函数的功能,DSP程序总从main函数开始执行。为了能正确执行main函数,需要一个C语言运行环境。通过适当设置TMS320C54xC/C++编译器,DSP项目中会自动添加相应的C语言初始化代码,以适合main函数的执行。1.全局变量和局部变量   在主函数体中定义的变量或主函数体外的变量为全局变量,在编译时有固定的存储地址;而在其

7、他函数体中定义的变量称为局部变量,存储单元是在堆栈中分配局部变量的,称为局部帧。一旦函数执行完毕,局部帧必须被收回,局部变量就消失了,所以局部变量的作用域仅限于函数体内部。2.参数传递   如果函数存在参数传递,则调用者将第一个参数(最左边)载入累加器A,而将剩下的参数以逆序压入堆栈,最右边的先压栈,最左边的参数最后一个压栈,即在最低的地址。 这些压入堆栈的参数称为局部帧,参数传递就是将实参的值复制到形参的值的过程。若参数为实浮点数或长整型数,则是低字先入栈,高字后入栈。若参数中有结构形式,则调用函数会给结构分配空间,其地址通过累加器A传递给被调用函数。一旦函数执行完毕,局

8、部帧被收回,形参则消失。3.函数返回   若函数返回一个值,则被调用函数将返回值载入累加器A中,再从A复制到实参中;如果是返回一个结构体,则将结构体的内容复制到累加器A所指向的存储空间;如果没有返回值,则A被置0,然后撤销局部帧和恢复函数中所有保护的寄 存器。4.main函数main函数主要由程序初始化代码、硬件初始化代码以及定时扫描代码等组成。main函数往往是死循环函数,定义死循环的语句有for(;;)或while(1)等。5.中断函数   中断函数利用关键字interrupt来定义。如定义一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。