board.h

来自「最新版IAR FOR ARM(EWARM)5.11中的代码例子」· C头文件 代码 · 共 405 行 · 第 1/2 页

H
405
字号
#elif defined(AT91SAM9261EK)
    #define SWITCH1        AT91C_PIO_PA27 // BP3
    #define SWITCH2        AT91C_PIO_PA26 // BP4
    #define SWITCH3        AT91C_PIO_PA25 // BP5
    #define SWITCH4        AT91C_PIO_PA24 // BP6
    #define SWITCH_PIO     AT91C_BASE_PIOA
    #define SWITCH_PIO_ID  AT91C_ID_PIOA

#elif defined(AT91SAM9263EK)
// PC4
// PC4

#elif defined(MISTRALREVB)
    #define SWITCH1        AT91C_PIO_PA21
    #define SWITCH2        AT91C_PIO_PA23
    #define SWITCH3        AT91C_PIO_PA24
    #define SWITCH4        AT91C_PIO_PA22
    #define SWITCH_PIO     AT91C_BASE_PIOA
    #define SWITCH_PIO_ID  AT91C_ID_PIOA

#else
    #error core_board.h switch
#endif


// Bus power
// If USB_BUS_POWERED if defined, device is powered through VBUS
// VBUS PIO
#if !defined(USB_BUS_POWERED)
    #if defined(AT91SAM7SEK)
        #define AT91C_VBUS              AT91C_PIO_PA13
        #define AT91C_PIO_VBUS          AT91C_BASE_PIOA
        #define AT91C_ID_VBUS           AT91C_ID_PIOA

    #elif defined(AT91SAM7SEEK)
        #define AT91C_VBUS              AT91C_PIO_PC19
        #define AT91C_PIO_VBUS          AT91C_BASE_PIOC
        #define AT91C_ID_VBUS           AT91C_ID_PIOC

    #elif defined(AT91SAM7XEK) || defined(AT91SAM7A3EK)
        #define USB_BUS_POWERED

    #elif defined(AT91RM9200EK)
        #define AT91C_VBUS              AT91C_PIO_PD4
        #define AT91C_PIO_VBUS          AT91C_BASE_PIOD
        #define AT91C_ID_VBUS           AT91C_ID_PIOD

    #elif defined(AT91SAM9260EK)
        #define AT91C_VBUS              AT91C_PIO_PC5
        #define AT91C_PIO_VBUS          AT91C_BASE_PIOC
        #define AT91C_ID_VBUS           AT91C_ID_PIOC

    #elif defined(AT91SAM9261EK)
        #define AT91C_VBUS              AT91C_PIO_PB29
        #define AT91C_PIO_VBUS          AT91C_BASE_PIOB
        #define AT91C_ID_VBUS           AT91C_ID_PIOB

    #elif defined(AT91SAM9263EK)
        #define AT91C_VBUS              AT91C_PIO_PA25
        #define AT91C_PIO_VBUS          AT91C_BASE_PIOA
        #define AT91C_ID_VBUS           AT91C_ID_PIOA

    #else
        #error core_board.h BUS POWERED
    #endif
#endif // !defined(USB_BUS_POWERED)

// Pull-ups
#if defined(AT91SAM7SEK)
    #define AT91C_PULLUP            AT91C_PIO_PA16
    #define AT91C_PIO_PULLUP        AT91C_BASE_PIOA
    #define AT91C_ID_PULLUP         AT91C_ID_PIOA

#elif defined(AT91SAM7A3EK)
    #define AT91C_PULLUP            AT91C_PIO_PB1
    #define AT91C_PIO_PULLUP        AT91C_BASE_PIOB
    #define AT91C_ID_PULLUP         AT91C_ID_PIOB

#elif defined(AT91RM9200)
    #define AT91C_PULLUP            AT91C_PIO_PD5
    #define AT91C_PIO_PULLUP        AT91C_BASE_PIOD
    #define AT91C_ID_PULLUP         AT91C_ID_PIOD

#endif

// Internal flash wait states
#if defined(AT91SAM7SEK) || defined(AT91SAM7XEK) || defined(AT91SAM7A3EK)
    #define AT91C_FLASH_WAIT_STATES AT91C_MC_FWS_1FWS

#elif defined(AT91SAM7SEEK)
    #define AT91C_FLASH_WAIT_STATES AT91C_MC_FWS_2FWS
#endif

