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

📄 bsp.c

📁 Proteus在MCS-51%26ARM7系统中的应用百例 Proteus在MCS-51%26ARM7系统中的应用百例
💻 C
📖 第 1 页 / 共 2 页
字号:
/*
*********************************************************************************************************
*                                               Philips LPC210x
*                                  LPC210x Kick Start Card Board Support Package
*
*                                    (c) Copyright 2004, Micrium, Weston, FL
*                                              All Rights Reserved
*
*
* File : BSP.C
* By   : Jean J. Labrosse
*********************************************************************************************************
*/

#include <includes.h>

/*
*********************************************************************************************************
*                                              CONSTANTS
*********************************************************************************************************
*/

#define  BSP_UNDEF_INSTRUCTION_VECTOR_ADDR   (*(INT32U *)0x00000004L)
#define  BSP_SWI_VECTOR_ADDR                 (*(INT32U *)0x00000008L)
#define  BSP_PREFETCH_ABORT_VECTOR_ADDR      (*(INT32U *)0x0000000CL)
#define  BSP_DATA_ABORT_VECTOR_ADDR          (*(INT32U *)0x00000010L)
#define  BSP_IRQ_VECTOR_ADDR                 (*(INT32U *)0x00000018L)
#define  BSP_FIQ_VECTOR_ADDR                 (*(INT32U *)0x0000001CL)

#define  BSP_IRQ_ISR_ADDR                    (*(INT32U *)0x00000038L)
#define  BSP_FIQ_ISR_ADDR                    (*(INT32U *)0x0000003CL)

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

typedef  void (*PFNCT)(void);

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

INT32U  VIC_SpuriousInt;

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

void  VIC_Init(void);
void  VIC_Dummy(void);
void  VIC_DummyWDT(void);
void  VIC_DummyTIMER0(void);
void  VIC_DummyTIMER1(void);
void  VIC_DummyUART0(void);
void  VIC_DummyUART1(void);
void  VIC_DummyPWM0(void);
void  VIC_DummyI2C(void);
void  VIC_DummySPI(void);
void  VIC_DummyRTC(void);
void  VIC_DummyEINT0(void);
void  VIC_DummyEINT1(void);
void  VIC_DummyEINT2(void);

/*
*********************************************************************************************************
*                                         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.
*               
* Arguments   : none
*********************************************************************************************************
*/

void  BSP_Init (void)
{
    MEMMAP                            = 2;                      /* Remap 64 bytes of int. RAM to 0x00  */
    
    BSP_IRQ_VECTOR_ADDR               = 0xE59FF018;             /* LDR PC,[PC,#0x18] instruction       */
    BSP_IRQ_ISR_ADDR                  = (INT32U)OS_CPU_IRQ_ISR; /* IRQ exception vector address        */

    BSP_FIQ_VECTOR_ADDR               = 0xE59FF018;             /* LDR PC,[PC,#0x18] instruction       */
    BSP_FIQ_ISR_ADDR                  = (INT32U)OS_CPU_FIQ_ISR; /* FIQ exception vector address        */


    BSP_UNDEF_INSTRUCTION_VECTOR_ADDR = 0xEAFFFFFE;             /* Jump to itself                      */
    BSP_SWI_VECTOR_ADDR               = 0xEAFFFFFE;
    BSP_PREFETCH_ABORT_VECTOR_ADDR    = 0xEAFFFFFE;
    BSP_DATA_ABORT_VECTOR_ADDR        = 0xEAFFFFFE;
    BSP_FIQ_VECTOR_ADDR               = 0xEAFFFFFE;

    VIC_Init();                                   /* Initialize the Vectored Interrupt Controller      */

    LED_Init();
    Tmr_TickInit();
}


/*
*********************************************************************************************************
*                                         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.
*               
* Arguments   : none
*********************************************************************************************************
*/

void  LED_Init (void)
{
    PINSEL0             = 0;                      /* Use GPIO pins P0.0 to P0.15 for LEDs              */
    IODIR              |= 0x0000FFFF;             /* Set GPIO pins as outputs                          */

    LED_Off(0);                                   /* Turn OFF all the LEDs                             */

}

/*
*********************************************************************************************************
*                                             LED ON
*
* Description : This function is used to control any or all the LEDs on the board.
*               
* Arguments   : led    is the number of the LED to control
*                      0    indicates that you want ALL the LEDs to be ON
*                      1    turns ON LED1 on the board
*                      .
*                      .
*                      8    turns ON LED8 on the board
*********************************************************************************************************
*/

void  LED_On (INT8U led)
{
    switch (led) {
        case 0:
             IOSET = 0x0000FFFF;
             break;

        case 1:
             IOSET = 1 << 0;
             break;

        case 2:
             IOSET = 1 << 1;
             break;

        case 3:
             IOSET = 1 << 2;
             break;

        case 4:
             IOSET = 1 << 3;
             break;

        case 5:
             IOSET = 1 << 4;
             break;

        case 6:
             IOSET = 1 << 5;
             break;

        case 7:
             IOSET = 1 << 6;
             break;

        case 8:
             IOSET = 1 << 7;
             break;

        case 9:
             IOSET = 1 << 8;
             break;

        case 10:
             IOSET = 1 << 9;
             break;

        case 11:
             IOSET = 1 << 10;
             break;

        case 12:
             IOSET = 1 << 11;
             break;

        case 13:
             IOSET = 1 << 12;
             break;

        case 14:
             IOSET = 1 << 13;
             break;

        case 15:
             IOSET = 1 << 14;
             break;

        case 16:
             IOSET = 1 << 15;
             break;
    }
}

/*
*********************************************************************************************************
*                                             LED OFF
*
* Description : This function is used to control any or all the LEDs on the board.
*               
* Arguments   : led    is the number of the LED to turn OFF
*                      0    indicates that you want ALL the LEDs to be OFF
*                      1    turns OFF LED1 on the board
*                      .
*                      .
*                      8    turns OFF LED8 on the board
*********************************************************************************************************
*/

void  LED_Off (INT8U led)
{
    switch (led) {
        case 0:
             IOCLR = 0x0000FFFF;
             break;

        case 1:
             IOCLR = 1 << 0;
             break;

        case 2:
             IOCLR = 1 << 1;
             break;

        case 3:
             IOCLR = 1 << 2;
             break;

        case 4:
             IOCLR = 1 << 3;
             break;

        case 5:
             IOCLR = 1 << 4;
             break;

        case 6:
             IOCLR = 1 << 5;
             break;

        case 7:
             IOCLR = 1 << 6;
             break;

        case 8:

⌨️ 快捷键说明

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