您现在的位置: 主页 > 嵌入式开发入门到精通 > 单片机技术进阶 > STM32 SDIO 报错 SD_RX_OVERRUN -
本文所属标签:
为本文创立个标签吧:

STM32 SDIO 报错 SD_RX_OVERRUN -

来源: 网络用户发布,如有版权联系网管删除 2018-09-08 

[导读]使用STM32官方SDIO 的SDCARD驱动的时候,以前单任务的时候没有出现这种错误,现在使用多任务的时候经常出现,表现为读取文件的时候没有问题,经常点击屏幕的时候就会出问题,最后通过仿真找到出错点就是读取数据向SD卡发送

使用STM32官方SDIO 的SDCARD驱动的时候,以前单任务的时候没有出现这种错误,现在使用多任务的时候经常出现,表现为读取文件的时候没有问题,经常点击屏幕的时候就会出问题,最后通过仿真找到出错点就是读取数据向SD卡发送CD17命令时出现SD_RX_OVERRUN这个错误,产生原因为读取FIFO溢出.

本文引用地址: http://www.21ic.com/app/mcu/201808/781713.htm

通过仿真与测试发现问题主要出现在读取过程中不能打断,也就是临界点.

在两个读取函数里面

SD_Error SD_ReadMultiBlocks(u32 addr, u32 *readbuff, u16 BlockSize, u32 NumberOfBlocks);

SD_Error SD_ReadBlock(u32 addr, u32 *readbuff, u16 BlockSize);

关键点加上临界保护


OS_ENTER_CRITICAL();//关闭系统中断

while(!(SDIO->STA&(SDIO_FLAG_RXOVERR|SDIO_FLAG_DCRCFAIL|SDIO_FLAG_DTIMEOUT|SDIO_FLAG_DBCKEND|SDIO_FLAG_STBITERR)))

{

if(SDIO_GetFlagStatus(SDIO_FLAG_RXFIFOHF)!=RESET)

{

for(count=0;count<8;count++)

{

*(tempbuff+count)=SDIO_ReadData();

}

tempbuff+=8;

}

}

OS_EXIT_CRITICAL();//开启系统中断


同样写操作的时候也一样需要.


因为有些外设的操作时不能被打断的.




              查看评论 回复



 

"STM32 SDIO 报错 SD_RX_OVERRUN -"的相关文章

网站地图

围观()