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

📄 bsp.c

📁 lpc2478+ucosII
💻 C
📖 第 1 页 / 共 4 页
字号:
/*
*********************************************************************************************************
*                                     MICRIUM BOARD SUPPORT SUPPORT
*
*                          (c) Copyright 2003-2006; Micrium, Inc.; Weston, FL
*
*               All rights reserved.  Protected by international copyright laws.
*               Knowledge of the source code may NOT be used to develop a similar product.
*               Please help us continue to provide the Embedded community with the finest
*               software available.  Your honesty is greatly appreciated.
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*
*                                        BOARD SUPPORT PACKAGE
*
*                                             NXP LPC2468
*                                                on the
*                                  Embedded Artists LPC2468 OEM Board
*
* Filename      : bsp.c
* Version       : V1.00
* Programmer(s) : Brian Nagel
*********************************************************************************************************
*/

#define  BSP_GLOBALS
#include <includes.h>

/*
*********************************************************************************************************
*                                          #DEFINE CONSTANTS
*********************************************************************************************************
*/
                                                                /* ---------------------- GPIO0 Pins ---------------------- */
#define  GPIO0_CANRD1                  DEF_BIT_00               /* CAN Transceiver                                          */
#define  GPIO0_CANTD1                  DEF_BIT_01               /* CAN Transceiver                                          */
#define  GPIO0_TXD0                    DEF_BIT_02               /* UART #0: Over Serial Bridge                              */
#define  GPIO0_RXD0                    DEF_BIT_03               /* UART #0: Over Serial Bridge                              */
#define  GPIO0_CANRD2                  DEF_BIT_05               /* CAN Transceiver                                          */
#define  GPIO0_LCD_CS_SEL              DEF_BIT_06               /* LCD (Can be selected)                                    */
#define  GPIO0_CANTD2                  DEF_BIT_07               /* CAN Transceiver                                          */
#define  GPIO0_LCD_RS_SEL              DEF_BIT_07               /* LCD (Can be selected)                                    */
#define  GPIO0_LCD_WE_SEL              DEF_BIT_08               /* LCD (Can be selected)                                    */
#define  GPIO0_USBB_PORT_PWR           DEF_BIT_12               /* USB Channel B                                            */
#define  GPIO0_USBB_LED                DEF_BIT_13               /* USB Channel B                                            */
#define  GPIO0_USBB_HOST_DEV_EN        DEF_BIT_14               /* USB Channel B                                            */
#define  GPIO0_LCD_SCK                 DEF_BIT_15               /* LCD (Can be selected for serial interface)               */
#define  GPIO0_LCD_MISO                DEF_BIT_17               /* LCD (Can be selected for serial interface)               */
#define  GPIO0_LCD_MOSI                DEF_BIT_18               /* LCD (Can be selected for serial interface)               */
#define  GPIO0_PHY_PRWDN_SEL           DEF_BIT_20
#define  GPIO0_LCD_RSTOUT_SEL          DEF_BIT_21               /* LCD (Can be selected)                                    */
#define  GPIO0_MCIDAT0_SEL             DEF_BIT_22               /* SD/MMC (Because of silicon errata)                       */
#define  GPIO0_AD00                    DEF_BIT_23
#define  GPIO0_AD01                    DEF_BIT_24
#define  GPIO0_PBLED_SDA0              DEF_BIT_27               /* PCA9532                                                  */
#define  GPIO0_PBLED_SCL0              DEF_BIT_28               /* PCA9532                                                  */
#define  GPIO0_USBA_DP                 DEF_BIT_29
#define  GPIO0_USBA_DM                 DEF_BIT_30
#define  GPIO0_USBB_DP                 DEF_BIT_31

                                                                /* ---------------------- GPIO1 Pins ---------------------- */
