[ZLG-ARM] 周工,这两个函数是不有问题啊???关于SD卡操作!

[复制链接]
2394|2
 楼主| win2000_li 发表于 2007-9-27 16:24 | 显示全部楼层 |阅读模式
/*********************************************************************************************************************<br />**&nbsp;函数名称:&nbsp;uint8&nbsp;SD_ReadOCR()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;SD_ReadOCR()<br />**&nbsp;功能描述:&nbsp;读操作条件寄存器OCR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Function:&nbsp;read&nbsp;OCR&nbsp;register&nbsp;of&nbsp;card<br />**&nbsp;输 &nbsp;&nbsp;入:&nbsp;uint8&nbsp;ocrlen&nbsp;&nbsp;:&nbsp;寄存器长度(固定为4)&nbsp;&nbsp;&nbsp;&nbsp;Input:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;ocrlen&nbsp;&nbsp;:&nbsp;len&nbsp;of&nbsp;register&nbsp;(fixed,is&nbsp;4)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;*recbuf&nbsp;:&nbsp;接收缓冲区&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;*recbuf&nbsp;:&nbsp;recbuffer&nbsp;&nbsp;&nbsp;&nbsp;<br />**&nbsp;输&nbsp; &nbsp;出:&nbsp;0:&nbsp;&nbsp;&nbsp;正确&nbsp;&nbsp;&nbsp;&nbsp;&gt0:&nbsp;&nbsp;&nbsp;错误码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Output:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0:&nbsp;&nbsp;right&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt0:&nbsp;&nbsp;error&nbsp;code<br />**********************************************************************************************************************/<br />uint8&nbsp;SD_ReadOCR(uint8&nbsp;ocrlen,&nbsp;uint8&nbsp;*recbuf)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;code&nbsp;param[4]&nbsp;=&nbsp;{0,0,0,0};<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;xdata&nbsp;resp[5];<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;xdata&nbsp;tmp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;=&nbsp;SD_SendCmd(CMD58,&nbsp;param,&nbsp;CMD58_R,&nbsp;resp);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;读&nbsp;OCR&nbsp;寄存器命令&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(tmp&nbsp;!=&nbsp;SD_NO_ERR)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;read&nbsp;OCR&nbsp;register&nbsp;command&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;tmp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(resp[0]&nbsp;!=&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;SD_ERR_CMD_RESP;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;响应错误&nbsp;response&nbsp;is&nbsp;error&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(tmp&nbsp;=&nbsp;0;&nbsp;tmp&nbsp;&lt&nbsp;4;&nbsp;tmp++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;recbuf[tmp]&nbsp;=&nbsp;resp[tmp&nbsp;+&nbsp;1];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;复制OCR寄存器内容到接收缓冲区&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;SD_NO_ERR;<br />}<br /><br /><br />/****************************************************************<br />**&nbsp;函数名称:&nbsp;uint8&nbsp;SD_ReadCard_Status()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />**&nbsp;功能描述:&nbsp;读SD/MMC卡的&nbsp;Card&nbsp;Status&nbsp;寄存器&nbsp;&nbsp;&nbsp;&nbsp;<br />**&nbsp;输 &nbsp;&nbsp;入:&nbsp;uint8&nbsp;len:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;寄存器长度(固定为2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;*recbuf&nbsp;:&nbsp;接收缓冲区&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />**&nbsp;输&nbsp; &nbsp;出:&nbsp;0:&nbsp;&nbsp;&nbsp;正确&nbsp;&nbsp;&nbsp;&nbsp;&gt0:&nbsp;&nbsp;&nbsp;错误码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />*******************************************************************/<br />uint8&nbsp;SD_ReadCard_Status(uint8&nbsp;len,&nbsp;uint8&nbsp;*buffer)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;code&nbsp;param[4]&nbsp;=&nbsp;{0,0,0,0};<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(SD_SendCmd(CMD13,&nbsp;param,&nbsp;CMD13_R,&nbsp;buffer));&nbsp;/*&nbsp;读&nbsp;Card&nbsp;Status&nbsp;寄存器&nbsp;*/<br />}<br /><br />其中的参数uint8&nbsp;ocrlen、uint8&nbsp;len在函数里都没有用到!!!<br />请问这是为什么啊!???<br />如果要用的话,怎么操作??<br />请周工指点!!!!!!!!!
wlsui 发表于 2007-9-27 20:20 | 显示全部楼层

Re:

1.为什么没用到?&nbsp;函数头注释已经说的很明白了,因为值是固定的<br />2.既然值是固定的为什么还要将其设计为一个参数?这是为了方便应用程序(软件包)的扩展
 楼主| win2000_li 发表于 2007-9-29 10:21 | 显示全部楼层

谢谢指点!!!

我明白了!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

142

主题

718

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部