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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? at91rm9200_lib.c

?? at91rm9200中斷例程
?? C
?? 第 1 頁 / 共 5 頁
字號:
	AT91PS_SPI pSPI // pointer to a SPI controller
	)
{
	//* 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
//*----------------------------------------------------------------------------
 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)
//*----------------------------------------------------------------------------
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)
//*----------------------------------------------------------------------------
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
//*----------------------------------------------------------------------------
void AT91F_PMC_EnablePeriphClock1 (
	AT91PS_PMC pPMC, // \arg pointer to PMC controller
	AT91PS_CKGR pCKGR,//\CKGR
         unsigned int periphIds)  // \arg IDs of peripherals to enable
{        //pPMC->PMC_SCDR=0x1<<8;
         //pPMC->PMC_PCKR[0]=0x3;
         pPMC->PMC_SCER=0x1;       
         pCKGR->CKGR_MOR=0xE0<<8|0x1;//|0x80<<8;
         //pPMC->PMC_MCKR=0x3;
         pPMC->PMC_PCER =periphIds;
         
}

//*----------------------------------------------------------------------------
void AT91F_PMC_EnablePeriphClock (
	AT91PS_PMC pPMC, // \arg pointer to PMC controller
         unsigned int periphIds)  // \arg IDs of peripherals to enable
{        pPMC->PMC_SCER=0x1;
	pPMC->PMC_PCER = periphIds;
}
//*-----------------------------------------------------------------------------

//*----------------------------------------------------------------------------
//* \fn    AT91F_PMC_DisablePeriphClock
//* \brief Disable peripheral clock
//*----------------------------------------------------------------------------
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
//*----------------------------------------------------------------------------
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
//*----------------------------------------------------------------------------
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;
}

