亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sdhal.c

?? 周立功公司為LPC213X ARM7 編寫的SD卡讀寫模塊
?? C
字號:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			sdhal.c
** Last modified Date:	2005-1-6
** Last Version:		V1.0
** Descriptions:		sd 卡驅動軟件包: 硬件抽象層 ---- SPI操作函數
**						Soft Packet of SD Card Driver: hard abstrast layer ---- function of SPI operation
**
**------------------------------------------------------------------------------------------------------
** Created by:			Ming Yuan Zheng
** Created date:		2005-1-6
** Version:				V1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:			
** Modified date:		
** Version:				
** Descriptions:		
**
**------------------------------------------------------------------------------------------------------
** Modified by: 
** Modified date:
** Version:	
** Descriptions: 
**
********************************************************************************************************/

#include "config.h"
#include "sdconfig.h"
#include "sdhal.h"

	/**************************************************************
		
		讀寫SD卡的SPI接口函數: SPI接口設置,發送/接收字節函數	
	
	**************************************************************/

/*******************************************************************************************************************
** 函數名稱: void SD_Power()					Name:	  void SD_Power()
** 功能描述: 對卡先下電,再上電					Function: turn off the card's power, and turn on
** 輸   入: 無									Input:	  NULL
** 輸   出: 無									Output:	  NULL
********************************************************************************************************************/
void SD_Power(void)
{
	INT32U i;

	SD_POWER_GPIO();
	SD_POWER_OUT();
	SD_POWER_OFF();								/* 關閉 SD 卡電源  turn off power of sd card */
	
	SPI_SCK_GPIO();	
	SPI_SCK_OUT();
	SPI_SCK_CLR();								/* SCK  引腳置低   set SCK to zero */
	
	SPI_MISO_GPIO();
	SPI_MISO_OUT();
	SPI_MISO_CLR();								/* MISO 引腳置低   set MISO to zero */
	
	SPI_MOSI_GPIO();		
	SPI_MOSI_OUT();
	SPI_MOSI_CLR();								/* MOSI 引腳置低   set MOSI to zero */
	
	SPI_CS_GPIO();								
   	SPI_CS_OUT();								
	SPI_CS_CLR();								/* CS 引腳置低	   set CS to zero */
		
	for(i = 0; i < 0x9000; i++);				/* 關閉電源延時    delay after turn off power of sd card */
	SD_POWER_ON();								/* 打開 SD 卡電源  turn on power of sd card */
}

/*******************************************************************************************************************
** 函數名稱: void SD_HardWareInit()				Name:	  void SD_HardWareInit()
** 功能描述: 初始化訪問SD卡的硬件條件			Function: initialize the hardware condiction that access sd card
** 輸   入: 無									Input:	  NULL
** 輸   出: 無									Output:	  NULL
********************************************************************************************************************/
void SD_HardWareInit(void)
{ 
	SD_Power();									/* 對卡先下電,再上電  turn off power of card, and turn on it */
	
	SPI_INIT();									/* 初始化SPI接口      initialize SPI interface */	
	
	SD_INSERT_GPIO();
	SD_INSERT_IN();								/* 檢測卡完全插入口為輸入口   the port checking card is input */
	
	SD_WP_GPIO();								
	SD_WP_IN();									/* 寫保護檢測口為輸入口  	  the port written protect is input */	
		   
   	SPI_CS_SET();								/* CS置高	  				  set CS to high voltage */

 	SPI_Clk400k();								/* 設置SPI頻率小于等于400kHZ  set frequency of SPI below 400kHZ */
   
 	SPI_SPCR = (0x01 << 4) + (0x01 << 5);		/* 設置SPI接口模式,MSTR = 1,CPOL = 1,CPHA = 0,LSBF=0 */
}												/* configure SPI interface */


/*******************************************************************************************************************
** 函數名稱: void SPI_Clk400k()					Name:	  void SPI_Clk400k()
** 功能描述: 設置SPI的時鐘小于400kHZ			Function: set the clock of SPI less than 400kHZ
** 輸   入: 無									Input:	  NULL
** 輸   出: 無									Output:	  NULL
********************************************************************************************************************/
void SPI_Clk400k(void)
{
	SPI_SPCCR = 128;    						/* 設置SPI時鐘分頻值為128  Set the value of dividing frequency to 128 */
}


/*******************************************************************************************************************
** 函數名稱: void SPI_ClkToMax()				Name:	  void SPI_ClkToMax()
** 功能描述: 設置SPI的clock到最大值				Function: set the clock of SPI to maximum
** 輸   入: 無									Input:	  NULL
** 輸   出: 無									Output:	  NULL
********************************************************************************************************************/
void SPI_ClkToMax(void)
{
	SPI_SPCCR = 8;								/* 設置SPI時鐘分頻值為8  Set the value of dividing frequency to 8 */
}