#define  GPIO1_E_TXD0                  DEF_BIT_00
#define  GPIO1_E_TXD1                  DEF_BIT_01
#define  GPIO1_MCICLK                  DEF_BIT_02               /* SD/MMC                                                   */
#define  GPIO1_MCICMD                  DEF_BIT_03               /* SD/MMC                                                   */
#define  GPIO1_E_TX_EN                 DEF_BIT_04
#define  GPIO1_MCIPWR                  DEF_BIT_05               /* SD/MMC                                                   */
#define  GPIO1_MCIDAT0                 DEF_BIT_06               /* SD/MMC (Cannot be used due to errata)                    */
#define  GPIO1_MCIDAT1                 DEF_BIT_07               /* SD/MMC                                                   */
#define  GPIO1_E_CRS0                  DEF_BIT_08
#define  GPIO1_E_RXD0                  DEF_BIT_09
#define  GPIO1_E_RXD1                  DEF_BIT_10
#define  GPIO1_MCIDAT2                 DEF_BIT_11               /* SD/MMC                                                   */
#define  GPIO1_MCIDAT3                 DEF_BIT_12               /* SD/MMC                                                   */
#define  GPIO1_E_RX_ER                 DEF_BIT_14
#define  GPIO1_E_RX_CLK                DEF_BIT_15
#define  GPIO1_E_MDC                   DEF_BIT_16
#define  GPIO1_E_MDIO                  DEF_BIT_17
#define  GPIO1_USBA_LED                DEF_BIT_18               /* USB Channel A (OTG)                                      */
#define  GPIO1_USBA_SDA                DEF_BIT_27
#define  GPIO1_USBA_SCL                DEF_BIT_28
#define  GPIO1_USBA_INT                DEF_BIT_29
#define  GPIO1_USBB_PWR_VBUS           DEF_BIT_30               /* USB Channel B                                            */
#define  GPIO1_USBB_OVERCRNT           DEF_BIT_31               /* USB Channel B                                            */

                                                                /* ---------------------- GPIO2 Pins ---------------------- */
#define  GPIO2_ETM              ((CPU_INT32U)(0x000000FF))
#define  GPIO2_EINT0                   DEF_BIT_10
#define  GPIO2_PHY_INT_SEL             DEF_BIT_11               /* PHY Interrupt output                                     */
#define  GPIO2_NAND_BUSY_SEL           DEF_BIT_12
#define  GPIO2_CS2                     DEF_BIT_14               /* DBUS_EN                                                  */
#define  GPIO2_RAS                     DEF_BIT_16
#define  GPIO2_CAS                     DEF_BIT_17
#define  GPIO2_CLKOUT0                 DEF_BIT_18
#define  GPIO2_CLKOUT1                 DEF_BIT_19
#define  GPIO2_DYCS0                   DEF_BIT_20
#define  GPIO2_DYCS1                   DEF_BIT_21               /* DBUS_EN                                                  */
#define  GPIO2_CKE0                    DEF_BIT_24
#define  GPIO2_CKE1                    DEF_BIT_25
#define  GPIO2_DQM0                    DEF_BIT_28
#define  GPIO2_DQM1                    DEF_BIT_29

                                                                /* ---------------------- GPIO4 Pins ---------------------- */
#define  GPIO3_LCD_D            ((CPU_INT32U)(0x0000FFFF))      /* LCD Data Bus                                             */
#define  GPIO3_TXD1                    DEF_BIT_16               /* UART #1: RS232 Full Modem or WLAN Add-On Module          */
#define  GPIO3_RXD1                    DEF_BIT_17               /* UART #1: RS232 Full Modem or WLAN Add-On Module          */
#define  GPIO3_CTS1                    DEF_BIT_18               /* UART #1: RS232 Full Modem or WLAN Add-On Module          */
#define  GPIO3_DCD1                    DEF_BIT_19               /* UART #1: RS232 Full Modem or WLAN Add-On Module          */
#define  GPIO3_DSR1                    DEF_BIT_20               /* UART #1: RS232 Full Modem or WLAN Add-On Module          */
#define  GPIO3_DTR1                    DEF_BIT_21               /* UART #1: RS232 Full Modem or WLAN Add-On Module          */
#define  GPIO3_RI1                     DEF_BIT_22               /* UART #1: RS232 Full Modem or WLAN Add-On Module          */
#define  GPIO3_LCD_LIGHT               DEF_BIT_28               /* LCD Backlight                                            */
#define  GPIO3_RTS1                    DEF_BIT_30               /* UART #1: RS232 Full Modem or WLAN Add-On Module          */


                                                                /* ---------------------- GPIO4 Pins ---------------------- */
