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

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

?? spi.c

?? SPI接口的Data Flash at45db的C驅動
?? C
字號:
//*------------------------------------------------------------------------------------------------
//* 文件名			   : spi.c
//* 功能描述		   : SPI接口驅動
//* 作者    		   : 焦海波
//* 版本			   : 0.1
//* 建立日期、時間	   : 2008/05/04 14:52
//* 最近修改日期、時間 : 
//* 修改原因		   : 
//*------------------------------------------------------------------------------------------------
//*------------------------------------------ 頭文件 ----------------------------------------------
#include	"/uCOS-II/ucos_ii.h"
#include	"/at91sam7x256/include/AT91SAM7X256.h"
#include	"/at91sam7x256/include/lib_AT91SAM7X256.h"

#define		OS_GLOBALS
#include	"spi.h"
//*-------------------------------------- 函數原型聲明區 ------------------------------------------
static void __irqSPIHandler(void);
//*------------------------------------- 常量、變量定義區 -----------------------------------------
static const SPI0_DEV_DESCRIPTOR SPI[2] = {
     	{AT91C_BASE_SPI0, SPI0_PINS, AT91C_ID_SPI0, AT91C_PA16_SPI0_MISO, SPI_IRQ_PRIOR, __irqSPIHandler},
        {AT91C_BASE_SPI1, SPI1_PINS, AT91C_ID_SPI1, AT91C_PA24_SPI1_MISO, SPI_IRQ_PRIOR, __irqSPIHandler}
                                   		  };

