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

2019-07-14 15:56发布

一段以前用的很多的程序,以前在别的工程用过很多了(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
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
zrl12123456
1楼-- · 2019-07-14 18:22
32位的机器,你不按4来操作,CPU得多累啊
zrl12123456
2楼-- · 2019-07-14 18:25
推荐看这篇文章:结构体和类的内存字节对齐详解
http://www.jizhuomi.com/software/567.html
zrl12123456
3楼-- · 2019-07-15 00:09
我回复了啥?居然被屏蔽了?
zrl12123456
4楼-- · 2019-07-15 01:59
zrl12123456 发表于 2018-11-19 06:48
推荐看这篇文章:结构体和类的内存字节对齐详解
http://www.jizhuomi.com/software/567.html

好吧,推荐了一个我觉得比较好的个人网站的文章,可能管理员觉得是广告?呵呵
jerry181855
5楼-- · 2019-07-15 05:50
 精彩回答 2  元偷偷看……
formlikon
6楼-- · 2019-07-15 07:20
zrl12123456 发表于 2018-11-19 07:20
好吧,推荐了一个我觉得比较好的个人网站的文章,可能管理员觉得是广告?呵呵

恢复了,可能是以为发的广告

一周热门 更多>