打印
[STM32F0]

还是HardFault_Handler问题

[复制链接]
1038|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mgarm|  楼主 | 2015-10-25 09:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 mgarm 于 2015-10-25 09:51 编辑

F0程序一运行FLASH_ProgramWord就出现HardFault_Handler错误,两个参数值均正常

中断前


中断后

无从下手,给个思路???

沙发
zchong| | 2015-10-25 10:59 | 只看该作者
参数认真看一下,是否有对齐问题

使用特权

评论回复
板凳
mgarm|  楼主 | 2015-10-25 12:53 | 只看该作者
感谢楼上!问题解决了;在M0的C程序中
p=(uint32_t *)buf;
这种转换是非常危险的,其中p是32位指针类型,buf是字节类型的缓冲区,如果buf是一个定义好的变量首地址可能不会出现问题(因为编译器可能为每一个变量安排一个偶地址),但如果buf是参数传递过来的例如(buf+1)之类的地址那就会产生对齐问题;这也算是m0的一个缺陷吧,毕竟在C语言本不应考虑此问题。

使用特权

评论回复
地板
huangcunxiake| | 2015-10-25 15:31 | 只看该作者
m0原来是有缺陷的,被楼主发现了,楼主大神啊

使用特权

评论回复
5
mgarm|  楼主 | 2015-10-25 16:09 | 只看该作者
本帖最后由 mgarm 于 2015-10-28 10:25 编辑

好吧,楼上,你在挖苦我,说缺陷有点重了,应该说是一个遗憾的设计!
貌似ARM都有这个问题,32位存取指令必须对齐。

使用特权

评论回复
6
lwsn| | 2015-10-26 21:11 | 只看该作者
p是32位指针类型,buf是字节类型的缓冲区

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

89

主题

252

帖子

1

粉丝