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

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

?? lib_at91rm9200.h

?? ARM9200的can驅動原程序
?? H
?? 第 1 頁 / 共 5 頁
字號:

//*----------------------------------------------------------------------------
//* \fn    AT91F_SPI_Enable
//* \brief Enable the SPI controller
//*----------------------------------------------------------------------------
__inline void AT91F_SPI_Enable (
	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
//*----------------------------------------------------------------------------
__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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情综合网最新| 3atv一区二区三区| 丁香六月综合激情| 国产一区二区剧情av在线| 青青草国产成人av片免费| 日韩影院精彩在线| 麻豆91精品视频| 久久精品国产精品亚洲精品| 久久福利视频一区二区| 欧美国产欧美综合| 五月天激情综合| 亚洲小说欧美激情另类| 午夜激情综合网| 美女视频网站久久| 国产麻豆精品在线观看| caoporm超碰国产精品| 色综合久久综合中文综合网| 在线欧美小视频| 欧美日韩一区二区三区视频| 91精品啪在线观看国产60岁| 精品国产成人系列| 中文字幕电影一区| 一区二区三区精品在线观看| 午夜久久久久久久久久一区二区| 日韩精品一二三| 激情av综合网| 91麻豆精品在线观看| 欧美日韩三级一区| 日韩女优av电影在线观看| 久久免费精品国产久精品久久久久| 国产亚洲欧美一级| 樱花草国产18久久久久| 视频一区视频二区在线观看| 国产酒店精品激情| 91国偷自产一区二区开放时间 | 日韩欧美在线网站| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲国产成人私人影院tom| 亚洲婷婷综合色高清在线| 五月天激情综合| 岛国精品在线播放| 欧美日本一道本| 亚洲国产岛国毛片在线| 亚洲午夜在线电影| 国产一区二区三区蝌蚪| 91麻豆swag| 精品少妇一区二区三区在线播放| 成人免费在线播放视频| 日本亚洲视频在线| jiyouzz国产精品久久| 欧美一区二区女人| 中文字幕亚洲欧美在线不卡| 五月天精品一区二区三区| 成人夜色视频网站在线观看| 欧美精品一二三| 国产精品久久久一本精品| 日本三级韩国三级欧美三级| 成人免费视频视频在线观看免费 | 日本一区二区综合亚洲| 亚洲国产中文字幕| 国产**成人网毛片九色| 欧美精品tushy高清| 国产精品成人网| 精彩视频一区二区三区| 欧美日韩国产成人在线免费| 自拍偷自拍亚洲精品播放| 精品在线观看视频| 7799精品视频| 亚洲愉拍自拍另类高清精品| 国产精品亚洲人在线观看| 欧美日韩精品福利| 久久99国产精品尤物| 一本大道综合伊人精品热热| 国产亚洲成aⅴ人片在线观看| 性做久久久久久久免费看| www.亚洲色图.com| 久久久亚洲国产美女国产盗摄| 午夜在线电影亚洲一区| 99这里都是精品| 精品国产乱码久久久久久老虎| 亚洲一级二级三级| 94-欧美-setu| 国产精品每日更新| 成人免费va视频| 久久久国产综合精品女国产盗摄| 人人爽香蕉精品| 欧美日韩午夜在线| 亚洲伊人伊色伊影伊综合网| 色综合中文字幕国产 | 久久久久97国产精华液好用吗| 日日夜夜免费精品| 欧美日韩久久不卡| 亚洲午夜电影在线观看| 色哟哟一区二区在线观看| 1区2区3区精品视频| 成人av资源在线观看| 国产视频一区在线观看| 国产美女精品在线| 久久久国产一区二区三区四区小说| 激情小说欧美图片| 久久影院电视剧免费观看| 狠狠色狠狠色合久久伊人| 精品国精品国产| 国产精品一二三四五| 欧美国产日韩在线观看| 成人毛片在线观看| 国产精品久99| 色综合久久久久综合体桃花网| 亚洲欧美另类久久久精品| 91久久精品一区二区三| 亚洲午夜一区二区| 欧美一区二区三区免费视频 | 成人福利视频网站| 中文字幕一区二区视频| 91在线你懂得| 亚洲韩国一区二区三区| 91麻豆精品国产自产在线| 蜜桃视频一区二区| 久久久精品黄色| 97久久超碰国产精品| 一区二区三区av电影| 欧美午夜精品免费| 日韩av在线免费观看不卡| 精品99一区二区三区| 成人久久视频在线观看| 亚洲精品欧美二区三区中文字幕| 欧美三级电影网| 蜜臀av亚洲一区中文字幕| 久久久电影一区二区三区| www.成人在线| 首页国产丝袜综合| 国产亚洲精品免费| 在线亚洲高清视频| 另类调教123区| 国产精品毛片无遮挡高清| 欧美色爱综合网| 国产精品自在在线| 亚洲人成网站精品片在线观看| 欧美人伦禁忌dvd放荡欲情| 国内精品久久久久影院薰衣草| 国产精品电影院| 欧美美女激情18p| 国产精一区二区三区| 亚洲线精品一区二区三区| 久久综合九色综合97_久久久| 99久久综合99久久综合网站| 亚洲成人资源在线| 欧美激情综合在线| 制服丝袜中文字幕亚洲| 国产91丝袜在线播放| 亚洲综合成人网| 欧美国产成人精品| 欧美日韩三级在线| 成人爱爱电影网址| 日本v片在线高清不卡在线观看| 国产欧美一区视频| 7777精品伊人久久久大香线蕉的| 国产91露脸合集magnet| 日韩影视精彩在线| 亚洲免费在线电影| 久久综合色8888| 7777精品久久久大香线蕉| 不卡的av在线播放| 蜜臀a∨国产成人精品| 亚洲四区在线观看| 国产拍欧美日韩视频二区| 91麻豆精品国产自产在线| 91免费看片在线观看| 国产一区二区三区黄视频 | 亚洲成人自拍偷拍| 中文字幕一区二区三区不卡在线| 日韩欧美成人一区二区| 色8久久精品久久久久久蜜| 国产精品12区| 久久精品理论片| 亚洲18女电影在线观看| 亚洲激情在线激情| 中文字幕国产精品一区二区| 欧美成人vr18sexvr| 9191精品国产综合久久久久久| 99国内精品久久| 成人听书哪个软件好| 国产一区二区日韩精品| 日产国产欧美视频一区精品| 亚洲三级视频在线观看| 国产精品天干天干在观线| 国产三区在线成人av| 欧美一级电影网站| 欧美裸体bbwbbwbbw| 欧日韩精品视频| 日本高清不卡aⅴ免费网站| 99re这里只有精品6| 不卡电影一区二区三区| 粉嫩一区二区三区性色av| 国产一区二区三区| 国产剧情一区二区三区| 国产精华液一区二区三区| 国产在线播放一区三区四| 蜜臀99久久精品久久久久久软件 | 在线成人免费视频|