/* *****************************************************************************

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜免费福利视频| 日韩av一二三| 国产精品剧情在线亚洲| 日本一区二区三区电影| 久久综合av免费| 欧美激情一区在线| 国产精品美女久久久久久久久久久 | 蜜臀av一区二区| 日韩和欧美一区二区| 免费人成精品欧美精品| 久久精品国产免费看久久精品| 男人的天堂久久精品| 国产最新精品精品你懂的| 国产一区二区三区观看| www.欧美色图| 欧美午夜影院一区| 日韩欧美国产综合| 国产三级欧美三级日产三级99| 久久久久久97三级| 亚洲人成电影网站色mp4| 亚洲午夜精品一区二区三区他趣| 日本aⅴ亚洲精品中文乱码| 国产精品伊人色| 在线免费亚洲电影| 精品欧美一区二区三区精品久久 | 国产一区激情在线| 北条麻妃国产九九精品视频| 欧美在线观看禁18| 国产香蕉久久精品综合网| 亚洲欧美二区三区| 蜜臀av亚洲一区中文字幕| 成人app在线| 7777精品伊人久久久大香线蕉超级流畅 | 成人午夜激情在线| 精品视频在线免费观看| 久久精品视频一区二区| 亚洲精品福利视频网站| 久久99精品视频| 在线免费观看日韩欧美| 26uuu久久天堂性欧美| 亚洲综合激情网| 成人综合激情网| 日韩精品中文字幕一区二区三区| 亚洲蜜臀av乱码久久精品蜜桃| 九色|91porny| 欧美精品久久99| 亚洲狼人国产精品| 成人综合婷婷国产精品久久| 日韩欧美中文字幕公布| 亚洲精品五月天| 白白色 亚洲乱淫| 精品伦理精品一区| 五月天一区二区三区| 91蜜桃免费观看视频| 欧美国产精品专区| 经典一区二区三区| 欧美一区二区三区思思人| 亚洲愉拍自拍另类高清精品| 本田岬高潮一区二区三区| 中文一区二区完整视频在线观看| 日本成人中文字幕| 欧美日韩成人综合| 亚洲精品亚洲人成人网在线播放| jlzzjlzz国产精品久久| 久久影院午夜论| 国产乱人伦偷精品视频免下载| 欧美tk—视频vk| 日本一不卡视频| 这里是久久伊人| 日韩高清欧美激情| 91精品国产乱| 琪琪久久久久日韩精品| 日韩一级片在线播放| 日本欧美久久久久免费播放网| 欧美欧美欧美欧美首页| 日日夜夜免费精品| 欧美成人一区二区三区在线观看 | 国产精品电影一区二区| 成人久久久精品乱码一区二区三区| 久久久久久一级片| 国产v综合v亚洲欧| 中文字幕一区二区三区在线播放| 成人18视频日本| 亚洲一区在线观看视频| 欧美日韩国产一区二区三区地区| 天天操天天综合网| 精品久久久久久最新网址| 国产传媒日韩欧美成人| 自拍偷在线精品自拍偷无码专区| 一本一道久久a久久精品| 天天综合天天综合色| xfplay精品久久| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 免播放器亚洲一区| 欧美成人猛片aaaaaaa| 国产精品18久久久久久久久| 国产精品久久久久久久久搜平片| 92国产精品观看| 全部av―极品视觉盛宴亚洲| 久久美女艺术照精彩视频福利播放| 成人ar影院免费观看视频| 性感美女久久精品| 国产亚洲欧美一级| 欧洲日韩一区二区三区| 极品少妇xxxx偷拍精品少妇| 亚洲欧洲无码一区二区三区| 欧美精品丝袜中出| www.爱久久.com| 爽爽淫人综合网网站| 国产精品卡一卡二卡三| 91精品国产综合久久蜜臀| 成人av免费观看| 日韩专区中文字幕一区二区| 国产视频一区二区在线| 欧美日韩黄色影视| fc2成人免费人成在线观看播放| 丝袜美腿成人在线| 亚洲麻豆国产自偷在线| 精品国产精品网麻豆系列| 日本精品一级二级| 国产成人免费视频网站| 天天免费综合色| 亚洲美女少妇撒尿| 肉肉av福利一精品导航| 国产亚洲精品资源在线26u| 欧美午夜一区二区三区免费大片| 国产成人在线免费| 免费在线观看成人| 亚洲黄色小视频| 国产精品美女一区二区在线观看| 欧美一区二区三区小说| 欧美性三三影院| 成人免费毛片嘿嘿连载视频| 日本女人一区二区三区| 伊人婷婷欧美激情| 国产精品久久久久一区| 日韩一区二区三区在线| 欧美精品在线观看播放| 欧美综合久久久| 91亚洲大成网污www| 不卡欧美aaaaa| 国产成人高清视频| 国产一区二区免费在线| 久久草av在线| 老色鬼精品视频在线观看播放| 视频在线在亚洲| 亚洲成人资源在线| 丝袜诱惑亚洲看片| 日韩av一级片| 久久爱另类一区二区小说| 美女国产一区二区| 国产资源精品在线观看| 久久91精品国产91久久小草| 久久成人久久鬼色| 国产乱国产乱300精品| 国产999精品久久久久久| 国产一级精品在线| 床上的激情91.| 91视频观看免费| 欧美日韩电影一区| 日韩欧美精品在线视频| 2021久久国产精品不只是精品| 久久精品一区二区三区不卡 | 日韩欧美久久一区| 久久免费看少妇高潮| 国产精品美女一区二区三区 | 午夜电影网一区| 丝袜美腿一区二区三区| 九九在线精品视频| 99视频热这里只有精品免费| 91麻豆国产香蕉久久精品| 欧美视频日韩视频| 欧美精品一区二区三区很污很色的 | 91色在线porny| 欧美性色黄大片| 精品久久久久久无| 国产精品五月天| 日韩国产精品久久久| 国产精品系列在线播放| 在线免费一区三区| 精品国产sm最大网站| 亚洲另类一区二区| 激情综合网激情| 色婷婷久久综合| 精品99久久久久久| 亚洲视频在线一区二区| 另类小说欧美激情| 91一区二区三区在线观看| 欧美一区二区三区小说| 欧美激情中文字幕一区二区| 亚洲成a天堂v人片| 成人不卡免费av| 日韩欧美国产三级电影视频| 1000精品久久久久久久久| 麻豆久久久久久| 91麻豆自制传媒国产之光| 久久久影院官网| 偷拍亚洲欧洲综合| 91麻豆免费在线观看| 国产三级一区二区|