新手上路
- 积分
- 47
- 金钱
- 47
- 注册时间
- 2019-9-13
- 在线时间
- 26 小时
|
20金钱
最近项目的原因,我需要将SD卡(SDIO协议)修改为,可以在FreeRTOS中可以充分利用单片机资源,使用中断+事件,发现STM32官方的驱动写得很差,自己大改了很多(实际上也是用函数封装了一下),之前一切都没有问题。
但是在检查的时候会发现,使用官方驱动那种,等待 SDIO->STA 标志位读取的方式去读取 SD 卡的 SCR 寄存器的值,挂载、写入、读取都没有问题,但是我修改为使用 SDIO 中断的方式去触发,也能够正常读取到 SCR 寄存器的值,但是后面文件系统 f_mount() 会返回 FR_NO_FILESYSTEM。现在觉得很奇怪,能不能检测到文件系统,既然和 SCR 寄存器的读取无关,那为什么用中断的方式会卡死?? 也不知道是哪里的问题,使用断点跟踪也没发现哪里的问题。
这里代码附上,最关键的是 sdio_sdcard.c 的最后面 SD_FindSCR() 的函数,上面注释了的是我自己改成中断触发的,下面是用官方的方法触发。用哪一个 SD_FindSCR() 时候直接选择注释就可以
这个源码是我的工程验证版,里面还有 USART+DMA+FreeRTOS+IT 的实现,使用 USART1 打印输出
麻烦大佬看一下我这里是什么问题~困扰了很多天了
|
|