使用官方提供STM32Cube_FW_F7_V1.3.0下的FatFs_uSD_RTOS例程,使用SDIO+Fatfs+ FreeRTOS,一次运行正确,但想要每隔1秒往1个文件中追加写入32字节,就会出错,报告FS_DISK_ERR,如果不运行FreeRTOSD则不会出错;此外,把sd_diskio.c中的SD_read和SD_write分别用BSP_SD_ReadBlocks_DMA和BSP_SD_WriteBlocks_DMA实现,也无法正确运行。该如何改正这些错误呢? 本帖为网友在FAQ栏目的询问贴,欢迎前去回答:https://www.stmcu.org.cn/faq/index/detail/id-70678 |
要使用SDIO的DMA功能,不能简单的直接改SD_read和SD_write里调用的那两个函数,当然这是必要的步骤。
还需要在CubeMX中配置SDIO的DMA功能,如下图:(RX和TX的配置相同)
F7的应该是类似的,但是FreeRTOS下我没试过。
前面的问题是在 STM32F746DISCO开发板和官方1.3.0例程基础上出现的,使用了FreeRTOS系统
参考了上面回答的方法后,还是不稳定,后来把SDIO相关的3个中断优先级别调高,SDIO中断设为3,DMA发送和接收的调为4,比FreeRTOS的系统用户级别高,这才解决问题。
谢谢上面热心网友解答!
这么晚还在,辛苦!谢谢~