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

📄 lib_at91sam9261.h

📁 AT91RM9200 DataFlash boot源码
💻 H
📖 第 1 页 / 共 5 页
字号:
// ----------------------------------------------------------------------------
//         ATMEL Microcontroller Software Support  -  ROUSSET  -
// ----------------------------------------------------------------------------
// DISCLAIMER:  THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
// DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// ----------------------------------------------------------------------------
// File Name           : lib_AT91SAM9261.h
// Object              : AT91SAM9261 inlined functions
// Generated           : AT91 SW Application Group  03/30/2005 (17:05:06)
//
// CVS Reference       : /lib_LCDC_DIMITRI.h/1.2/Thu Jan 23 10:22:25 2003//
// CVS Reference       : /lib_dbgu.h/1.1/Fri Jan 31 12:18:40 2003//
// CVS Reference       : /lib_mci.h/1.7/Thu May 27 08:47:43 2004//
// CVS Reference       : /lib_pmc_SAM9261.h/1.1/Mon May 10 12:28:56 2004//
// CVS Reference       : /lib_hmatrix1_SAM9261.h/1.2/Mon Nov  8 16:38:17 2004//
// CVS Reference       : /lib_rstc_6098A.h/1.1/Wed Oct  6 09:39:19 2004//
// CVS Reference       : /lib_ssc.h/1.4/Fri Jan 31 12:19:20 2003//
// CVS Reference       : /lib_wdtc_6080A.h/1.1/Wed Oct  6 09:38:30 2004//
// CVS Reference       : /lib_spi2.h/1.1/Mon Aug 25 13:23:52 2003//
// CVS Reference       : /lib_usart.h/1.5/Thu Nov 21 16:01:53 2002//
// CVS Reference       : /lib_pitc_6079A.h/1.2/Thu Nov  4 14:01:11 2004//
// CVS Reference       : /lib_shdwc_6122A.h/1.1/Wed Oct  6 13:06:00 2004//
// CVS Reference       : /lib_aic.h/1.3/Fri Jul 12 07:46:11 2002//
// CVS Reference       : /lib_twi.h/1.3/Mon Jul 19 13:37:30 2004//
// CVS Reference       : /lib_rttc_6081A.h/1.1/Wed Oct  6 09:39:38 2004//
// CVS Reference       : /lib_udp.h/1.3/Fri Jan 31 12:19:48 2003//
// CVS Reference       : /lib_tc_1753b.h/1.1/Fri Jan 31 12:20:02 2003//
// CVS Reference       : /lib_pio.h/1.3/Fri Jan 31 12:18:56 2003//
// CVS Reference       : /lib_pdc.h/1.2/Tue Jul  2 12:29:40 2002//
// ----------------------------------------------------------------------------*/

#ifndef lib_AT91SAM9261_H
#define lib_AT91SAM9261_H

//*****************************************************************************
//                SOFTWARE API FOR MATRIX
//*****************************************************************************/


//----------------------------------------------------------------------------
// \fn    AT91F_MATRIX_Set_TCM_Size
// \brief Enable one or more TCM block
//----------------------------------------------------------------------------*/
static inline void AT91F_MATRIX_Set_TCM_Size (
        AT91PS_MATRIX pMATRIX,
        unsigned int tcm_size)
{
    pMATRIX->MATRIX_TCMR = tcm_size;
}


//----------------------------------------------------------------------------
// \fn    AT91F_MATRIX_Remap_ARM
// \brief Enable Remap of ARM
//----------------------------------------------------------------------------*/
static inline void AT91F_MATRIX_Remap_ARM (
        AT91PS_MATRIX pMATRIX)
{
    pMATRIX->MATRIX_MCFG = AT91C_MATRIX_RCA926I | AT91C_MATRIX_RCA926D;
}


//----------------------------------------------------------------------------
// \fn    AT91F_MATRIX_Disable_Remap_ARM
// \brief Disable Remap of ARM
//----------------------------------------------------------------------------*/
static inline void AT91F_MATRIX_Disable_Remap_ARM (
        AT91PS_MATRIX pMATRIX)
{
    pMATRIX->MATRIX_MCFG = AT91C_MATRIX_RCA926I | AT91C_MATRIX_RCA926D;
}

//----------------------------------------------------------------------------
// \fn    AT91F_MATRIX_Remap_ARMI
// \brief Enable Remap of ARM-I
//----------------------------------------------------------------------------*/
static inline void AT91F_MATRIX_Remap_ARMI (
        AT91PS_MATRIX pMATRIX)
{
    pMATRIX->MATRIX_MCFG = AT91C_MATRIX_RCA926I;
}


