微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > MDK中为什么在指定的地址申明32位的变量申明不了!

MDK中为什么在指定的地址申明32位的变量申明不了!

时间:10-02 整理:3721RD 点击:
如图1

在指定的地址申明16位的变量是完全没有问题的,8位的同样也没有问题。但是申明32位的变量就出问题了如图2

编译错误!是这样的.\Obj\STM32LHL.axf: Error: L6984E: AT section prg_fm3051_main.o(.ARM.__AT_0x200010F6) has required base address 0x200010f6 which is not aligned to section alignment 0x00000004.求哪位大侠帮帮忙啊!芯片是STM32F1O3系列的!

.\Obj\STM32LHL.axf: Error: L6984E: AT section prg_fm3051_main.o(.ARM.__AT_0x200010F6) has required base address 0x200010f6 which is not aligned to section alignment 0x00000004.
这句是说你要求的基地址没有按4字节边界对齐,也就是说您定义4字节长度的变量,其要求的基地址必须能被4整除;
看你贴的内容,这些像是器件的寄存器定义,如果是的话,除非你知道另外多出来的16位是什么内容,建议不要修改寄存器定义,以保持和将来器件的兼容性

定义32位的时候要求字节对齐 可以把0x200010F6地址修改为0x200010F8 这样就可以了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top