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

STM32F0 系列单片机,指针取整型值错误,用F0的进来看下

[复制链接]
mark0668 提问时间:2015-4-19 13:55 /
STM32F0 系列单片机,指针取整型值错误,用F0的进来看下,代码如下,附件里也有个工程可以下来单步运行下,这是什么问题如何解决.

uint8_t a[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};        //定义a 数组
int main(void){
        
        uint32_t*b=0;        //指针b
        uint32_t cc;        //临时变量
        b=(uint32_t*)(a+1);        //给a的指针地址+1他        
        cc  =*b;                                        //取值这步运行就出错    //如果程序没出错cc的值应该为0x04030201,    但取值就出错
        if(cc == 1)cc=0;
        while(1){
                        
        }
}


STM32F051.rar

下载

302.05 KB, 下载次数: 1, 下载积分: ST金币 -1

这是F0空工程包函上面的代码.

收藏 评论3 发布时间:2015-4-19 13:55

举报

3个回答
wu1169668869 回答时间:2015-4-19 16:48:29
可惜没有这个板子,
地址不是要考虑对齐的问题#还是说8位不用考虑这个问题
mark0668 回答时间:2015-4-20 00:04:03
在cortex-m0上,总线对访问内存数据是有一个对齐约束的:访问32位内存数据,该数据必须对齐到32位地址;访问16位内存数据,该数据必须对齐到16位地址,否则访问时将导致 hard fault。
你定义的 a 数组,链接器应该是将其对齐到了 32 位(或 16 位)地址,那么 a + 1 的地址,显然不满足访问的总线约束。


应该就是这问题了,M0的问题,M4 执行这代码是没有问题的.
sting 回答时间:2015-4-20 00:32:40
mark0668 发表于 2015-4-20 00:04
在cortex-m0上,总线对访问内存数据是有一个对齐约束的:访问32位内存数据,该数据必须对齐到32位地址;访 ...

说的真好,拍拍手

所属标签

相似问题

官网相关资源

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