完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
找到while(hsd->SdTransferCplt == 0)这个语句并屏蔽.... 你的SDIO global interrupt的优先级是多少? SDIO的Tx,Rx的DMA的中断优先级又是多少? 我也碰到你的问题,但我将SDIO global interrupt的优先级设置为小于或等于SDIO的Tx,Rx的DMA的中断优先级后,问题好像解决了。 |
|
|
|
|
|
|
|
dull20112011 发表于 2018-11-23 06:45 这个贴我看过,只是讲SD卡读写的基本操作。这部分操作我已经实现,包括FATFS对文件的读和写操作。 而且已经实现文件的读取,创建,写入,保存,删除等操作。 我遇到的问题是:很容易卡死在上面贴出的那两行代码中。 |
|
|
|
|
|
明白,好像是什么状态不满足时卡死了,有没有可能是硬件原因,如信号不稳定等...
|
|
|
|
|
|
|
|
|
|
|
|
本帖最后由 adlu 于 2016-3-30 18:23 编辑
已经解决。 CubeMX生成的代码SDIO polling模式可能真的有问题。 配置SDIO使用DMA模式,SDIO_RX和SDIO_TX配置相同。 生成代码,然后需要手动修改部分代码。 1.如果是用CubeMX 4.11及更早版本的,要修改stm32f4xx_hal_msp.c中HAL_SD_MspInit( )函数的两个DMA配置参数,将DMA_NORMAL改为DMA_PFCTRL。 2.修改sd_diskio.c中SD_read( )和SD_write( )函数, 分别将BSP_SD_ReadBlocks( )改为BSP_SD_ReadBlocks_DMA( ); 将BSP_SD_WriteBlocks( )改为BSP_SD_WriteBlocks_DMA( ). 3.全局搜索SdTransferCplt变量,找到while(hsd->SdTransferCplt == 0)这个语句并屏蔽,否则会卡死在词句,我也不知道为什么。 经过上述步骤,就可以顺利的使用SDIO DMA功能进行SD卡读写了。 配合CubeMX生成的FATFS架构,就可以进行SD卡的文件操作了。目前未发现其他问题。 |
|
|
|
|
|
估计F103可以用来参考。先谢谢经验分享!
|
|
|
|
|
|
按照您的方法没有解决呢
|
|
|
|
|
|
谢谢分享!!!
|
|
|
|
|
充电搜索 发表于 2018-11-23 06:34 谢谢分享. 可能就是优先级的问题。CubeMX里面没有任何提示,或者自动设定这两个优先级的高低,所以只有自己试错才能知道。 |
|
|
|
|
|
明白,好像是什么状态不满足时卡死了,有没有可能是硬件原因,如信号不稳定等
|
|
|
|
|
|
|
|
|
按照楼上的方法改过系统优先级后DMA传输就可以了。
|
|
|
|
|
|
弄了好久都每成功,你们有没有代码啊
|
|
|
|
|
|
谢谢分享经验!!!
|
|
|
|
|
|
mark一下,项目中可能会用到。
|
|
|
|
|
|
没有响应
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2810 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2420 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2288 浏览 0 评论
2404 浏览 1 评论
1643 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 13:51 , Processed in 1.144660 second(s), Total 106, Slave 89 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1553