//------------------------------------------------------------------------------
//      Internal functions
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//! \brief  Sets the correct number of wait states in the flash controller
//------------------------------------------------------------------------------
extern inline void BRD_SetFlashWaitStates()
{
#if defined(AT91C_BASE_FLASH)
    SET(AT91C_BASE_FLASH->FLA_FMR, AT91C_FLASH_WAIT_STATES);
#endif
}

//------------------------------------------------------------------------------
//! \brief  Lights on specified LED.
//! \param  dLed Pio ID of LED to light on
//------------------------------------------------------------------------------
extern inline void AT91F_LED_On(unsigned int dLed)
{
    AT91F_PIO_ClearOutput(LED_PIO, dLed);
}

//------------------------------------------------------------------------------
//! \brief  Lights off specified LED.
//! \param  dLed Pio ID of LED to light off
//------------------------------------------------------------------------------
extern inline void AT91F_LED_Off(unsigned int dLed)
{
    AT91F_PIO_SetOutput(LED_PIO, dLed);
}

//------------------------------------------------------------------------------
//! \brief  Initializes the PIO for LED control
//------------------------------------------------------------------------------
extern inline void AT91F_LED_Init()
{
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << LED_PIO_ID);
    AT91F_PIO_CfgOutput(LED_PIO, LED_POWER);
    AT91F_PIO_CfgOutput(LED_PIO, LED_USB);
    AT91F_PIO_CfgOutput(LED_PIO, LED_MEM);
}

//------------------------------------------------------------------------------
//! \brief  Toggle the status of specified LED
//! \param  dLed Pio ID of LED
//------------------------------------------------------------------------------
extern inline void AT91F_LED_Toggle(unsigned int dLed)
{
    if (ISSET(AT91F_PIO_GetInput(LED_PIO), dLed)) {

        AT91F_PIO_ClearOutput(LED_PIO, dLed);
    }
    else {

        AT91F_PIO_SetOutput(LED_PIO, dLed);
    }
}

//------------------------------------------------------------------------------
//! \brief  Initializes the PIO for BUTTON control
//------------------------------------------------------------------------------
extern inline void AT91F_BUTTON_Init()
{
    AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << SWITCH_PIO_ID);
    AT91F_PIO_CfgInput(SWITCH_PIO, SWITCH1);
    AT91F_PIO_CfgInput(SWITCH_PIO, SWITCH2);
    AT91F_PIO_CfgInput(SWITCH_PIO, SWITCH3);
    AT91F_PIO_CfgInput(SWITCH_PIO, SWITCH4);
#if defined(AT91SAM7SEK) || defined(AT91SAM9261EK) || defined(AT91SAM9260EK)
    AT91F_PIO_CfgPullup(SWITCH_PIO, SWITCH1 | SWITCH2 | SWITCH3 | SWITCH4);
#elif defined(AT91SAM7XEK) || defined(AT91SAM7A3EK)
    AT91F_PIO_CfgInput(SWITCH_PIO, SWITCH5);
    AT91F_PIO_CfgPullup(SWITCH_PIO, SWITCH1 | SWITCH2 | SWITCH3 | SWITCH4 | SWITCH5);
#elif defined(AT91SAM7SEEK)
    AT91F_PIO_CfgInput(SWITCH_PIO, SWITCH5 | SWITCH6);
    AT91F_PIO_CfgPullup(SWITCH_PIO, SWITCH1 | SWITCH2 | SWITCH3 | SWITCH4 | SWITCH5 |\
                        SWITCH6);
#endif
}

//------------------------------------------------------------------------------
//      Macros
//------------------------------------------------------------------------------
#if defined(NOLEDS)
    #define LED_INIT()
    #define LED_ON(led)
    #define LED_OFF(led)
    #define LED_TOGGLE(led)
#else
    #define LED_INIT()      AT91F_LED_Init()
    #define LED_ON(led)     AT91F_LED_On(led)
    #define LED_OFF(led)    AT91F_LED_Off(led)
    #define LED_TOGGLE(led) AT91F_LED_Toggle(led)
#endif

//------------------------------------------------------------------------------
//      Prototypes
//------------------------------------------------------------------------------

extern void BRD_ConfigureVBus(void *pInterface);
extern bool BRD_IsVBusConnected(void *pInterface);
extern void BRD_ConfigurePullUp(void *pInterface);
extern void BRD_ConnectPullUp(void *pInterface);
extern void BRD_DisconnectPullUp(void *pInterface);
extern bool BRD_IsPullUpConnected(void *pInterface);

#endif // _BOARD_H

⌨️ 快捷键说明

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