这行C代码来自微控制器矢量表的声明/初始化。 @“.intvec”必须有特殊含义。这背后的含义是什么?
注意:此过程在执行main()函数之前发生。
工具链是IAR,.intvec
位于0x00000000。
答案 0 :(得分:1)
这是非标准C代码。当您希望在特定内存位置声明变量时,@
通常用作非标准扩展。在这种情况下,它指向一个段.intvec
,它将在您的链接器文件中保留,该文件也是以一些自定义的,依赖于工具的方式编写的。
在这种特定情况下,他们希望确保在指定的地址处分配中断向量表。很可能MCU会将它放在某个地址,通常是在存储器映射的最开始或最后。
答案 1 :(得分:1)
在IAR @
中是一个链接器指令扩展,用于在绝对地址,特定链接器部分或特定寄存器中定位对象。在您的目标上,毫无疑问中断向量表位于0x00000000。
请参阅控制内存中的数据和功能位置部分toolchain documentation。