OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9478|回复: 1

STM32F103在移植FatFS时,程序一运行就进入总线HardFault中的IMPRECISERR

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
25
金钱
25
注册时间
2015-7-29
在线时间
0 小时
发表于 2015-7-29 15:08:47 | 显示全部楼层 |阅读模式
5金钱
因项目需要移植FatFS,我先新建了工程,基于SPI的FLASH模块移植FatFS,FatFS版本选择的版本是0.09.建文件,读写都没问题,移植成功!然后我把它再整体移到我现在的项目代码中,我现在的代码是基于ucos-Ⅲ系统,编译通过后开始运行,可是只要一进入f_open立刻进入hardfault,在MDK软件中检查hardfault类型为IMPRECISERR,即不精确的数据访问违例。
我试着调整了启动文件中的stack_size和相应任务中的stack大小,结果仍然不管用,于是,我又下载了FatFS0.10版本的进行移植,还是不行。
于是开始跟踪代码,并在hardfault函数中打了断点,追踪寄存器LR中的返回值,发现每次都是运行到我底层的W25X_Write_Sector()函数中的一个循环赋值发生中断,而通过反汇编查看LR(R14)中的返回值却是位于操作系统函数OS_IntQPost()。
另外,在基于ucos的系统上我也试过直接操作基于SPI的FLASH模块,都是可以正常读写的。
。。。。
已经被这个不精确的数据访问违例折腾了2天,期待版主以及各路大神给予排查问题思路以指点迷津,不胜感激!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-30 21:31:41 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 06:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表