/*******************************************************************************************************************
** 函數名稱: void SPI_SendByte()				Name:	  void SPI_SendByte()
** 功能描述: 通過SPI接口發送一個字節			Function: send a byte by SPI interface
** 輸   入: INT8U byte: 發送的字節				Input:	  INT8U byte: the byte that will be send
** 輸   出: 無									Output:	  NULL
********************************************************************************************************************/
void SPI_SendByte(INT8U byte)
{
	INT8U temp;

	SPI_SPDR = byte;							/* 發送數據放入SPI數據寄存器 */
   
	while(0 == (SPI_SPSR & 0x80));				/* 等待SPIF置位,即等待數據發送完畢 */
												/* wait for SPIF being set, that is, wait for finishing of data being send */
 	temp = SPI_SPDR;
}


/*******************************************************************************************************************
** 函數名稱: INT8U SPI_RecByte()				Name:	  INT8U SPI_RecByte()
** 功能描述: 從SPI接口接收一個字節				Function: receive a byte from SPI interface
** 輸   入: 無									Input:	  NULL
** 輸   出: 收到的字節							Output:	  the byte that be received
********************************************************************************************************************/
INT8U SPI_RecByte(void)
{
	SPI_SPDR = 0xFF;
   
 	while(0 == (SPI_SPSR & 0x80));				/* 等待SPIF置位,即等待收到數據 */
												/* wait for SPIF being set, that is, wait for being received data */
	return(SPI_SPDR); 							/* 讀取收到的字節 read the byte received */
}


/*******************************************************************************************************************
** 函數名稱: void SPI_CS_Assert()				Name:	  void SPI_CS_Assert()
** 功能描述: 片選SPI從機						Function: select the SPI slave 
** 輸   入: 無									Input:	  NULL
** 輸   出: 無									Output:	  NULL
********************************************************************************************************************/
void SPI_CS_Assert(void)
{
	SPI_CS_CLR();			   					/* 片選SPI從機  select the SPI slave */  
}


/*******************************************************************************************************************
** 函數名稱: void SPI_CS_Deassert()				Name:	  void SPI_CS_Deassert()
** 功能描述: 不片選SPI從機						Function: not select the SPI slave 
** 輸   入: 無									Input:	  NULL
** 輸   出: 無									Output:	  NULL
********************************************************************************************************************/
void SPI_CS_Deassert(void)
{
	SPI_CS_SET();			    				/* 不片選SPI從機  not select the SPI slave */
}

/*******************************************************************************************************************
** 函數名稱: void SD_ChkCard()					Name:	  void SD_ChkCard()
** 功能描述: 檢測卡是否完全插入					Function: check weather card is insert entirely
** 輸   入: 無									Input:	  NULL
** 輸   出: 1: 卡完全插入	0: 卡沒有完全插入   Output:	  1: insert entirely	0: not insert entirely
********************************************************************************************************************/
INT8U SD_ChkCard(void)
{
	if (SD_INSERT_STATUS() != 0)
		return 0;								/* 未完全插入 not insert entirely */
	else
		return 1;								/* 完全插入 insert entirely */
}

/*******************************************************************************************************************
** 函數名稱: void SD_ChkCardWP()				Name:	  void SD_ChkCardWP()
** 功能描述: 檢測卡寫保護						Function: check weather card is write protect
** 輸   入: 無									Input:	  NULL
** 輸   出: 1: 卡已寫保護	0: 卡未寫保護	    Output:	  1: insert write protect	0: not write protect
********************************************************************************************************************/
INT8U SD_ChkCardWP(void)
{
	if (SD_WP_STATUS() != 0)
		return 1;								/* 卡寫保護 */
	else
		return 0;								/* 卡未寫保護 */
}