#define  GPIO4_LCD_A            ((CPU_INT32U)(0x00FFFFFF))      /* LCD address bus                                          */
#define  GPIO4_LCD_OE                  DEF_BIT_24               /* LCD RD_E Input                                           */
#define  GPIO4_LCD_WE                  DEF_BIT_25               /* LCD WR_RW Input                                          */
#define  GPIO4_BLS0                    DEF_BIT_26
#define  GPIO4_BLS1                    DEF_BIT_27
#define  GPIO4_CS0                     DEF_BIT_30
#define  GPIO4_CS1                     DEF_BIT_31

/*
*********************************************************************************************************
*                                               DATA TYPES
*********************************************************************************************************
*/

typedef  void (*BSP_FNCT_PTR)(void);                            /* Pointer to ISR handler function                          */

/*
*********************************************************************************************************
*                                              VARIABLES
*********************************************************************************************************
*/

        CPU_INT32U  VIC_SpuriousInt;

/*
*********************************************************************************************************
*                                              PROTOTYPES
*********************************************************************************************************
*/

static  void  PLL_Init          (void);
static  void  MAM_Init          (void);
static  void  GPIO_Init         (void);
static  void  VIC_Init          (void);

static  void  DCC_Init          (void);

static  void  Tmr_TickInit      (void);

static  void  VIC_Dummy         (void);                         /* Prototypes for dummy interrupt handlers                  */
static  void  VIC_DummyWDT      (void);
static  void  VIC_DummySW       (void);
static  void  VIC_DummyDEBUGRX  (void);
static  void  VIC_DummyDEBUGTX  (void);
static  void  VIC_DummyTIMER0   (void);
static  void  VIC_DummyTIMER1   (void);
static  void  VIC_DummyUART0    (void);
static  void  VIC_DummyUART1    (void);
static  void  VIC_DummyPWM01    (void);
static  void  VIC_DummyI2C0     (void);
static  void  VIC_DummySPI      (void);
static  void  VIC_DummySSP1     (void);
static  void  VIC_DummyPLL      (void);
static  void  VIC_DummyRTC      (void);
static  void  VIC_DummyEINT0    (void);
static  void  VIC_DummyEINT1    (void);
static  void  VIC_DummyEINT2    (void);
static  void  VIC_DummyEINT3    (void);
static  void  VIC_DummyAD0      (void);
static  void  VIC_DummyI2C1     (void);
static  void  VIC_DummyBOD      (void);
static  void  VIC_DummyETHERNET (void);
static  void  VIC_DummyUSB      (void);
static  void  VIC_DummyCAN01    (void);
static  void  VIC_DummyMMC      (void);
static  void  VIC_DummyGP_DMA   (void);
static  void  VIC_DummyTIMER2   (void);
static  void  VIC_DummyTIMER3   (void);
static  void  VIC_DummyUART2    (void);
static  void  VIC_DummyUART3    (void);
static  void  VIC_DummyI2C2     (void);
static  void  VIC_DummyI2S      (void);

/*
******************************************************************************************************************************
******************************************************************************************************************************
**                                         Global Functions
******************************************************************************************************************************
******************************************************************************************************************************
*/

/*
*********************************************************************************************************
*                                         BSP INITIALIZATION
*
* Description : This function should be called by your application code before you make use of any of the
*               functions found in this module.
*
* Arguements  : None
*
* Returns     : None
*********************************************************************************************************
*/