//----------------------------------------------------------------------------
// \fn    AT91F_MATRIX_Disable_Remap_ARMI
// \brief Disable Remap of ARM-I
//----------------------------------------------------------------------------*/
static inline void AT91F_MATRIX_Disable_Remap_ARMI (
        AT91PS_MATRIX pMATRIX)
{
    pMATRIX->MATRIX_MCFG = AT91C_MATRIX_RCA926I;
}

//----------------------------------------------------------------------------
// \fn    AT91F_MATRIX_Remap_ARMD
// \brief Enable Remap of ARM-D
//----------------------------------------------------------------------------*/
static inline void AT91F_MATRIX_Remap_ARMD (
        AT91PS_MATRIX pMATRIX)
{
    pMATRIX->MATRIX_MCFG = AT91C_MATRIX_RCA926D;
}


//----------------------------------------------------------------------------
// \fn    AT91F_MATRIX_Disable_Remap_ARM-D
// \brief Disable Remap of ARM-D
//----------------------------------------------------------------------------*/
static inline void AT91F_MATRIX_Disable_Remap_ARMD (
        AT91PS_MATRIX pMATRIX)
{
    pMATRIX->MATRIX_MCFG = AT91C_MATRIX_RCA926D;
}

//----------------------------------------------------------------------------
// \fn    AT91F_MATRIX_EnableSDRAMC
// \brief Enable the Chip Select of the SDRAM Controller
//----------------------------------------------------------------------------*/
static inline void AT91F_MATRIX_EnableSDRAMC (
        AT91PS_MATRIX pMATRIX)                        // \arg pointer to the MATRIX registers
         
{
    pMATRIX->MATRIX_EBICSA |= AT91C_MATRIX_CS1A_SDRAMC;
}

//----------------------------------------------------------------------------
// \fn    AT91F_MATRIX_DisableSDRAMC
// \brief Disable the Chip Select of the SDRAM Controller
//----------------------------------------------------------------------------*/
static inline void AT91F_MATRIX_DisableSDRAMC (
        AT91PS_MATRIX pMATRIX)                        // \arg pointer to the MATRIX registers
         
{
    pMATRIX->MATRIX_EBICSA &= ~AT91C_MATRIX_CS1A_SDRAMC;
}

//----------------------------------------------------------------------------
// \fn    AT91F_MATRIX_EnableSM_On_CS3
// \brief Enable the Chip Select 3 for CF Controller
//----------------------------------------------------------------------------*/
static inline void AT91F_MATRIX_EnableSM_On_CS3 (
        AT91PS_MATRIX pMATRIX)                        // \arg pointer to the MATRIX registers
         
{
    pMATRIX->MATRIX_EBICSA |= AT91C_MATRIX_CS3A_SM;
}

//----------------------------------------------------------------------------
// \fn    AT91F_MATRIX_DisableSM_On_CS3
// \brief Disable the Chip Select 3 for CF Controller
//----------------------------------------------------------------------------*/
static inline void AT91F_MATRIX_DisableSM_On_CS3 (
        AT91PS_MATRIX pMATRIX)                        // \arg pointer to the MATRIX registers
         
{
    pMATRIX->MATRIX_EBICSA &= ~AT91C_MATRIX_CS3A_SM;
}

//----------------------------------------------------------------------------
// \fn    AT91F_MATRIX_EnableCF_On_CS4
// \brief Enable the Chip Select 4 for CF Controller
//----------------------------------------------------------------------------*/
static inline void AT91F_MATRIX_EnableCF_On_CS4 (
        AT91PS_MATRIX pMATRIX)                        // \arg pointer to the MATRIX registers
         
{
    pMATRIX->MATRIX_EBICSA |= AT91C_MATRIX_CS4A_CF;
}

//----------------------------------------------------------------------------
// \fn    AT91F_MATRIX_DisableCF_On_CS4
// \brief Disable the Chip Select 4 for CF Controller
//----------------------------------------------------------------------------*/
static inline void AT91F_MATRIX_DisableCF_On_CS4 (
        AT91PS_MATRIX pMATRIX)                        // \arg pointer to the MATRIX registers
         
{
    pMATRIX->MATRIX_EBICSA &= ~AT91C_MATRIX_CS4A_CF;
}

//----------------------------------------------------------------------------
// \fn    AT91F_MATRIX_EnableCF_On_CS5
// \brief Enable the Chip Select 5 for CF Controller
//----------------------------------------------------------------------------*/
static inline void AT91F_MATRIX_EnableCF_On_CS5 (
        AT91PS_MATRIX pMATRIX)                        // \arg pointer to the MATRIX registers
         
{
    pMATRIX->MATRIX_EBICSA |= AT91C_MATRIX_CS5A_CF;
}

//----------------------------------------------------------------------------
// \fn    AT91F_MATRIX_DisableCF_On_CS5
// \brief Disable the Chip Select 5 for CF Controller
//----------------------------------------------------------------------------*/
static inline void AT91F_MATRIX_DisableCF_On_CS5 (
        AT91PS_MATRIX pMATRIX)                        // \arg pointer to the MATRIX registers
         
