首页 理论教育 C24xDSP编译器关键字详解

C24xDSP编译器关键字详解

时间:2023-06-29 理论教育 版权反馈
【摘要】:C24x DSP的C编译器,支持标准的const、register、volatile等关键字,还扩展了inte rrupt、io port等关键字。例如:下面的程序段声明了一个无符号I/O端口变量10h,将a写到端口变量10h,再从端口10h读入b。inte rrupt关键字告诉编译器,以生成必需的寄存器保护和程序返回机制的代码。

C24xDSP编译器关键字详解

C24x DSP的C编译器,支持标准的const、register、volatile等关键字,还扩展了inte r⁃rupt、io port(I/O端口)等关键字。

1.关键字const

该关键字可以优化存储器的分配。加关键字const到任何变量的定义中可以确保其内的值不变。

2.关键字volatile

该关键字所定义的变量是可变的,可以被其他硬件修改,而不仅仅只能由C程序修改。优化器会尽量减少存储器的访问,所以有时必须禁止优化,特别是循环控制变量。例如:

如果没有关键字volatile,ctrl指针所指向地址单元的内容在循环过程中不会发生变化,循环被编译优化成单次读,造成死循环。增加了关键字volatile后,则ctrl指针所指向的地址不会优化成单次读,可以读取外部事件引起的单元内容的变化。

3.关键字ioport

该关键字允许访问DSP的I/O空间,其一般形式为:

其中,ioport指示这是定义一个端口变量的关键字。type(类型)必须是char(字符型)、short(短整型)、int(整型)或对应的无符号类型。porth exnum为定义的端口变量,其格式必须是“port”后面跟一个十六进制数,如“port0A”是定义访问空间地址0Ah的变量。(www.xing528.com)

例如:下面的程序段声明了一个无符号I/O端口变量10h,将a写到端口变量10h,再从端口10h读入b。

再例如:访问地址映射到I/O空间0xFFFF的等待状态控制寄存器WSGR。在头文件中有如下定义:

此时访问等待状态控制寄存器,既可以用portFFFF,也可以用WSGR,比如:

【例4-6】DSP扩展外部I/O接口,4个拨码开关连接的输入端口的I/O地址为0xC001,4个LED指示灯的连接的输出端口I/O地址为0xC000,编程将4个开关的状态反应到4个指示灯。

4.关键字interrupt

该扩展关键字用来说明定义的函数是一个中断函数。中断函数被定义成返回void类型,而且无参数调用。inte rrupt关键字告诉编译器,以生成必需的寄存器保护和程序返回机制的代码。例如:

有一个特殊的名为c_int0的中断程序(汇编语言中名称为_c_int0),用于DSP复位中断的处理。它完成系统初始化并调用主函数main(),是用户C程序的入口。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