主题中讨论的其他部件:MSP430FR6989
您好,
我很难在FRAM中放置变量。 我正在使用文档技术,使用编译器的#pragma持久性功能。 执行此操作时,变量被放置在RAM中,而不是FRAM中。 下面是我正在使用的代码示例:
#pragma persistent( FRAM_WRITE ) //#pragma location = 0x4400; unsigned long FRAM_write[128];
这会将FRAM_WRITE置于RAM中,如内存映射中所示:
输出 属性/
书帖 页面 原点 长度 输入书帖
----------------- -------- -------- --------
.bss 000001 00001c000000059 a 未初始化
0.0001万c00 000002000万00200 (0.02万 (.common:fRAM_write)
但是,当我使用#pragma location在FRAM中设置变量的位置(例如,在0x4400位置)时,它将被放置在FRAM中。
#pragma persistent( FRAM_WRITE ) #pragma location = 0x4400; unsigned long FRAM_write[128];
以下是上述代码的内存映射:
.TI.Bound:FRAM_WRITE
* 0.0044万 0000440万 0000.02万 未初始化
0.0044万00 000002000万00200 main.obj0.02万 main.obj (.ti.bound:fRAM_write)
使用#pragma位置的唯一缺点是,FRAM_WRITE缓冲区现在正在步进某些代码,因为现在,当使用以下测试代码将缓冲区写入时,代码会崩溃。
它会立即在main()中执行。
memset( fRAM_write, 0xA5, sizeof( fRAM_write ));
这可能是编译器问题? 我正在使用MSP430_CCS.4.LTS和16.9 7.2 .0。
如能就此问题提供任何帮助,我们将不胜感激。
谢谢!
亚当