STM32 SPI总线移植fatfs产生硬件异常问题

spi总线和sd卡通信,用了部分原子的代码。移值Fatfs,没有用动态内存分配。产生了硬件异常的代码如下:
res = f_open(&file, "record.txt",FA_READ | FA_WRITE | FA_OPEN_ALWAYS);
f_write(&file,"temp",5,bw);

程序执行到f_write()后会产生硬件异常,跳入异常中断。网上找了些资料大多是将内存泄漏之类的说法,也有说定义的结构体没有内存对齐,或者局部变量占用了太多的栈空间。用网友的方法都没解决。通过单步调试,在f_write()内部执行时产生了硬件异常,但不是每次都是某条固定语句。

最后的解决方法是参照了之前测试的代码,在f_open()之后添加一条语句,程序正常运行了。代码如下:

res = f_open(&file, "record.txt",FA_READ | FA_WRITE | FA_OPEN_ALWAYS);
if(res)return 1;
f_write(&file,"temp",5,bw);

程序执行时f_open()是执行成功的,res为0,f_write()也正常执行了。猜测f_open()之后要等待一小段时间才能执行其他函数,原因未知。

另外编译优化等级要level 0.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F4是STMicroelectronics推出的一款高性能微控制器系列,它集成了SPI(串行外设接口)功能,可用于与SD卡进行数据通信。为了在STM32F4上进行SD卡访问,可以使用FATFS文件系统进行移植。 首先,需要获取STM32F4系列的开发板以及SD卡模块。通过将SD卡模块连接到STM32F4的SPI接口上,并进行正确的硬件连接,以便能够进行数据传输。 接下来,在STM32CubeMX中进行配置,选择正确的引脚和SPI外设。设置相应的时钟频率,以确保SD卡能够正确工作。然后生成代码,导出到开发环境中。 在开发环境中打开生成的工程文件,找到对应的SPI及SD卡的初始化函数。根据需要修改SPI的参数,如通信速率、数据长度等。 接着,可以使用FATFS文件系统进行SD卡访问的移植。首先需要下载FatFs库,并将其添加到工程中。 然后,需要配置FATFS库,包括选择正确的文件系统类型(如FAT32),设置合适的SD卡的盘符等。可以使用FATFS库提供的函数进行SD卡的挂载、卸载等操作。 在主程序中,可以使用FATFS库提供的函数进行读写文件的操作。通过打开文件、写入数据、读取数据等方式,实现对SD卡中文件的访问。 最后,进行编译和下载,将代码烧录到STM32F4开发板中。 总之,通过合适的硬件连接、配置SPI外设和SD卡模块的初始化,以及引入FatFs库,并根据需要进行相应的配置,就可以在STM32F4上实现与SD卡的数据交互,并使用FATFS进行文件系统的移植和访问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值