6.2.2关键字 1.const ●C55xC编译器支持标准C语言的const:关键字。 ·将这个关键字使用到对任意变量或数组的定义上可以 确保它们的值不改变。 ●若定义一个对象为const,那么const段就会为该对象 分配存储空间。const数据存储分配有两个例外: ◆若定义对象时又加volatile(例volatile const int), volatile使分配到RAM(程序不改变const volatile的 对象,但是程序外的东西可以改变之);7使const就 ◆若对象是auto变量(作用域为函数内);厂 像没用一样. ●const关键字可定义大常数表并将之分配到系统ROM中。 例:const int digits[1={0,1,2,345,6,78,9; 14
6.2.2 关键字 1. const ⚫C55x C编译器支持标准C语言的const关键字。 ⚫将这个关键字使用到对任意变量或数组的定义上可以 确保它们的值不改变。 ⚫若定义一个对象为const, 那么const段就会为该对象 分配存储空间。 ◆若定义对象时又加volatile (例 volatile const int x), volatile使分配到RAM(程序不改变const volatile的 对象, 但是程序外的东西可以改变之) ; ◆若对象是auto变量(作用域为函数内) ; ⚫const关键字可定义大常数表并将之分配到系统ROM中。 14 使const就 像没用一样. 例: const int digits [] = {0,1,2,3,4,5,6,7,8,9}; const数据存储分配有两个例外:
2.ioport oC55xC编译器对标准C语言进行了扩展,增加了ioport 关键字来支持I/O寻址模式。 ioport类型限定词可和标准类型(包括数组、结构体、 共用体和枚举)一起使用。 ioport int k 当与数组一起用时,ioport限制的是数组单元而非数组 类型本身。 ioport int x[5]; ioport可单独使用,此时int限定词就是默认的。 15
2. ioport ⚫C55x C编译器对标准C语言进行了扩展, 增加了ioport 关键字来支持I/O寻址模式。 ⚫ioport类型限定词可和标准类型(包括数组、结构体、 共用体和枚举)一起使用。 ⚫当与数组一起用时, ioport限制的是数组单元而非数组 类型本身。 ⚫ioport可单独使用, 此时int限定词就是默认的。 15 ioport int k ; ioport int x[5] ;
2.ioport ioport类型限定词只能用于全局或静态变量。局 部变量不能用ioport限制,除非变量是个指针。 例6-1,ioport关键字的使用。 ioport int k :/*正确,可限定全局变量*/ void foo(void) { ioport int i一,/*错误,不能限定局部变量*/ ioport int*j,/*正确,可限定指针*/ 16
⚫ ioport类型限定词只能用于全局或静态变量。局 部变量不能用ioport限制, 除非变量是个指针。 ioport int k ; /*正确,可限定全局变量* / void foo(void) { ioport int i ; /*错误,不能限定局部变量* / ioport int *j ; /*正确, 可限定指针* / } 16 例6-1,ioport关键字的使用。 2. ioport
3.interrupt C55xC编译器对标准C语言进行了扩展, 增加了interrupt关键字,来指定某个函 数为中断函数。 interrupt void TIME_ISRO unsigned int flags; } 17
3. interrupt 17 interrupt void TIME_ISR() { unsigned int flags; ... } ◼ C55x C编译器对标准C语言进行了扩展, 增加了interrupt关键字, 来指定某个函 数为中断函数
4.onchip Onchip关键字声明一个特殊指针,该指针所指向数据 可用作双MAC指令的操作数。在链接时这些数据必须 被链接到DSP片内存储器,否则会导致经BB总线而引 用外部扩展存储器而发生错误。 例, onchip int x[100]; /*数组声明*/ onchip int *p /*指针声明*/ 18
4. onchip ⚫Onchip关键字声明一个特殊指针, 该指针所指向数据 可用作双MAC指令的操作数。在链接时这些数据必须 被链接到DSP片内存储器, 否则会导致经BB总线而引 用外部扩展存储器而发生错误。 18 例, onchip int x[100] ; /* 数组声明 */ onchip int *p ; /* 指针声明 */