你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【急】STM32F130ZE在UC/OS环境下读写SD卡失败!

[复制链接]
yucai666 提问时间:2011-6-2 08:33 /
各位大侠,小弟最近做在UC/OS环境下读写SD卡的实验,UC/OS能够正常运行,裸机下SD卡也能正常读写,可是把UC/OS和读写SD卡的程序放到一个工程中,就不能读写SD卡了。我用中断方式查看是否写完毕,好像中断程序根本就进不去,最终程序就死在HardFaultException这了,实在是不解,望各位大侠不吝赐教!我用的MDK4.11开发环境
收藏 评论4 发布时间:2011-6-2 08:33

举报

4个回答
废鱼 回答时间:2011-6-2 08:44:17

RE:【急】STM32F130ZE在UC/OS环境下读写SD卡失败!

不看程序不知道错误问题在什么地方,只能估计:
1、中断中未处理UCOS系统进入和退出中断
2、SD卡驱动中有数组操作超出数组大小。
yucai666 回答时间:2011-6-2 14:23:45

回复:【急】STM32F130ZE在UC/OS环境下读写SD卡失败!

回复第 2 楼 安于2011-06-02 00:44:17发表:
不看程序不知道错误问题在什么地方,只能估计:
1、中断中未处理UCOS系统进入和退出中断
2、SD卡驱动中有数组操作超出数组大小。 

首先感谢斑竹的即时回复!主要是程序有10M左右没法上传!
单个运行UCOS和SD卡程序均能正常运行,把两个合到一个工程中运行到红色的那一句就出现上面的错误了!
下面是我写SD卡的子程序和中断子程序
SD_Error SD_WriteBlock(u32 addr, u32 *writebuff, u16 BlockSize)
{
  SD_Error errorstatus = SD_OK;
  u8  power = 0, cardstate = 0;
  u32 timeout = 0, bytestransferred = 0;
  u32 cardstatus = 0, count = 0, restwords = 0;
  u32 *tempbuff = writebuff;
  if (writebuff == NULL)
  {
    errorstatus = SD_INVALID_PARAMETER;
    return(errorstatus);
  }
  TransferError = SD_OK;
  TransferEnd = 0;
  TotalNumberOfBytes = 0;
  SDIO_DataInitStructure.SDIO_DataTimeOut = SD_DATATIMEOUT;
  SDIO_DataInitStructure.SDIO_DataLength = 0;
  SDIO_DataInitStructure.SDIO_DataBlockSize = SDIO_DataBlockSize_1b;
  SDIO_DataInitStructure.SDIO_TransferDir = SDIO_TransferDir_ToCard;
  SDIO_DataInitStructure.SDIO_TransferMode = SDIO_TransferMode_Block;
  SDIO_DataInitStructure.SDIO_DPSM = SDIO_DPSM_Disable;
  SDIO_DataConfig(&SDIO_DataInitStructure);
  SDIO_DMACmd(DISABLE);
  if (SDIO_GetResponse(SDIO_RESP1) & SD_CARD_LOCKED)
  {
    errorstatus = SD_LOCK_UNLOCK_FAILED;
    return(errorstatus);
  }

  /* Set the block size, both on controller and card */
  if ((BlockSize > 0) && (BlockSize
废鱼 回答时间:2011-6-2 16:03:53

RE:【急】STM32F130ZE在UC/OS环境下读写SD卡失败!

很可能不是这里的问题,你看看你写数据的时候,写入数据的个数和数组大小比较一下。
yucai666 回答时间:2011-6-3 09:28:17

回复:【急】STM32F130ZE在UC/OS环境下读写SD卡失败!

回复第 4 楼 安于2011-06-02 08:03:53发表:
很可能不是这里的问题,你看看你写数据的时候,写入数据的个数和数组大小比较一下。 

大小是一样的。UCOS下跟裸机写入的是同一个数据,裸机可以成功但是UCOS就不行了!实在是不解

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版