void  BSP_Init (void)
{
//    PLL_Init();                                                 /* Initialize the PLL                                       */
//    MAM_Init();                                                 /* Initialize the Memory Acceleration Module                */
//    GPIO_Init();                                                /* Initialize the board's I/Os                              */
    VIC_Init();                                                 /* Initialize the Vectored Interrupt Controller             */

    Tmr_TickInit();                                             /* Initialize the uC/OS-II tick interrupt                   */
}

/*
*********************************************************************************************************
*                                      Get the CPU Clock Frequency
*
* Description : This function reads CPU registers to determine the CPU clock frequency
*
* Arguements  : None
*
* Returns     : The CPU Core clock in Hz
*
* Notes       : None
*********************************************************************************************************
*/

CPU_INT32U  BSP_CPU_ClkFreq (void)
{
    CPU_INT32U  msel;
    CPU_INT32U  nsel;
    CPU_INT32U  fin;
    CPU_INT32U  pll_clk_feq;                                    /* When the PLL is enabled, this is Fcco                    */
    CPU_INT32U  clk_div;
    CPU_INT32U  clk_freq;


    switch (CLKSRCSEL & 0x03) {                                 /* Determine the current clock source                       */
        case 0:
             fin        =  IRC_OSC_FRQ;
             break;

        case 1:
             fin        =  MAIN_OSC_FRQ;
             break;

        case 2:
             fin        =  RTC_OSC_FRQ;
             break;

        default:
             fin        =  IRC_OSC_FRQ;
             break;
    }

    if ((PLLSTAT & (1 << 25)) > 0) {                                /* If the PLL is currently enabled and connected        */
        msel        = (CPU_INT32U)(PLLSTAT & 0x3FFF) + 1;           /* Obtain the PLL multiplier                            */
        nsel        = (CPU_INT32U)((PLLSTAT >>   16) & 0x0F) + 1;   /* Obtain the PLL divider                               */
        pll_clk_feq = (2 * msel * fin / nsel);                      /* Compute the PLL output frequency                     */
    } else {
        pll_clk_feq = (fin);                                        /* The PLL is bypassed                                  */
    }

    clk_div         = (CPU_INT08U)(CCLKCFG & 0x0F) + 1;             /* Obtain the CPU core clock divider                    */
    clk_freq        = (CPU_INT32U)(pll_clk_feq / clk_div);          /* Compute the ARM Core clock frequency                 */

    return (clk_freq);
}

/*
*********************************************************************************************************
*                                      Get a Peripheral Clock Frequency
*
* Description : This function reads CPU registers to determine the the clock frequency for the specified
*               peripheral
*
* Arguements  : An ID, one of PCLK_??? defined in bsp.c
*
* Returns     : The peripheral's clock in Hz
*********************************************************************************************************
*/


CPU_INT32U  BSP_CPU_PclkFreq (CPU_INT08U  pclk)
{
    CPU_INT32U  clk_freq;
    CPU_INT32U  selection;


    clk_freq    = BSP_CPU_ClkFreq();

    switch (pclk) {
        case PCLK_WDT:
        case PCLK_TIMER0:
        case PCLK_TIMER1:
        case PCLK_UART0:
        case PCLK_UART1:
        case PCLK_PWM0:
        case PCLK_PWM1:
        case PCLK_I2C0:
        case PCLK_SPI:
        case PCLK_RTC:
        case PCLK_SSP1:
        case PCLK_DAC:
        case PCLK_ADC:
        case PCLK_CAN1:
        case PCLK_CAN2:
        case PCLK_ACF:
             selection = ((PCLKSEL0 >> (pclk * 2)) & 0x03);
             if (selection == 0) {
                 return (clk_freq / 4);
             } else if (selection == 1) {
                 return (clk_freq);
             } else if (selection == 2) {
                 return (clk_freq / 2);
             } else {
                 return (clk_freq / 8);
             }

        case PCLK_BAT_RAM:
        case PCLK_GPIO:

⌨️ 快捷键说明

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