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 + -
显示快捷键?