?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品99久| 中文字幕欧美国产| 成人精品视频一区二区三区尤物| 视频在线在亚洲| 亚洲午夜国产一区99re久久| 亚洲啪啪综合av一区二区三区| 欧美国产精品v| 中文字幕在线观看不卡视频| 国产精品久久网站| 亚洲婷婷国产精品电影人久久| 国产精品色在线| 中文字幕欧美一| 亚洲午夜精品一区二区三区他趣| 亚洲图片欧美色图| 麻豆精品一区二区综合av| 日本中文字幕一区| 国产一区二区三区不卡在线观看| 国产美女在线精品| 粉嫩av一区二区三区在线播放 | 色综合天天综合网天天狠天天| 风间由美性色一区二区三区| 91麻豆国产在线观看| 欧美性视频一区二区三区| 337p亚洲精品色噜噜| 久久先锋资源网| 最新久久zyz资源站| 午夜精品影院在线观看| 看电视剧不卡顿的网站| 成人av资源在线| 欧美三级日韩在线| 久久午夜老司机| 亚洲欧美一区二区不卡| 日韩av电影天堂| 成人午夜精品一区二区三区| 欧美日韩精品二区第二页| 久久这里只有精品首页| 一区二区三区产品免费精品久久75| 亚洲成人一区二区在线观看| 国产精品中文字幕日韩精品| 91蝌蚪porny| 精品日韩成人av| 一卡二卡欧美日韩| 国产精品亚洲а∨天堂免在线| 在线免费亚洲电影| 久久精品一区二区三区不卡| 午夜视频一区在线观看| 9色porny自拍视频一区二区| 欧美一区二区国产| 亚洲精品视频观看| 国产精品 日产精品 欧美精品| 欧美日韩色一区| 亚洲欧美在线观看| 国产黄色91视频| 日韩一级免费一区| 亚洲一区视频在线| 成人av网在线| 久久久91精品国产一区二区精品| 午夜在线电影亚洲一区| 色综合色狠狠综合色| 欧美精品一区二区不卡 | 91精品免费观看| 亚洲欧美成aⅴ人在线观看| 国产综合久久久久久鬼色| 欧美日韩综合在线免费观看| 最新国产成人在线观看| 粉嫩久久99精品久久久久久夜| 欧美成人综合网站| 奇米亚洲午夜久久精品| 欧美色图在线观看| 亚洲一区二区三区四区在线| 不卡一二三区首页| 国产精品视频在线看| 国产传媒一区在线| 久久久久国产成人精品亚洲午夜| 久久99热这里只有精品| 精品久久久久久久久久久久久久久| 亚洲v精品v日韩v欧美v专区| 欧亚一区二区三区| 亚洲自拍欧美精品| 欧美视频在线播放| 亚洲成人激情自拍| 337p亚洲精品色噜噜噜| 日本欧美加勒比视频| 欧美一区二区三区在线看| 美日韩一级片在线观看| 精品国产在天天线2019| 国产精品系列在线观看| 国产人成亚洲第一网站在线播放 | 一区2区3区在线看| 欧美日韩激情一区二区| 蜜臀精品一区二区三区在线观看 | 黄一区二区三区| 欧美极品xxx| 一本久久a久久精品亚洲| 亚洲人成伊人成综合网小说| 欧美性做爰猛烈叫床潮| 麻豆久久久久久久| 久久久精品tv| 97久久精品人人澡人人爽| 亚洲综合999| 日韩欧美高清一区| 成人免费精品视频| 亚洲免费av观看| 日韩一区二区三区视频| 国产经典欧美精品| 亚洲午夜激情网站| 久久久不卡影院| 欧美自拍偷拍一区| 国产在线精品不卡| 一级中文字幕一区二区| 日韩色视频在线观看| 粉嫩久久99精品久久久久久夜| 亚洲一二三四区| 久久久久久久久久久黄色| 在线观看精品一区| 国产成人在线视频网址| 亚洲一区二三区| 久久日一线二线三线suv| 91黄色免费网站| 精品一区二区三区av| 一区二区三区小说| 国产三级精品三级| 337p亚洲精品色噜噜狠狠| 99久久er热在这里只有精品15| 青青草原综合久久大伊人精品| 中文字幕精品—区二区四季| 56国语精品自产拍在线观看| 成人涩涩免费视频| 激情综合五月天| 婷婷一区二区三区| 亚洲视频小说图片| 国产女同性恋一区二区| 91精品国产91久久综合桃花| 91原创在线视频| 国产精品99久久久| 国产一区福利在线| 人人爽香蕉精品| 午夜日韩在线观看| 亚洲图片你懂的| 国产精品美女www爽爽爽| 久久蜜臀精品av| 精品国产一区二区三区久久影院| 欧美性视频一区二区三区| 91污片在线观看| 成人免费av资源| 岛国精品一区二区| 国产一区二三区好的| 欧美aⅴ一区二区三区视频| 亚洲成人一区在线| 婷婷久久综合九色综合绿巨人| 亚洲三级在线播放| 亚洲欧美日韩国产一区二区三区| 国产精品丝袜久久久久久app| 欧美精品一区二区三区一线天视频| 在线成人av网站| 91精品国产黑色紧身裤美女| 欧美日本一区二区三区四区| 欧美日韩成人一区二区| 欧美久久久久中文字幕| 欧美欧美欧美欧美首页| 91麻豆精品国产91久久久 | 国产成人av一区二区三区在线观看| 日韩高清不卡在线| 麻豆精品视频在线观看免费| 青椒成人免费视频| 韩国精品久久久| 国产成人免费网站| 91啪亚洲精品| 欧美日韩黄视频| 久久综合九色综合97婷婷| 国产亚洲精品aa午夜观看| 中文字幕av不卡| 亚洲靠逼com| 日韩中文字幕不卡| 国产又粗又猛又爽又黄91精品| 国产毛片精品视频| 99久久99精品久久久久久| 在线观看视频一区二区欧美日韩| 精品污污网站免费看| 欧美成人性福生活免费看| 久久精品夜夜夜夜久久| 亚洲日本青草视频在线怡红院| 亚洲欧美日韩国产成人精品影院| 亚洲国产精品欧美一二99| 青青草国产精品亚洲专区无| 国产精品亚洲第一区在线暖暖韩国| 99久久婷婷国产精品综合| 欧美日韩在线观看一区二区| 精品乱人伦一区二区三区| 国产精品久久久久桃色tv| 亚洲自拍另类综合| 国产精品1区二区.| 欧美日韩国产免费一区二区| 日韩欧美国产一区在线观看| 国产精品久久久久久久久免费桃花 | 国产一区二区调教| 色欧美片视频在线观看| 欧美大度的电影原声| 自拍偷拍国产精品| 国产麻豆精品95视频|