你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32m0 单片机按地址写长整数,地址必须是4的整数倍?

[复制链接]
老麦Mac 提问时间:2016-5-13 18:42 /
一段以前用的很多的程序,以前在别的工程用过很多了(stm32 M3系列, 51单片机)
今天拿到m0单片机的工程里一运行就hard fault
找来找去似乎是这么个问题: 用指针往一个地址里写长整数数据, 这个地址必须是4的整数倍?
类似这样:
        {
                int* a;
                int* b;
                a = (int*)(0x20000410);
                *a = 0;                        //okay
                b = (int*)(0x20000421);
                *b = 0;                        //hard fault
        }
我用的是mdk5, 感觉应该是cpu什么模式没设置对吧? 应该怎么解决这个问题?
thx

收藏 1 评论9 发布时间:2016-5-13 18:42

举报

9个回答
老麦Mac 回答时间:2016-5-13 19:46:30
晕, 还真是这样?

Important
It is important to make sure the memory address accessed is aligned. For example, a word size
access can only be carried out on address locations when address bits[1:0] are set to zero, and
a half word size access can only be carried out on address locations when an address bit[0] is
set to zero. The Cortex-M0 processor does not support unaligned transfers. Any attempt at
unaligned memory access results in a hard fault exception. Byte-size transfers are always aligned
on the Cortex-M0 processor.
潇潇雨歇pku 回答时间:2016-5-14 09:28:49
32位的机器,你不按4来操作,CPU得多累啊
潇潇雨歇pku 回答时间:2016-5-14 09:29:31
推荐看这篇文章:结构体和类的内存字节对齐详解
http://www.jizhuomi.com/software/567.html
潇潇雨歇pku 回答时间:2016-11-23 18:19:38
我回复了啥?居然被屏蔽了?
潇潇雨歇pku 回答时间:2016-11-23 18:21:01

好吧,推荐了一个我觉得比较好的个人网站的文章,可能管理员觉得是广告?呵呵
peter001 回答时间:2016-11-24 00:27:17
最好4位对齐,好习惯
zero99 回答时间:2016-12-29 10:10:09
潇潇雨歇pku 发表于 2016-11-23 18:21
好吧,推荐了一个我觉得比较好的个人网站的文章,可能管理员觉得是广告?呵呵 ...

恢复了,可能是以为发的广告
jtc_88 回答时间:2016-12-29 12:35:58
2的n次方,都行,我试过使用内部flash 存储数据,2字节或4字节都可以。例如6字节就不行!!!
海迹天涯 回答时间:2016-12-30 08:33:31
不错学习了

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版