自学内容网 自学内容网

stm32 指定变量存储地址

uint8_t array[10] attribute((at(0x20000000)))

当你使用 attribute((at(地址))) 强制将变量放置在特定地址时,编译器和链接器通常不会自动调整其他变量的地址以避免冲突。这意味着,如果指定的地址已经被其他变量占用,就会发生冲突。

如果如果有冲突,keil会提示
Error: L6971E: metering_module.o(.data) type RW incompatible with main.o(.ARM.__AT_0x20000000) type ZI in er RW_IRAM1.

可以在xxx.map中看RAM用到多少,哪里有空间

在这里插入图片描述
在最后地址0x20005f38后面再指定。
例如:uint8_t array[10] attribute((at(0x20006000)))
在这里插入图片描述
这下就OK了


原文地址:https://blog.csdn.net/qq_27741499/article/details/143981725

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!