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

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

?? lib_at91rm9200.h

?? Rtl8139在實時多任務操作系統VxWorks下的驅動源碼
?? H
?? 第 1 頁 / 共 5 頁
字號:
	//* Write to the CR register
	pSPI->SPI_CR = AT91C_SPI_SPIEN;
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_SPI_Disable
//* \brief Disable the SPI controller
//*----------------------------------------------------------------------------
__inline void AT91F_SPI_Disable (
	AT91PS_SPI pSPI // pointer to a SPI controller
	)
{
	//* Write to the CR register
	pSPI->SPI_CR = AT91C_SPI_SPIDIS;
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_SPI_CfgMode
//* \brief Enable the SPI controller
//*----------------------------------------------------------------------------
__inline void AT91F_SPI_CfgMode (
	AT91PS_SPI pSPI, // pointer to a SPI controller
	int mode)        // mode register 
{
	//* Write to the MR register
	pSPI->SPI_MR = mode;
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_SPI_CfgPCS
//* \brief Switch to the correct PCS of SPI Mode Register : Fixed Peripheral Selected
//*----------------------------------------------------------------------------
__inline void AT91F_SPI_CfgPCS (
	AT91PS_SPI pSPI, // pointer to a SPI controller
	char PCS_Device) // PCS of the Device
{	
 	//* Write to the MR register
	pSPI->SPI_MR &= 0xFFF0FFFF;
	pSPI->SPI_MR |= ( (PCS_Device<<16) & AT91C_SPI_PCS );
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_SPI_ReceiveFrame
//* \brief Return 2 if PDC has been initialized with Buffer and Next Buffer, 1 if PDC has been initializaed with Next Buffer, 0 if PDC is busy
//*----------------------------------------------------------------------------
__inline unsigned int AT91F_SPI_ReceiveFrame (
	AT91PS_SPI pSPI,
	char *pBuffer,
	unsigned int szBuffer,
	char *pNextBuffer,
	unsigned int szNextBuffer )
{
	return AT91F_PDC_ReceiveFrame(
		(AT91PS_PDC) &(pSPI->SPI_RPR),
		pBuffer,
		szBuffer,
		pNextBuffer,
		szNextBuffer);
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_SPI_SendFrame
//* \brief Return 2 if PDC has been initialized with Buffer and Next Buffer, 1 if PDC has been initializaed with Next Buffer, 0 if PDC is bSPIy
//*----------------------------------------------------------------------------
__inline unsigned int AT91F_SPI_SendFrame(
	AT91PS_SPI pSPI,
	char *pBuffer,
	unsigned int szBuffer,
	char *pNextBuffer,
	unsigned int szNextBuffer )
{
	return AT91F_PDC_SendFrame(
		(AT91PS_PDC) &(pSPI->SPI_RPR),
		pBuffer,
		szBuffer,
		pNextBuffer,
		szNextBuffer);
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_SPI_Close
//* \brief Close SPI: disable IT disable transfert, close PDC
//*----------------------------------------------------------------------------
__inline void AT91F_SPI_Close (
	AT91PS_SPI pSPI)     // \arg pointer to a SPI controller
{
    //* Reset all the Chip Select register
    pSPI->SPI_CSR[0] = 0 ;
    pSPI->SPI_CSR[1] = 0 ;
    pSPI->SPI_CSR[2] = 0 ;
    pSPI->SPI_CSR[3] = 0 ;

    //* Reset the SPI mode
    pSPI->SPI_MR = 0  ;

    //* Disable all interrupts
    pSPI->SPI_IDR = 0xFFFFFFFF ;

    //* Abort the Peripheral Data Transfers
    AT91F_PDC_Close((AT91PS_PDC) &(pSPI->SPI_RPR));

    //* Disable receiver and transmitter and stop any activity immediately
    pSPI->SPI_CR = AT91C_SPI_SPIDIS;
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_SPI_PutChar
//* \brief Send a character,does not check if ready to send
//*----------------------------------------------------------------------------
__inline void AT91F_SPI_PutChar (
	AT91PS_SPI pSPI,
	unsigned int character,
             unsigned int cs_number )
{
    unsigned int value_for_cs;
    value_for_cs = (~(1 << cs_number)) & 0xF;  //Place a zero among a 4 ONEs number
    pSPI->SPI_TDR = (character & 0xFFFF) | (value_for_cs << 16);
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_SPI_GetChar
//* \brief Receive a character,does not check if a character is available
//*----------------------------------------------------------------------------
__inline int AT91F_SPI_GetChar (
	const AT91PS_SPI pSPI)
{
    return((pSPI->SPI_RDR) & 0xFFFF);
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_SPI_GetInterruptMaskStatus
//* \brief Return SPI Interrupt Mask Status
//*----------------------------------------------------------------------------
__inline unsigned int AT91F_SPI_GetInterruptMaskStatus( // \return SPI Interrupt Mask Status
        AT91PS_SPI pSpi) // \arg  pointer to a SPI controller
{
        return pSpi->SPI_IMR;
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_SPI_IsInterruptMasked
//* \brief Test if SPI Interrupt is Masked 
//*----------------------------------------------------------------------------
__inline int AT91F_SPI_IsInterruptMasked(
        AT91PS_SPI pSpi,   // \arg  pointer to a SPI controller
        unsigned int flag) // \arg  flag to be tested
{
        return (AT91F_SPI_GetInterruptMaskStatus(pSpi) & flag);
}

/* *****************************************************************************
                SOFTWARE API FOR TC
   ***************************************************************************** */
//*----------------------------------------------------------------------------
//* \fn    AT91F_TC_InterruptEnable
//* \brief Enable TC Interrupt
//*----------------------------------------------------------------------------
__inline void AT91F_TC_InterruptEnable(
        AT91PS_TC pTc,   // \arg  pointer to a TC controller
        unsigned int flag) // \arg  TC interrupt to be enabled
{
        pTc->TC_IER = flag;
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_TC_InterruptDisable
//* \brief Disable TC Interrupt
//*----------------------------------------------------------------------------
__inline void AT91F_TC_InterruptDisable(
        AT91PS_TC pTc,   // \arg  pointer to a TC controller
        unsigned int flag) // \arg  TC interrupt to be disabled
{
        pTc->TC_IDR = flag;
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_TC_GetInterruptMaskStatus
//* \brief Return TC Interrupt Mask Status
//*----------------------------------------------------------------------------
__inline unsigned int AT91F_TC_GetInterruptMaskStatus( // \return TC Interrupt Mask Status
        AT91PS_TC pTc) // \arg  pointer to a TC controller
{
        return pTc->TC_IMR;
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_TC_IsInterruptMasked
//* \brief Test if TC Interrupt is Masked 
//*----------------------------------------------------------------------------
__inline int AT91F_TC_IsInterruptMasked(
        AT91PS_TC pTc,   // \arg  pointer to a TC controller
        unsigned int flag) // \arg  flag to be tested
{
        return (AT91F_TC_GetInterruptMaskStatus(pTc) & flag);
}

/* *****************************************************************************
                SOFTWARE API FOR PMC
   ***************************************************************************** */
//*----------------------------------------------------------------------------
//* \fn    AT91F_CKGR_GetMainClock
//* \brief Return Main clock in Hz
//*----------------------------------------------------------------------------
__inline unsigned int AT91F_CKGR_GetMainClock (
	AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller
	unsigned int slowClock)  // \arg slowClock in Hz
{
	return ((pCKGR->CKGR_MCFR  & AT91C_CKGR_MAINF) * slowClock) >> 4;
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_PMC_GetProcessorClock
//* \brief Return processor clock in Hz (for AT91RM3400 and AT91RM9200)
//*----------------------------------------------------------------------------
__inline unsigned int AT91F_PMC_GetProcessorClock (
	AT91PS_PMC pPMC, // \arg pointer to PMC controller
	AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller
	unsigned int slowClock)  // \arg slowClock in Hz
{
	unsigned int reg = pPMC->PMC_MCKR;
	unsigned int prescaler = (1 << ((reg & AT91C_PMC_PRES) >> 2));
	unsigned int pllDivider, pllMultiplier;

	switch (reg & AT91C_PMC_CSS) {
		case AT91C_PMC_CSS_SLOW_CLK: // Slow clock selected
			return slowClock / prescaler;
		case AT91C_PMC_CSS_MAIN_CLK: // Main clock is selected
			return AT91F_CKGR_GetMainClock(pCKGR, slowClock) / prescaler;
		case AT91C_PMC_CSS_PLLA_CLK: // PLLA clock is selected
			reg = pCKGR->CKGR_PLLAR;
			pllDivider    = (reg  & AT91C_CKGR_DIVA);
			pllMultiplier = ((reg  & AT91C_CKGR_MULA) >> 16) + 1;
			if (reg & AT91C_CKGR_SRCA) // Source is Main clock
				return AT91F_CKGR_GetMainClock(pCKGR, slowClock) / pllDivider * pllMultiplier / prescaler;
			else                       // Source is Slow clock
				return slowClock / pllDivider * pllMultiplier / prescaler;
		case AT91C_PMC_CSS_PLLB_CLK: // PLLB clock is selected
			reg = pCKGR->CKGR_PLLBR;
			pllDivider    = (reg  & AT91C_CKGR_DIVB);
			pllMultiplier = ((reg  & AT91C_CKGR_MULB) >> 16) + 1;
			return AT91F_CKGR_GetMainClock(pCKGR, slowClock) / pllDivider * pllMultiplier / prescaler;
	}
	return 0;
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_PMC_GetMasterClock
//* \brief Return master clock in Hz (just for AT91RM9200)
//*----------------------------------------------------------------------------
__inline unsigned int AT91F_PMC_GetMasterClock (
	AT91PS_PMC pPMC, // \arg pointer to PMC controller
	AT91PS_CKGR pCKGR, // \arg pointer to CKGR controller
	unsigned int slowClock)  // \arg slowClock in Hz
{
	return AT91F_PMC_GetProcessorClock(pPMC, pCKGR, slowClock) /
		(((pPMC->PMC_MCKR & AT91C_PMC_MDIV) >> 8)+1);
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_PMC_EnablePeriphClock
//* \brief Enable peripheral clock
//*----------------------------------------------------------------------------
__inline void AT91F_PMC_EnablePeriphClock (
	AT91PS_PMC pPMC, // \arg pointer to PMC controller
	unsigned int periphIds)  // \arg IDs of peripherals to enable
{
	pPMC->PMC_PCER = periphIds;
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_PMC_DisablePeriphClock
//* \brief Enable peripheral clock
//*----------------------------------------------------------------------------
__inline void AT91F_PMC_DisablePeriphClock (
	AT91PS_PMC pPMC, // \arg pointer to PMC controller
	unsigned int periphIds)  // \arg IDs of peripherals to enable
{
	pPMC->PMC_PCDR = periphIds;
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_PMC_EnablePCK
//* \brief Enable peripheral clock
//*----------------------------------------------------------------------------
__inline void AT91F_PMC_EnablePCK (
	AT91PS_PMC pPMC, // \arg pointer to PMC controller
	unsigned int pck,  // \arg Peripheral clock identifier 0 .. 7
	unsigned int ccs,  // \arg clock selection: AT91C_PMC_CSS_SLOW_CLK, AT91C_PMC_CSS_MAIN_CLK, AT91C_PMC_CSS_PLLA_CLK, AT91C_PMC_CSS_PLLB_CLK
	unsigned int pres) // \arg Programmable clock prescalar AT91C_PMC_PRES_CLK, AT91C_PMC_PRES_CLK_2, ..., AT91C_PMC_PRES_CLK_64
{
	pPMC->PMC_PCKR[pck] = ccs | pres;
	pPMC->PMC_SCER = (1 << pck) << 8;
}

//*----------------------------------------------------------------------------
//* \fn    AT91F_PMC_DisablePCK
//* \brief Enable peripheral clock
//*----------------------------------------------------------------------------
__inline void AT91F_PMC_DisablePCK (
	AT91PS_PMC pPMC, // \arg pointer to PMC controller
	unsigned int pck)  // \arg Peripheral clock identifier 0 .. 7
{
	pPMC->PMC_SCDR = (1 << pck) << 8;
}

/* *****************************************************************************
                SOFTWARE API FOR PIO
   ***************************************************************************** */
//*----------------------------------------------------------------------------
//* \fn    AT91F_PIO_CfgPeriph
//* \brief Enable pins to be drived by peripheral
//*----------------------------------------------------------------------------
__inline void AT91F_PIO_CfgPeriph(
	AT91PS_PIO pPio,             // \arg pointer to a PIO controller
	unsigned int periphAEnable,  // \arg PERIPH A to enable
	unsigned int periphBEnable)  // \arg PERIPH B to enable

{
	pPio->PIO_ASR = periphAEnable;
	pPio->PIO_BSR = periphBEnable;
	pPio->PIO_PDR = (periphAEnable | periphBEnable); // Set in Periph mode
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区不卡在线| 喷水一区二区三区| 欧美一级欧美一级在线播放| 成人午夜精品在线| 美女精品自拍一二三四| 日本亚洲电影天堂| 日韩电影在线免费观看| 99精品视频免费在线观看| 国产一区二区女| 在线观看91av| 日韩欧美一区二区视频| hitomi一区二区三区精品| 国产a精品视频| 在线欧美小视频| 欧美性感一区二区三区| 欧美精品在欧美一区二区少妇| 国产精品丝袜一区| 亚洲欧美日韩久久| 亚洲成人先锋电影| 亚洲国产精品久久人人爱| 日韩精品乱码免费| 国产在线精品国自产拍免费| 欧美高清视频一二三区 | 美女视频一区二区| 欧美三区在线观看| 欧美大片免费久久精品三p| 亚洲国产日韩综合久久精品| 色999日韩国产欧美一区二区| 欧美视频完全免费看| 成人网在线免费视频| 欧美一二三四在线| 麻豆久久久久久久| 精品理论电影在线| 中文字幕欧美三区| 亚洲高清在线精品| 678五月天丁香亚洲综合网| 久久久亚洲午夜电影| 亚洲桃色在线一区| 久久精品免费看| 91小宝寻花一区二区三区| 欧美二区在线观看| 亚洲 欧美综合在线网络| 欧美性做爰猛烈叫床潮| 亚洲bt欧美bt精品777| 7777精品伊人久久久大香线蕉 | 欧美日韩国产免费一区二区 | 美国欧美日韩国产在线播放| 91精品国产综合久久精品麻豆| 天天亚洲美女在线视频| 99久久精品国产精品久久| 自拍偷拍国产精品| 欧美日韩卡一卡二| 日本不卡视频在线观看| 久久久久久亚洲综合影院红桃| 国产ts人妖一区二区| 国产精品国产三级国产普通话99 | 在线成人免费视频| 精品一区二区综合| 欧美精品一级二级| 狠狠网亚洲精品| 欧美本精品男人aⅴ天堂| 国产在线一区观看| 亚洲日本va在线观看| 欧美一区三区二区| 成人激情开心网| 国产欧美日韩久久| 国产精品小仙女| 久久久午夜精品理论片中文字幕| av在线播放成人| 蜜臀av一区二区在线免费观看| 久久久无码精品亚洲日韩按摩| 91香蕉视频在线| 精品制服美女久久| 亚洲免费视频成人| 久久蜜桃一区二区| 欧美剧在线免费观看网站| 国模一区二区三区白浆| 一区二区三区四区乱视频| 99久免费精品视频在线观看| 三级成人在线视频| 中文字幕一区二区在线播放| 成人夜色视频网站在线观看| 视频一区二区欧美| 国产精品久久国产精麻豆99网站| 日韩一二三区视频| 91久久奴性调教| 国产精品一区二区视频| 图片区小说区国产精品视频| 国产精品毛片久久久久久久| 26uuu成人网一区二区三区| 国产一区在线观看麻豆| 婷婷成人激情在线网| 自拍偷拍亚洲激情| 日本一区二区三区在线不卡| 日韩一区二区在线播放| 一本到不卡免费一区二区| 亚洲影院久久精品| 日韩欧美一级二级三级| 欧美亚洲一区二区在线| 波多野结衣在线aⅴ中文字幕不卡| 麻豆国产精品777777在线| 亚洲自拍另类综合| 亚洲欧美日韩国产一区二区三区| 26uuu国产在线精品一区二区| 日韩一级片网站| 日韩一级大片在线观看| 6080午夜不卡| 欧美久久久久免费| 777久久久精品| 在线成人av影院| 欧美精品 日韩| 欧美一区日本一区韩国一区| 欧美麻豆精品久久久久久| 欧美性欧美巨大黑白大战| 色狠狠综合天天综合综合| 日本高清视频一区二区| 在线视频亚洲一区| 欧美色涩在线第一页| 91在线视频免费91| 色婷婷国产精品久久包臀| 在线看国产一区二区| 欧美天天综合网| 欧美一级片免费看| 精品国内片67194| 欧美在线999| 欧美日韩国产高清一区二区三区| 欧美精品亚洲一区二区在线播放| 在线播放/欧美激情| 欧美α欧美αv大片| 久久精品亚洲一区二区三区浴池 | 国产剧情一区二区三区| 成人在线视频一区| 色综合久久久久久久久久久| 欧美少妇xxx| 日韩精品一区二区在线| 久久久国产午夜精品| 亚洲欧美日韩国产中文在线| 午夜欧美在线一二页| 久久成人免费网| 成人av电影在线| 欧美精选一区二区| 久久蜜桃av一区二区天堂| 日韩毛片精品高清免费| 亚洲成av人片www| 国产一区亚洲一区| 一本大道久久精品懂色aⅴ| 欧美久久高跟鞋激| 欧美韩日一区二区三区四区| 夜夜爽夜夜爽精品视频| 狠狠色综合播放一区二区| 97超碰欧美中文字幕| 欧美一级视频精品观看| 国产精品麻豆一区二区| 五月天久久比比资源色| 国产不卡高清在线观看视频| 欧美婷婷六月丁香综合色| 国产夜色精品一区二区av| 亚洲一级片在线观看| 国产激情精品久久久第一区二区 | 国产精品一区二区男女羞羞无遮挡| heyzo一本久久综合| 日韩精品在线看片z| 一卡二卡欧美日韩| 国产美女精品人人做人人爽| 欧美日韩中文字幕一区二区| 国产亚洲欧美日韩日本| 丝袜国产日韩另类美女| 99久久精品免费看| 久久久亚洲国产美女国产盗摄 | 精品国产伦一区二区三区观看体验| 国产精品免费aⅴ片在线观看| 五月天欧美精品| 色婷婷激情综合| 国产精品久久久爽爽爽麻豆色哟哟| 免费亚洲电影在线| 在线免费不卡视频| 亚洲婷婷在线视频| 懂色av一区二区三区蜜臀| 日韩精品中文字幕一区| 丝瓜av网站精品一区二区 | 99久久99精品久久久久久| 亚洲精品在线三区| 久久精品免费观看| 欧美人狂配大交3d怪物一区| 亚洲免费观看高清完整版在线观看 | 久久91精品久久久久久秒播| 欧美老女人在线| 亚洲成人av在线电影| 91成人免费在线| 亚洲欧美日韩中文字幕一区二区三区| 国产成人亚洲综合a∨猫咪| 日韩免费在线观看| 精品一区二区三区影院在线午夜 | 精品午夜久久福利影院| 日韩写真欧美这视频| 麻豆极品一区二区三区| 亚洲精品一区二区三区影院 | 午夜伊人狠狠久久| 欧美军同video69gay| 日本欧美一区二区三区乱码 |