⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lib_at91rm9200.c

📁 该源码是AT91RM9200处理器的loader文件
💻 C
📖 第 1 页 / 共 5 页
字号:
        return pRtc->RTC_IMR;}//*----------------------------------------------------------------------------//* \fn    AT91F_RTC_IsInterruptMasked//* \brief Test if RTC Interrupt is Masked //*---------------------------------------------------------------------------- int AT91F_RTC_IsInterruptMasked(        AT91PS_RTC pRtc,   // \arg  pointer to a RTC controller        unsigned int flag) // \arg  flag to be tested{        return (AT91F_RTC_GetInterruptMaskStatus(pRtc) & flag);}/* *****************************************************************************                SOFTWARE API FOR SSC   ***************************************************************************** *///* Define the standard I2S mode configuration//* Configuration to set in the SSC Transmit Clock Mode Register//* Parameters :  nb_bit_by_slot : 8, 16 or 32 bits//* 			  nb_slot_by_frame : number of channels#define AT91C_I2S_ASY_MASTER_TX_SETTING(nb_bit_by_slot, nb_slot_by_frame)( +\									   AT91C_SSC_CKS_DIV   +\                            		   AT91C_SSC_CKO_CONTINOUS      +\                            		   AT91C_SSC_CKG_NONE    +\                                       AT91C_SSC_START_FALL_RF +\                           			   AT91C_SSC_STTOUT  +\                            		   ((1<<16) & AT91C_SSC_STTDLY) +\                            		   ((((nb_bit_by_slot*nb_slot_by_frame)/2)-1) <<24))//* Configuration to set in the SSC Transmit Frame Mode Register//* Parameters : nb_bit_by_slot : 8, 16 or 32 bits//* 			 nb_slot_by_frame : number of channels#define AT91C_I2S_ASY_TX_FRAME_SETTING(nb_bit_by_slot, nb_slot_by_frame)( +\									(nb_bit_by_slot-1)  +\                            		AT91C_SSC_MSBF   +\                            		(((nb_slot_by_frame-1)<<8) & AT91C_SSC_DATNB)  +\                            		(((nb_bit_by_slot-1)<<16) & AT91C_SSC_FSLEN) +\                            		AT91C_SSC_FSOS_NEGATIVE)//*----------------------------------------------------------------------------//* \fn    AT91F_SSC_SetBaudrate//* \brief Set the baudrate according to the CPU clock//*---------------------------------------------------------------------------- void AT91F_SSC_SetBaudrate (        AT91PS_SSC pSSC,        // \arg pointer to a SSC controller        unsigned int mainClock, // \arg peripheral clock        unsigned int speed)     // \arg SSC baudrate{        unsigned int baud_value;        //* Define the baud rate divisor register        if (speed == 0)           baud_value = 0;        else        {           baud_value = (unsigned int) (mainClock * 10)/(2*speed);           if ((baud_value % 10) >= 5)                  baud_value = (baud_value / 10) + 1;           else                  baud_value /= 10;        }        pSSC->SSC_CMR = baud_value;}//*----------------------------------------------------------------------------//* \fn    AT91F_SSC_Configure//* \brief Configure SSC//*---------------------------------------------------------------------------- void AT91F_SSC_Configure (             AT91PS_SSC pSSC,          // \arg pointer to a SSC controller             unsigned int syst_clock,  // \arg System Clock Frequency             unsigned int baud_rate,   // \arg Expected Baud Rate Frequency             unsigned int clock_rx,    // \arg Receiver Clock Parameters             unsigned int mode_rx,     // \arg mode Register to be programmed             unsigned int clock_tx,    // \arg Transmitter Clock Parameters             unsigned int mode_tx)     // \arg mode Register to be programmed{    //* Disable interrupts	pSSC->SSC_IDR = (unsigned int) -1;    //* Reset receiver and transmitter	pSSC->SSC_CR = AT91C_SSC_SWRST | AT91C_SSC_RXDIS | AT91C_SSC_TXDIS ;    //* Define the Clock Mode Register	AT91F_SSC_SetBaudrate(pSSC, syst_clock, baud_rate);     //* Write the Receive Clock Mode Register	pSSC->SSC_RCMR =  clock_rx;     //* Write the Transmit Clock Mode Register	pSSC->SSC_TCMR =  clock_tx;     //* Write the Receive Frame Mode Register	pSSC->SSC_RFMR =  mode_rx;     //* Write the Transmit Frame Mode Register	pSSC->SSC_TFMR =  mode_tx;    //* Clear Transmit and Receive Counters	AT91F_PDC_Open((AT91PS_PDC) &(pSSC->SSC_RPR));}//*----------------------------------------------------------------------------//* \fn    AT91F_SSC_EnableRx//* \brief Enable receiving datas//*---------------------------------------------------------------------------- void AT91F_SSC_EnableRx (	AT91PS_SSC pSSC)     // \arg pointer to a SSC controller{    //* Enable receiver    pSSC->SSC_CR = AT91C_SSC_RXEN;}//*----------------------------------------------------------------------------//* \fn    AT91F_SSC_DisableRx//* \brief Disable receiving datas//*---------------------------------------------------------------------------- void AT91F_SSC_DisableRx (	AT91PS_SSC pSSC)     // \arg pointer to a SSC controller{    //* Disable receiver    pSSC->SSC_CR = AT91C_SSC_RXDIS;}//*----------------------------------------------------------------------------//* \fn    AT91F_SSC_EnableTx//* \brief Enable sending datas//*---------------------------------------------------------------------------- void AT91F_SSC_EnableTx (	AT91PS_SSC pSSC)     // \arg pointer to a SSC controller{    //* Enable  transmitter    pSSC->SSC_CR = AT91C_SSC_TXEN;}//*----------------------------------------------------------------------------//* \fn    AT91F_SSC_DisableTx//* \brief Disable sending datas//*---------------------------------------------------------------------------- void AT91F_SSC_DisableTx (	AT91PS_SSC pSSC)     // \arg pointer to a SSC controller{    //* Disable  transmitter    pSSC->SSC_CR = AT91C_SSC_TXDIS;}//*----------------------------------------------------------------------------//* \fn    AT91F_SSC_EnableIt//* \brief Enable SSC IT//*---------------------------------------------------------------------------- void AT91F_SSC_EnableIt (	AT91PS_SSC pSSC, // \arg pointer to a SSC controller	unsigned int flag)   // \arg IT to be enabled{	//* Write to the IER register	pSSC->SSC_IER = flag;}//*----------------------------------------------------------------------------//* \fn    AT91F_SSC_DisableIt//* \brief Disable SSC IT//*---------------------------------------------------------------------------- void AT91F_SSC_DisableIt (	AT91PS_SSC pSSC, // \arg pointer to a SSC controller	unsigned int flag)   // \arg IT to be disabled{	//* Write to the IDR register	pSSC->SSC_IDR = flag;}//*----------------------------------------------------------------------------//* \fn    AT91F_SSC_ReceiveFrame//* \brief Return 2 if PDC has been initialized with Buffer and Next Buffer, 1 if PDC has been initialized with Next Buffer, 0 if PDC is busy//*---------------------------------------------------------------------------- unsigned int AT91F_SSC_ReceiveFrame (	AT91PS_SSC pSSC,	char *pBuffer,	unsigned int szBuffer,	char *pNextBuffer,	unsigned int szNextBuffer ){	return AT91F_PDC_ReceiveFrame(		(AT91PS_PDC) &(pSSC->SSC_RPR),		pBuffer,		szBuffer,		pNextBuffer,		szNextBuffer);}//*----------------------------------------------------------------------------//* \fn    AT91F_SSC_SendFrame//* \brief Return 2 if PDC has been initialized with Buffer and Next Buffer, 1 if PDC has been initialized with Next Buffer, 0 if PDC is busy//*---------------------------------------------------------------------------- unsigned int AT91F_SSC_SendFrame(	AT91PS_SSC pSSC,	char *pBuffer,	unsigned int szBuffer,	char *pNextBuffer,	unsigned int szNextBuffer ){	return AT91F_PDC_SendFrame(		(AT91PS_PDC) &(pSSC->SSC_RPR),		pBuffer,		szBuffer,		pNextBuffer,		szNextBuffer);}//*----------------------------------------------------------------------------//* \fn    AT91F_SSC_GetInterruptMaskStatus//* \brief Return SSC Interrupt Mask Status//*---------------------------------------------------------------------------- unsigned int AT91F_SSC_GetInterruptMaskStatus( // \return SSC Interrupt Mask Status        AT91PS_SSC pSsc) // \arg  pointer to a SSC controller{        return pSsc->SSC_IMR;}//*----------------------------------------------------------------------------//* \fn    AT91F_SSC_IsInterruptMasked//* \brief Test if SSC Interrupt is Masked //*---------------------------------------------------------------------------- int AT91F_SSC_IsInterruptMasked(        AT91PS_SSC pSsc,   // \arg  pointer to a SSC controller        unsigned int flag) // \arg  flag to be tested{        return (AT91F_SSC_GetInterruptMaskStatus(pSsc) & flag);}/* *****************************************************************************                SOFTWARE API FOR SPI   ***************************************************************************** *///*----------------------------------------------------------------------------//* \fn    AT91F_SPI_Open//* \brief Open a SPI Port//*---------------------------------------------------------------------------- unsigned int AT91F_SPI_Open (        const unsigned int null)  // \arg{        /* NOT DEFINED AT THIS MOMENT */        return ( 0 );}//*----------------------------------------------------------------------------//* \fn    AT91F_SPI_CfgCs//* \brief Configure SPI chip select register//*---------------------------------------------------------------------------- void AT91F_SPI_CfgCs (	int cs,     // SPI cs number (0 to 3) 	int val)   //  chip select register{	//* Write to the CSR register	*(AT91C_SPI_CSR + cs) = val;}//*----------------------------------------------------------------------------//* \fn    AT91F_SPI_EnableIt//* \brief Enable SPI interrupt//*---------------------------------------------------------------------------- void AT91F_SPI_EnableIt (	AT91PS_SPI pSPI,     // pointer to a SPI controller	unsigned int flag)   // IT to be enabled{	//* Write to the IER register	pSPI->SPI_IER = flag;}//*----------------------------------------------------------------------------//* \fn    AT91F_SPI_DisableIt//* \brief Disable SPI interrupt//*---------------------------------------------------------------------------- void AT91F_SPI_DisableIt (	AT91PS_SPI pSPI, // pointer to a SPI controller	unsigned int flag) // IT to be disabled{	//* Write to the IDR register	pSPI->SPI_IDR = flag;}//*----------------------------------------------------------------------------//* \fn    AT91F_SPI_Reset//* \brief Reset the SPI controller//*---------------------------------------------------------------------------- void AT91F_SPI_Reset (	AT91PS_SPI pSPI // pointer to a SPI controller	){	//* Write to the CR register	pSPI->SPI_CR = AT91C_SPI_SWRST;}//*----------------------------------------------------------------------------//* \fn    AT91F_SPI_Enable//* \brief Enable the SPI controller//*---------------------------------------------------------------------------- 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//*---------------------------------------------------------------------------- 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//*---------------------------------------------------------------------------- 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//*---------------------------------------------------------------------------- void AT91F_SPI_CfgPCS (	AT91PS_SPI pSPI, // pointer to a SPI controller

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -