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

STM32L011E4Y6的内存操作

[复制链接]
battery609 提问时间:2017-10-20 16:28 /
本帖最后由 battery609 于 2017-10-20 16:36 编辑

见两张调试的图:
能跑到黄箭头这个语句,但这个语句就是跑不过去,调试信息里CRC2的值也能看到了,是正确的,但就是没法赋值给CRC3,这个函数跑在STM32F103上却是好的,相同的编译环境(RVMDK5.23),然后用我注释掉的那个for循环一个个字节搬过去也是OK的,这玩意是不是可以认为这个CPU的RAM控制器有BUG啊。
也有可能是我学差了,忽视了一些细节,毕竟还是个门外汉,希望有高手能解我的疑惑,感激不尽!
QQ图片20171020162216.png
QQ图片20171020162225.png
收藏 1 评论6 发布时间:2017-10-20 16:28

举报

6个回答
battery609 回答时间:2017-10-20 16:41:34
补充:在STM32F103上面并没有直接运行这个程序,只是有类似的操作,F103上面的程序部分如下:
{
        uint8_t i;
        uint32_t temp;
        IRDA_txbuffer[0]=serial;
        IRDA_txbuffer[1]=size;
        for(i=0;i<size;i++)
                IRDA_txbuffer[i+2]=*(data+i);
        temp=crc32((uint32_t*)IRDA_txbuffer,size+2);
        *(uint32_t*)&IRDA_txbuffer[size+2] =temp;
}
battery609 回答时间:2017-10-23 21:07:28
沉得真快,顶贴
无薪税绵 回答时间:2017-11-22 11:33:31
看上去,没有问题。
你看看汇编那里不对。

或者
你可以使用memcpy函数试试。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

battery609 回答时间:2018-7-30 15:27:16
本帖最后由 battery609 于 2018-7-30 15:29 编辑

还是我自己来回答吧,出问题的MCU为STM32L011,不支持内存非对齐访问,所以地址必须是4的整数倍,例程中有地址+2的操作,会直接导致死机。而F103支持非对齐访问,所以就很幸运。平时这个当做兴趣爱好来玩的,门外汉就是门外汉。去年做的小东西又拿出来完善,再次遇到这个问题,硬啃了两天,总算找到原因了。

add:103也不叫非对齐访问,只是支持半字长访问,正好+2满足条件,所以没有问题。
wwwheihei 回答时间:2018-8-3 18:12:55
battery609 发表于 2018-7-30 15:27
还是我自己来回答吧,出问题的MCU为STM32L011,不支持内存非对齐访问,所以地址必须是4的整数倍,例程中有 ...

这个可以找到依据吗
battery609 回答时间:2018-8-9 10:29:48
wwwheihei 发表于 2018-8-3 18:12
这个可以找到依据吗

在有关M0+内核的内存控制器中能找到相关的内存访问指令。使用memcpy不会出现问题是因为该函数考虑了对齐问题

所属标签

相似问题

官网相关资源

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