{
    pMATRIX->MATRIX_EBICSA &= ~AT91C_MATRIX_CS5A_CF;
}

//----------------------------------------------------------------------------
// \fn    AT91F_MATRIX_EnableEBIPULLUP
// \brief Enable the EBI PULLUP
//----------------------------------------------------------------------------*/
static inline void AT91F_MATRIX_EnableEBIPULLUP (
        AT91PS_MATRIX pMATRIX)                        // \arg pointer to the MATRIX registers
         
{
    pMATRIX->MATRIX_EBICSA |= AT91C_MATRIX_DBPUC;
}

//----------------------------------------------------------------------------
// \fn    AT91F_MATRIX_DisableEBIPULLUP
// \brief Disable the EBI PULLUP
//----------------------------------------------------------------------------*/
static inline void AT91F_MATRIX_DisableEBIPULLUP (
        AT91PS_MATRIX pMATRIX)                        // \arg pointer to the MATRIX registers
         
{
    pMATRIX->MATRIX_EBICSA &= ~AT91C_MATRIX_DBPUC;
}



/* *****************************************************************************
                SOFTWARE API FOR AIC
   ***************************************************************************** */
#define AT91C_AIC_BRANCH_OPCODE ((void (*) ()) 0xE51FFF20) // ldr, pc, [pc, #-&F20]

//----------------------------------------------------------------------------
// \fn    AT91F_AIC_ConfigureIt
// \brief Interrupt Handler Initialization
//----------------------------------------------------------------------------*/
static inline unsigned int AT91F_AIC_ConfigureIt (
	AT91PS_AIC pAic,  // \arg pointer to the AIC registers
	unsigned int irq_id,     // \arg interrupt number to initialize
	unsigned int priority,   // \arg priority to give to the interrupt
	unsigned int src_type,   // \arg activation and sense of activation
	void (*newHandler) (void) ) // \arg address of the interrupt handler
{
	unsigned int oldHandler;
    unsigned int mask ;

    oldHandler = pAic->AIC_SVR[irq_id];

    mask = 0x1 << irq_id ;
    // Disable the interrupt on the interrupt controller
    pAic->AIC_IDCR = mask ;
    /* Save the interrupt handler routine pointer and the interrupt priority*/
    pAic->AIC_SVR[irq_id] = (unsigned int) newHandler ;
    // Store the Source Mode Register*/
    pAic->AIC_SMR[irq_id] = src_type | priority  ;
    // Clear the interrupt on the interrupt controller*/
    pAic->AIC_ICCR = mask ;

	return oldHandler;
}

//----------------------------------------------------------------------------
// \fn    AT91F_AIC_EnableIt
// \brief Enable corresponding IT number
//----------------------------------------------------------------------------*/
static inline void AT91F_AIC_EnableIt (
	AT91PS_AIC pAic,      // \arg pointer to the AIC registers
	unsigned int irq_id ) // \arg interrupt number to initialize
{

    pAic->AIC_IECR = 0x1 << irq_id ;
}

//----------------------------------------------------------------------------
// \fn    AT91F_AIC_DisableIt
// \brief Disable corresponding IT number
//----------------------------------------------------------------------------*/
static inline void AT91F_AIC_DisableIt (
	AT91PS_AIC pAic,      // \arg pointer to the AIC registers
	unsigned int irq_id ) // \arg interrupt number to initialize
{
    unsigned int mask = 0x1 << irq_id;
    // Disable the interrupt on the interrupt controller*/
    pAic->AIC_IDCR = mask ;
    // Clear the interrupt on the Interrupt Controller ( if one is pending )*/
    pAic->AIC_ICCR = mask ;
}

//----------------------------------------------------------------------------
// \fn    AT91F_AIC_ClearIt
// \brief Clear corresponding IT number
//----------------------------------------------------------------------------*/
static inline void AT91F_AIC_ClearIt (
	AT91PS_AIC pAic,     // \arg pointer to the AIC registers
	unsigned int irq_id) // \arg interrupt number to initialize
{
    // Clear the interrupt on the Interrupt Controller ( if one is pending )*/
    pAic->AIC_ICCR = (0x1 << irq_id);
}

//----------------------------------------------------------------------------
// \fn    AT91F_AIC_AcknowledgeIt
// \brief Acknowledge corresponding IT number
//----------------------------------------------------------------------------*/
static inline void AT91F_AIC_AcknowledgeIt (
	AT91PS_AIC pAic)     // \arg pointer to the AIC registers
{
    pAic->AIC_EOICR = pAic->AIC_EOICR;
}

⌨️ 快捷键说明

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