static ST_SPI_DEV_RW *__pstRWOpt;
//*================================================================================================
//*                     函 數 區
//*================================================================================================
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : __ilSPIPinsConfig
//* 功能描述 : SPI相關引腳配置函數
//* 入口參數 : <u32Pins>[in] 相關外設引腳
//* 出口參數 : 無
//*------------------------------------------------------------------------------------------------
__inline void __ilSPIPinsConfig(INT32U u32Pins)
{
	//* 首先禁止相關引腳中斷
	AT91C_BASE_PIOA->PIO_IDR = u32Pins;
	AT91C_BASE_PIOA->PIO_PPUDR = u32Pins;
	AT91C_BASE_PIOA->PIO_ASR = u32Pins;
	AT91C_BASE_PIOA->PIO_PDR = u32Pins;
}
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : __ilSPIConfig
//* 功能描述 : SPI相關控制寄存器配置
//* 入口參數 : <u8SPIDevID>[in] SPI接口占用的外設ID號
//*          :       <pSPI>[in] SPI相關控制寄存器的基址
//* 出口參數 : 無
//*------------------------------------------------------------------------------------------------
__inline void __ilSPIConfig(INT8U u8SPIDevID, AT91PS_SPI pSPI)
{
	//* 使能SPI輸入時鐘
	AT91C_BASE_PMC->PMC_PCER = 1 << u8SPIDevID;
	
	//* 軟件復位SPI
	pSPI->SPI_CR = AT91C_SPI_SWRST;
	
	//* 為主機模式,禁止模式故障檢測,禁止片選
	pSPI->SPI_MR = AT91C_SPI_MSTR | AT91C_SPI_MODFDIS | AT91C_SPI_PCS;
	
	//* 禁止PDC收發
	pSPI->SPI_PTCR = AT91C_PDC_RXTDIS | AT91C_PDC_TXTDIS;
	
	//* 使能SPI
	pSPI->SPI_CR = AT91C_SPI_SPIEN;
	
	//* 禁止SPI時鐘
	AT91C_BASE_PMC->PMC_PCDR = 1 << u8SPIDevID;
}
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : __irqSPIHandler
//* 功能描述 : SPI中斷服務子函數
//* 入口參數 : 無
//* 出口參數 : 無
//*------------------------------------------------------------------------------------------------
static void __irqSPIHandler(void)
{
	INT32U __uSPIStatus;

	__uSPIStatus = SPI[__pstRWOpt->u8SPIPort].pSPI->SPI_SR;
	
	if(__uSPIStatus & AT91C_SPI_RXBUFF)
	{
		//* 禁止PDC收發器
	    SPI[__pstRWOpt->u8SPIPort].pSPI->SPI_PTCR = AT91C_PDC_RXTDIS | AT91C_PDC_TXTDIS;
	    
	    //* 禁止SPI時鐘輸入
	    AT91C_BASE_PMC->PMC_PCDR = 1<< SPI[__pstRWOpt->u8SPIPort].u8SPIID;
	    
	    //* 禁止SPI接收結束中斷
	    SPI[__pstRWOpt->u8SPIPort].pSPI->SPI_IDR = AT91C_SPI_RXBUFF;
	    
	    //* 調用SPI設備用戶注冊的回調函數
	    if(__pstRWOpt->pfunCallBack != NULL)
		    __pstRWOpt->pfunCallBack(__pstRWOpt->pvArg);
	}
	
	u8IsNotRecvEnd = OS_FALSE;
}
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : SPIConfig
//* 功能描述 : 初始配置SPI0
//* 入口參數 :  <u8SPIPort>[in] 指定配置的SPI端口號(0代表SPIO,1代表SPI1)
//* 出口參數 : 無
//*------------------------------------------------------------------------------------------------
void SPIConfig(INT8U u8SPIPort)
{	
	__ilSPIPinsConfig(SPI[u8SPIPort].u32Pins);
	AT91C_BASE_PIOA->PIO_PPUER = SPI[u8SPIPort].u32NeedPullUpPin;
	__ilSPIConfig(SPI[u8SPIPort].u8SPIID, SPI[u8SPIPort].pSPI);
	
	//* 向AIC注冊SPI中斷
	AT91F_AIC_ConfigureIt(AT91C_BASE_AIC, 
	                      SPI[u8SPIPort].u8SPIID, 
	                      SPI[u8SPIPort].u8IRQPrior, 
	                      AT91C_AIC_SRCTYPE_INT_HIGH_LEVEL, 
	                      SPI[u8SPIPort].pfunSPIIsr);
	AT91C_BASE_AIC->AIC_IECR = 1 << SPI[u8SPIPort].u8SPIID;
	
	//* 禁止所有SPI中斷
	SPI[u8SPIPort].pSPI->SPI_IDR = 0xFFFFFFFF;
	
	u8IsNotRecvEnd = OS_TRUE;
}
//*------------------------------------------------------------------------------------------------
//* 函數名稱 : ReadAndWriteSPIDev
//* 功能描述 : 通過SPI口對相關設備進行讀寫操作
//* 入口參數 : <u8SPIPort>[in] 指定配置的SPI端口號(0代表SPIO,1代表SPI1)
//*          :    <pstOpt>[in] 指向具體讀寫操作指令的指針(ST_SPI_DEV_RW結構體)
//* 出口參數 : 無
//*------------------------------------------------------------------------------------------------
void ReadAndWriteSPIDev(ST_SPI_DEV_RW *pstOpt)
{
	INT32U	__u32SPIModeVal;

    //* 使能SPI時鐘輸入
	AT91C_BASE_PMC->PMC_PCER = 1 << SPI[pstOpt->u8SPIPort].u8SPIID;
	
	//* 首先禁止SPI PDC收發器
	SPI[pstOpt->u8SPIPort].pSPI->SPI_PTCR = AT91C_PDC_RXTDIS | AT91C_PDC_TXTDIS;
	
	//* 修改SPI模式寄存器,片選指定的SPI設備
	__u32SPIModeVal = SPI[pstOpt->u8SPIPort].pSPI->SPI_MR;
	__u32SPIModeVal |= AT91C_SPI_PCS;
	__u32SPIModeVal &= ~(1 << (pstOpt->u8NPCSPin + 16));
	SPI[pstOpt->u8SPIPort].pSPI->SPI_MR = __u32SPIModeVal;
	
	//* 初始化SPI PDC收發器
	SPI[pstOpt->u8SPIPort].pSPI->SPI_RPR = (INT32U)pstOpt->pbCmd;
	SPI[pstOpt->u8SPIPort].pSPI->SPI_RCR = pstOpt->u8CmdLen;
	SPI[pstOpt->u8SPIPort].pSPI->SPI_TPR = (INT32U)pstOpt->pbCmd;
	SPI[pstOpt->u8SPIPort].pSPI->SPI_TCR = pstOpt->u8CmdLen;
	
	SPI[pstOpt->u8SPIPort].pSPI->SPI_RNPR = (INT32U)pstOpt->pbData;
	SPI[pstOpt->u8SPIPort].pSPI->SPI_RNCR = pstOpt->u32DataLen;
	SPI[pstOpt->u8SPIPort].pSPI->SPI_TNPR = (INT32U)pstOpt->pbData;
	SPI[pstOpt->u8SPIPort].pSPI->SPI_TNCR = pstOpt->u32DataLen;
	
	//* PDC傳輸、發送使能
	SPI[pstOpt->u8SPIPort].pSPI->SPI_PTCR = AT91C_PDC_RXTEN | AT91C_PDC_TXTEN;
	
	//* 使能SPI接收結束中斷
	__pstRWOpt = pstOpt;
	SPI[pstOpt->u8SPIPort].pSPI->SPI_IER = AT91C_SPI_RXBUFF;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天操天天干天天综合网| 国产福利一区二区| 国产乱人伦精品一区二区在线观看| 高清国产一区二区| 69成人精品免费视频| 国产精品三级电影| 另类小说一区二区三区| a4yy欧美一区二区三区| 日韩欧美国产综合| 亚洲午夜在线电影| 99久久99久久综合| 精品国产乱码久久久久久老虎| 一区二区三区美女视频| 国产夫妻精品视频| 日韩女优视频免费观看| 亚洲一本大道在线| 不卡的看片网站| 久久嫩草精品久久久精品| 视频一区国产视频| 在线观看一区日韩| 国产精品美日韩| 精品一区二区三区免费| 欧美人狂配大交3d怪物一区| 综合av第一页| www.欧美色图| 国产丝袜美腿一区二区三区| 美国欧美日韩国产在线播放| 欧美视频在线播放| 亚洲图片欧美色图| 色婷婷综合久久久久中文 | 国产二区国产一区在线观看| 日韩一区二区免费高清| 日韩黄色免费电影| 欧美日韩高清在线| 日韩在线观看一区二区| 欧美精品99久久久**| 亚洲h动漫在线| 欧美日产国产精品| 三级成人在线视频| 日韩午夜激情电影| 美女视频网站久久| 久久久美女毛片| 福利一区二区在线| 国产精品久久久久久久久免费丝袜 | 国产日韩欧美电影| 国产精品99精品久久免费| 久久先锋影音av鲁色资源网| 精品一区二区三区在线视频| 日韩美女在线视频| 国精产品一区一区三区mba桃花 | 日韩伦理av电影| 色呦呦国产精品| 亚洲成人自拍网| 日韩一区二区视频| 粉嫩久久99精品久久久久久夜| 久久精品亚洲一区二区三区浴池| 国产成人精品www牛牛影视| 一区二区中文视频| 欧美日韩一级黄| 久久国产精品区| 欧美国产精品一区| 色综合 综合色| 日韩精品亚洲一区二区三区免费| 精品国产一区久久| 99国产一区二区三精品乱码| 亚洲综合无码一区二区| 日韩丝袜情趣美女图片| 国产69精品久久久久777| 一区二区三区中文字幕电影| 欧美第一区第二区| 成人av影视在线观看| 亚洲国产日产av| 2023国产精华国产精品| 色偷偷久久一区二区三区| 蜜桃视频在线观看一区二区| 亚洲国产高清在线| 欧美精品亚洲一区二区在线播放| 国产伦精品一区二区三区免费迷 | 亚洲aaa精品| 精品美女一区二区| 色欧美88888久久久久久影院| 日韩不卡免费视频| 亚洲欧美成人一区二区三区| 欧美成人女星排名| 欧美网站大全在线观看| 成人av网站免费观看| 免费高清视频精品| 一区二区三区在线观看国产| 欧美精品一区二区三| 在线观看一区二区精品视频| 成人精品电影在线观看| 毛片av一区二区| 婷婷中文字幕一区三区| 成人欧美一区二区三区1314| 久久嫩草精品久久久久| 欧美一级免费观看| 欧美三级日韩在线| 97se狠狠狠综合亚洲狠狠| 国产美女一区二区| 麻豆91免费观看| 亚洲成av人片| 亚洲精品视频在线观看免费| 精品国产不卡一区二区三区| 欧美亚洲国产一区二区三区va| 成人h版在线观看| 精品一区二区三区视频在线观看| 亚洲自拍偷拍综合| 国产精品丝袜91| 色哟哟日韩精品| 国产成人精品网址| 麻豆高清免费国产一区| 欧美bbbbb| 亚洲成a人片在线观看中文| 中文字幕 久热精品 视频在线| 日韩视频123| 7777精品伊人久久久大香线蕉| 欧美日韩精品三区| 日本道精品一区二区三区| 国产成人精品一区二区三区网站观看 | 男女视频一区二区| 亚洲影院理伦片| 中文字幕一区二区三区av| 日本韩国一区二区| 在线精品观看国产| 色偷偷一区二区三区| 91丨porny丨在线| 成人福利视频网站| 成人午夜视频在线| 不卡av在线免费观看| 成人黄色片在线观看| 国产精品夜夜爽| 国产精品一区二区三区99| 久草热8精品视频在线观看| 午夜精品久久久久久久久久久| 五月天亚洲精品| 五月天网站亚洲| 日韩高清在线电影| 免费成人在线视频观看| 日韩国产欧美在线视频| 日韩电影免费在线看| 美腿丝袜在线亚洲一区| 久久疯狂做爰流白浆xx| 国产在线视视频有精品| 国产一区二区伦理| 成人一区在线观看| 色综合久久66| 91麻豆精品国产91久久久久| 91精品国产91久久综合桃花| 日韩一区二区在线播放| 国产亚洲女人久久久久毛片| 综合久久一区二区三区| 亚洲国产精品影院| 青青草视频一区| 国产乱理伦片在线观看夜一区| 国产成人在线网站| 欧美偷拍一区二区| 精品久久久久av影院| 欧美猛男gaygay网站| 欧美一区二区在线观看| 国产性做久久久久久| 亚洲人成在线播放网站岛国| 精品一区二区久久久| 亚洲高清免费一级二级三级| 国产精品国产精品国产专区不片 | 亚洲国产aⅴ天堂久久| 亚洲大片在线观看| 麻豆高清免费国产一区| 色av成人天堂桃色av| 日韩欧美国产成人一区二区| 国产91对白在线观看九色| 成人综合在线观看| 欧美亚洲国产一区二区三区| 88在线观看91蜜桃国自产| 欧美激情综合网| 一区二区三区在线免费播放| 蜜桃视频第一区免费观看| 不卡电影免费在线播放一区| 7777精品伊人久久久大香线蕉超级流畅| 91精品国产一区二区人妖| 欧美一级在线视频| 欧美日韩在线观看一区二区| 亚洲成av人片观看| 色综合天天综合| 欧美成人艳星乳罩| 岛国精品在线播放| 国产精品自拍在线| 欧美丝袜丝nylons| 中文字幕的久久| 欧美a一区二区| 制服.丝袜.亚洲.中文.综合| 中文字幕一区视频| 六月丁香婷婷色狠狠久久| 色综合中文字幕国产 | 精品一区二区三区在线播放| 欧美制服丝袜第一页| 国产女主播在线一区二区| 美日韩黄色大片| 欧美日韩一二区| ...xxx性欧美| 中文字幕免费一区|