📄 bsp.c
字号:
/*
*********************************************************************************************************
* uC/OS-II
* The Real-Time Kernel
*
* (c) Copyright 2004-2008; Micrium, Inc.; Weston, FL
*
* All rights reserved. Protected by international copyright laws.
*
* uC/OS-II is provided in source form for FREE evaluation, for educational
* use or peaceful research. If you plan on using uC/OS-II in a commercial
* product you need to contact Micrium to properly license its use in your
* product. We provide ALL the source code for your convenience and to
* help you experience uC/OS-II. The fact that the source code is provided
* does NOT mean that you can use it without paying a licensing fee.
*
* 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 (BSP)
* NXP LPC2478
* on the
* IAR LPC2478-SK Kickstart Kit
*
* Filename :bsp.c
* Version :V1.00
* Programmer(s) :FT
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* INCLUDE FILES
*********************************************************************************************************
*/
#define BSP_MODULE
#include <includes.h>
/*
*********************************************************************************************************
* LOCAL DEFINES
*********************************************************************************************************
*/
/* -------------------- GPIO PIN DEFINITION ----------------- */
#define BSP_GPIO1_USB_UP_LED2 DEF_BIT_13 /* P1.13 USB_UP_LED2 */
#define BSP_GPIO1_USB_UP_LED1 DEF_BIT_18 /* P1.18 USB_IP_LED1 */
#define BSP_GPIO1_LED_GRP BSP_GPIO1_USB_UP_LED2 | \
BSP_GPIO1_USB_UP_LED1
#define BSP_GPIO2_PB1 DEF_BIT_19 /* P2.19 BUT 1 */
#define BSP_GPIO2_PB2 DEF_BIT_21 /* P2.21 BUT 2 */
#define BSP_GPIO2_PB_GRP BSP_GPIO2_PB1 | \
BSP_GPIO2_PB2
/* -------------------- SDRAM PARAMETERS --------------------- */
#define BSP_SDRAM_BASE_ADDR 0xA0000000 /* SDRAM start address = 0xA0000000 */
#define BSP_SDRAM_REFRESH 7813
#define BSP_SDRAM_TRP 20
#define BSP_SDRAM_TRAS 45
#define BSP_SDRAM_TAPR 1
#define BSP_SDRAM_TDAL 3
#define BSP_SDRAM_TWR 3
#define BSP_SDRAM_TRC 65
#define BSP_SDRAM_TRFC 66
#define BSP_SDRAM_TXSR 67
#define BSP_SDRAM_TRRD 15
#define BSP_SDRAM_TMRD 3
/* --------- EMC DYNAMIC CTRL REGISTER BIT DEFINES --------- */
#define BSP_EMC_DYNAMIC_CTRL_INIT_NORMAL (0 << 7)
#define BSP_EMC_DYNAMIC_CTRL_INIT_MODE (1 << 7)
#define BSP_EMC_DYNAMIC_CTRL_INIT_PALL (2 << 7)
#define BSP_EMC_DYNAMIC_CTRL_INIT_NOP (3 << 7)
#define BSP_EMC_DYNAMIC_CTRL_INIT_MASK (3 << 7)
/* --------------- PCONP REGISTER BITS DEFINES ------------- */
#define BSP_PCONP_ADC_EN DEF_BIT_12
#define BSP_PCONP_UART0_EN DEF_BIT_03
/* ------------- PINSEL0 REGISTER BITS DEFINES ------------- */
#define BSP_PINSEL0_TXD0 DEF_BIT_04
#define BSP_PINSEL0_RXD0 DEF_BIT_06
#define BSP_PINSEL0_U0_CLR DEF_BIT_05 | DEF_BIT_04 | \
DEF_BIT_07 | DEF_BIT_06
#define BSP_PINSEL0_ADC7_VAL DEF_BIT_26 | DEF_BIT_27
/* --------------------- UART REGISTERS DEFINES ------------ */
/* ------- UART LINE CONTROL (LCR) REGISTER BIT DEFINES ---- */
#define BSP_LCR_WLS_5 0 /* 5 bit character length */
#define BSP_LCR_WLS_6 1 /* 6 bit character length */
#define BSP_LCR_WLS_7 2 /* 7 bit character length */
#define BSP_LCR_WLS_8 3 /* 8 bit character length */
#define BSP_LCR_SBS_1 0 /* 1 stop bit */
#define BSP_LCR_SBS_2 DEF_BIT_02 /* 2 stop bit */
#define BSP_LCR_PE DEF_BIT_03 /* Parity enable */
#define BSP_LCR_PS_ODD 0 /* Parity select: ODD */
#define BSP_LCR_PS_EVEN DEF_BIT_04 /* Parity select: EVEN */
#define BSP_LCR_PS_STICK_1 DEF_BIT_05 /* Parity select: '1' stick */
#define BSP_LCR_PS_STICK_0 DEF_BIT_04 | \
DEF_BIT_05
#define BSP_LCR_DLAB DEF_BIT_07 /* Divisor Latch Acces bit enable */
/* ----- UART FIFO CONTROL REGISTER (LCR) BIT DEFINES ------ */
#define BSP_FCR_FIFO_EN DEF_BIT_00 /* FIFO enable */
#define BSP_FCR_RX_RST DEF_BIT_01 /* FIFO Rx reset */
#define BSP_FCR_TX_RST DEF_BIT_02 /* FIFO Tx reset */
/* ---- UART LINE STATUS (LSR) REGISTER BITS DEFINES ------ */
#define BSP_LSR_RDR DEF_BIT_00 /* Receiver Data Ready Flag */
#define BSP_LSR_THRE DEF_BIT_05 /* Transmiter Holding Register Empty Flag */
/* ----------- ADC CONTROL REGISTER (ADCR) BIT DEFINES ----- */
#define BSP_ADCR_BURST_EN DEF_BIT_16 /* ADC Conversion burst mode enable */
#define BSP_ADCR_CH2_EN DEF_BIT_02 /* ADC Channel 0 Enable. Touch Screen Y1 */
#define BSP_ADCR_CH1_EN DEF_BIT_01 /* ADC Channel 1 Enable. Touch Screen X1 */
#define BSP_ADCR_CH7_EN DEF_BIT_07 /* ADC Channel 7 Enable. Potentiometer */
#define BSP_ADCR_CH_EN_GRP BSP_ADCR_CH2_EN | \
BSP_ADCR_CH1_EN | \
BSP_ADCR_CH7_EN
#define BSP_ADCR_CLKS_11 (0 << 17) /* 11 clock ... 10bits */
#define BSP_ADCR_CLKS_10 (1 << 17) /* 10 clock ... 9bits */
#define BSP_ADCR_CLKS_09 (2 << 17) /* 9 clock ... 8bits */
#define BSP_ADCR_CLKS_08 (3 << 17) /* 8 clock ... 7bits */
#define BSP_ADCR_CLKS_07 (4 << 17) /* 7 clock ... 6bits */
#define BSP_ADCR_CLKS_06 (5 << 17) /* 6 clock ... 5bits */
#define BSP_ADCR_CLKS_05 (6 << 17) /* 5 clock ... 4bits */
#define BSP_ADCR_CLKS_04 (7 << 17) /* 4 clock ... 3bits */
#define BSP_ADCR_PDN_EN DEF_BIT_21 /* ADC enable bit */
#define BSP_ADC_MAX_FREQ 450000 /* ADC Max operational frequency */
/*
*********************************************************************************************************
* LOCAL CONSTANTS
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* LOCAL DATA TYPES
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* LOCAL TABLES
*********************************************************************************************************
*/
static CPU_INT32U const BSP_CPU_FreqTbl[5] = { /* System frequency */
72000000L,
57000000L,
48000000L,
36000000L,
24000000L,
};
static CPU_FP32 const BSP_SDRAM_PerTbl[5] = { /* SDRAM Period based on the System Frequency */
13.8, /* SDRAM 13.8 period for 72Mhz */
17.4, /* SDRAM 17.8 period for 57Mhz */
20.8, /* SDRAM 20.8 period for 48Mhz */
27.8, /* SDRAM 27.8 period for 36Mhz */
41.7, /* SDRAM 41.7 period for 24Mhz */
};
/*
*********************************************************************************************************
* LOCAL GLOBAL VARIABLES
*********************************************************************************************************
*/
CPU_INT32U BSP_VIC_SpuriousInt;
/*
*********************************************************************************************************
* LOCAL FUNCTION PROTOTYPES
*********************************************************************************************************
*/
static void BSP_ADC_Init (void);
static void BSP_LED_Init (void);
static void BSP_MAM_Init (void);
static void BSP_PB_Init (void);
static void BSP_PLL_Init (void);
static void BSP_RTC_Init (void);
static void BSP_Tmr_TickInit (void);
static void BSP_VIC_Init (void);
static void BSP_VIC_Dummy (void); /* Prototypes for dummy interrupt handlers. */
static void BSP_VIC_DummyWDT (void);
static void BSP_VIC_DummySW (void);
static void BSP_VIC_DummyDEBUGRX (void);
static void BSP_VIC_DummyDEBUGTX (void);
static void BSP_VIC_DummyTIMER0 (void);
static void BSP_VIC_DummyTIMER1 (void);
static void BSP_VIC_DummyUART0 (void);
static void BSP_VIC_DummyUART1 (void);
static void BSP_VIC_DummyPWM01 (void);
static void BSP_VIC_DummyI2C0 (void);
static void BSP_VIC_DummySPI (void);
static void BSP_VIC_DummySSP1 (void);
static void BSP_VIC_DummyPLL (void);
static void BSP_VIC_DummyRTC (void);
static void BSP_VIC_DummyEINT0 (void);
static void BSP_VIC_DummyEINT1 (void);
static void BSP_VIC_DummyEINT2 (void);
static void BSP_VIC_DummyEINT3 (void);
static void BSP_VIC_DummyAD0 (void);
static void BSP_VIC_DummyI2C1 (void);
static void BSP_VIC_DummyBOD (void);
static void BSP_VIC_DummyETHERNET(void);
static void BSP_VIC_DummyUSB (void);
static void BSP_VIC_DummyCAN01 (void);
static void BSP_VIC_DummyMMC (void);
static void BSP_VIC_DummyGP_DMA (void);
static void BSP_VIC_DummyTIMER2 (void);
static void BSP_VIC_DummyTIMER3 (void);
static void BSP_VIC_DummyUART2 (void);
static void BSP_VIC_DummyUART3 (void);
static void BSP_VIC_DummyI2C2 (void);
static void BSP_VIC_DummyI2S (void);
/*
*********************************************************************************************************
* LOCAL CONFIGURATION ERRORS
*********************************************************************************************************
*/
/*
*********************************************************************************************************
*********************************************************************************************************
** GLOBAL FUNCTIONS
*********************************************************************************************************
*********************************************************************************************************
*/
/*
*********************************************************************************************************
* BSP_Init()
*
* Description : Initialize the Board Support Package (BSP).
*
* Argument(s) : none.
*
* Return(s) : none.
*
* Caller(s) : Application.
*
* Note(s) : (1) This function SHOULD be called before any other BSP function is called.
*********************************************************************************************************
*/
void BSP_Init (void)
{
BSP_PLL_Init(); /* Initialize the PLL. */
BSP_RTC_Init(); /* Initialize the Real Time Clock. */
BSP_MAM_Init(); /* Initialize the Memory Acceleration Module. */
BSP_LED_Init(); /* Initialize LEDs I/O */
BSP_PB_Init(); /* Initialize PB I/O */
BSP_ADC_Init(); /* Initialize the board's ADCs. */
BSP_VIC_Init(); /* Initialize the Vectored Interrupt Controller. */
BSP_Tmr_TickInit(); /* Initialize uC/OS-II's tick source. */
}
/*
*********************************************************************************************************
* BSP_CPU_ClkFreq()
*
* Description : Get the CPU clock frequency.
*
* Argument(s) : none.
*
* Return(s) : The CPU clock frequency, in Hz.
*
* Caller(S) : Application.
*
* Note(s) : none.
*********************************************************************************************************
*/
CPU_INT32U BSP_CPU_ClkFreq (void)
{
CPU_INT32U clk_src;
CPU_INT32U clk_div;
CPU_INT32U clk_freq;
CPU_INT32U pll_stat; /* PLL status */
CPU_INT32U pll_clk_feq; /* When the PLL is enabled, this is Fcco. */
CPU_INT32U pll_msel; /* PLL multipler and pre-dividier values */
CPU_INT32U pll_nsel;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -