keil 环境下 AREA SUN ,NOINIT, READONLY , ALIGN=3 分别表示什么意思

keil 环境下 AREA SUN ,NOINIT, READONLY , ALIGN=3 分别表示什么意思,第1张

伪指令AREA,表示开辟一段内存空间,段名是SUN

NOINIT:指定此数据段仅仅保留了内存单元,而没有将各初始值写入内存单元,或者将各个内存单元值初始化为0

READWRITE可读可写

ALIGN=3-- 2 的3次方表示以8字节对齐

在Define框中填入上图的宏定义,即可解决编译警告

STM32F10X_HD:表示我使用的STM32芯片是高性能f103系列

USE_STDPERIPH_DRIVER:表示我们需要使用stm32标准外设库

实际调试过程中发现,b - a = 4,实际上B_TypeDef只是继承自A_TypeDef,仅仅增加了一个2字节的校验和,造成我在打印过程中,用sizeof(B_TypeDef),老是多打印两个字节的数据,经过大神的指点,确定是对齐的问题,解决方式如下:

利用伪指令 #pragma pack (n) 动态调整内存对齐的方式

我在实际定义结构体时,增加了两条伪指令,完美解决问题。

以上就是关于keil 环境下 AREA SUN ,NOINIT, READONLY , ALIGN=3 分别表示什么意思全部的内容,包括:keil 环境下 AREA SUN ,NOINIT, READONLY , ALIGN=3 分别表示什么意思、KEIL编译STM32程序时错误、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9717803.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存