[应用相关] STM32要求双字节变量必须偶数地址?

[复制链接]
1350|31
juventus9554 发表于 2020-3-7 10:54 | 显示全部楼层

(uint16_t * )tmpBuf;
这个操作后,我想tmpBuf是不会改变的吧,只是新建了一个缓存。。
pengf 发表于 2020-3-7 10:58 | 显示全部楼层

__packed uint16_t *tmpPoint = (__packed uint16_t * )tmpBuf;
X86指令集比较强大,可以多次从内存取数据对齐,精简指令集的CPU都不支持这种不对齐的访问。具体看keil帮助里面的arm指令集的LDR指令的说明。
pangb 发表于 2020-3-7 11:01 | 显示全部楼层
用联合形式试试。
morrisk 发表于 2020-3-7 11:04 | 显示全部楼层
感觉你的程序 还是溢出问题 而非 强制转换问题,最多是个诱因.
 楼主| kangzj 发表于 2020-3-7 11:07 | 显示全部楼层
本帖最后由 kangzj 于 2020-3-7 11:17 编辑

你可以试试,肯定不是溢出的问题,别人已经说出了原因
guoyt 发表于 2020-3-7 11:14 | 显示全部楼层
赞同align,   __align(8) char buffer[10];
juventus9554 发表于 2020-3-7 11:18 | 显示全部楼层
跑题了,其实还是不大明白,我再琢磨琢磨吧,多谢了哈先
磨砂 发表于 2020-4-1 17:54 | 显示全部楼层
指针操作不仔细
晓伍 发表于 2020-4-1 17:54 | 显示全部楼层
地址溢出了?
八层楼 发表于 2020-4-1 17:54 | 显示全部楼层
不用指针的话 能用什么呢
观海 发表于 2020-4-1 17:55 | 显示全部楼层
楼主最后怎么解决的问题啊
pattywu 发表于 2020-4-1 18:19 | 显示全部楼层
即使是x86系列CPU,数据非字对齐存储,可以按字访问,其内部实现时,也是由多条微指令实现的,速度也比字对齐访问慢。
编译器优化的时候,会按字对齐编译的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部