📄 bsp.c
字号:
IO1CLR = GPIO1_LEDS;
break;
case 1:
IO1CLR = GPIO1_LED1;
break;
case 2:
IO1CLR = GPIO1_LED2;
break;
case 3:
IO1CLR = GPIO1_LED3;
break;
case 4:
IO1CLR = GPIO1_LED4;
break;
case 5:
IO1CLR = GPIO1_LED5;
break;
case 6:
IO1CLR = GPIO1_LED6;
break;
case 7:
IO1CLR = GPIO1_LED7;
break;
case 8:
IO1CLR = GPIO1_LED8;
break;
default:
break;
}
}
/*
*********************************************************************************************************
* LED_Off()
*
* Description : Turn OFF any or all the LEDs on the board.
*
* Argument(s) : led The ID of the LED to control:
*
* 0 turn OFF all LEDs on the board
* 1 turn OFF LCD backlight
*
* Return(s) : none.
*********************************************************************************************************
*/
void LED_Off (CPU_INT08U led)
{
switch (led)
{
case 0:
IO1SET = GPIO1_LEDS;
break;
case 1:
IO1SET = GPIO1_LED1;
break;
case 2:
IO1SET = GPIO1_LED2;
break;
case 3:
IO1SET = GPIO1_LED3;
break;
case 4:
IO1SET = GPIO1_LED4;
break;
case 5:
IO1SET = GPIO1_LED5;
break;
case 6:
IO1SET = GPIO1_LED6;
break;
case 7:
IO1SET = GPIO1_LED7;
break;
case 8:
IO1SET = GPIO1_LED8;
break;
default:
break;
}
}
static void BSP_PLL_Init (void)
{
CPU_INT16U loop_ctr;
/* Configure PLL0, which determines the CPU clock */
PLLCFG = 0x00000003; /* Use PLL values of M = 4 and P = 2 */
PLLCON |= 0x00000001; /* Set the PLL Enable bit */
/*添加关中断语句*/
PLLFEED = 0xAA; /* Write to the PLL Feed register */
PLLFEED = 0x55;
/*添加开中断语句*/
loop_ctr = 10000; /* Wait for the PLL to lock into the new frequency */
while (((PLLSTAT & DEF_BIT_10) == 0) && (loop_ctr > 0))
{
loop_ctr--;
}
PLLCON |= 0x00000002; /* Connect the PLL */
/*添加关中断语句*/
PLLFEED = 0xAA; /* Write to the PLL Feed register */
PLLFEED = 0x55;
/*添加开中断语句*/
VPBDIV = 0x00000002; /* Set the VPB frequency to one-half of the CPU clock */
}
/*
*********************************************************************************************************
* BSP_IO_Init()
*
* Description : This function initializes the GPIO pins. All the I/O pins are initialized in this function
* so you don't have to look at multiple places for I/O initialization.
*
* Argument(s) : none.
*
* Note(s) : (1) PINSEL0 and PINSEL1 assignments for the LPC2138:
*
* FUNCTION WHEN PINSEL0 bits are:
* ------------------------------------------------------
* BIT # PINSEL0 Bits 00 01 10 11
* ----- ------------ --------- --------- --------- ---------
* 0 1:0 GPIO P0.0 UART0 TxD PWM1 Reserved
* 1 3:2 GPIO P0.1 UART0 RxD PWM3 EINT0
* 2 5:4 GPIO P0.2 SCL (I2C) Capture 0.0 Reserved
* 3 7:6 GPIO P0.3 SDA (I2C) Match 0.0 EINT1
* 4 9:8 GPIO P0.4 SCK (I2C) Capture 0.1 AD 0.6
* 5 11:10 GPIO P0.5 MISO (SPI) Match 0.1 AD 0.7
* 6 13:12 GPIO P0.6 MOSI (SPI) Capture 0.2 AD 1.0
* 7 15:14 GPIO P0.7 SSEL (SPI) PWM2 EINT2
*
* 8 17:16 GPIO P0.8 UART1 TxD PWM4 AD 1.1
* 9 19:18 GPIO P0.9 UART1 RxD PWM6 EINT3
* 10 21:20 GPIO P0.10 UART1 RTS Capture 1.0 AD 1.2
* 11 23:22 GPIO P0.11 UART1 CTS Capture 1.1 SCL1 (IIC #1)
* 12 25:24 GPIO P0.12 UART1 DSR Match 1.0 AD 1.3
* 13 27:26 GPIO P0.13 UART1 DTR Match 1.1 AD 1.4
* 14 29:28 GPIO P0.14 UART1 CD EINT1 SDA1 (IIC #1)
* 15 31:30 GPIO P0.15 UART1 RI EINT2 AD 1.5
*
* FUNCTION WHEN PINSEL1 bits are:
* ------------------------------------------------------
* BIT # PINSEL1 Bits 00 01 10 11
* ----- ------------ --------- --------- --------- ---------
* 0 1:0 GPIO P0.16 EINT0 Match 0.2 Capture 0.2
* 1 3:2 GPIO P0.17 Capture 1.2 SCLK (SSP) Match 1.2
* 2 5:4 GPIO P0.18 Capture 1.3 MISO (SSP) Match 1.3
* 3 7:6 GPIO P0.19 Match 1.3 MOSI (SSP) Capture 1.2
* 4 9:8 GPIO P0.20 Match 1.3 SSEL (SSP) EINT3
* 5 11:10 GPIO P0.21 PWM5 AD 1.6 Capture 1.3
* 6 13:12 GPIO P0.22 AD 1.7 Capture 0.0 Match 0.0
* 7 15:14 GPIO P0.23 Reserved Reserved Reserved
*
* 8 17:16 GPIO P0.24 Reserved Reserved Reserved
* 9 19:18 GPIO P0.25 AD 0.4 AOUT Reserved
* 10 21:20 GPIO P0.26 AD 0.5 Reserved Reserved
* 11 23:22 GPIO P0.27 AD 0.0 Capture 0.1 Match 0.1
* 12 25:24 GPIO P0.28 AD 0.1 Capture 0.2 Match 0.2
* 13 27:26 GPIO P0.29 AD 0.2 Capture 0.3 Match 0.3
* 14 29:28 GPIO P0.30 AD 0.3 EINT3 Capture 0.0
* 15 31:30 GPIO P0.31 Reserved Reserved Reserved
*
*
* (2) The LM4229 LCD is connected as follows on the LPC2138 Evaluation board:
*
* P0.31 R/W- Read (H) / Write (L)
* P0.26 E Enable
* P0.23 RS Register Select
* P0.21 LED LED Backlight
*
* P0.13 D7 LCD Data 7 \
* P0.12 D6 LCD Data 6 | 4-bit interface mode
* P0.11 D5 LCD Data 5 |
* P0.10 D4 LCD Data 4 /
*********************************************************************************************************
*/
static void BSP_IO_Init (void)
{
PINSEL0 = 0X00000000; /* The P0.00-15 will be used as GPIOS */
PINSEL2 &= ~0x00000008; /* The p1.25-16 will be used as GPIOs */
IO0DIR = 0x7FFF; /* The p0.00-15 will be used as output */
IO1DIR = GPIO1_LEDS; /* LEDs(P1.18-25) output */
}
/*
*********************************************************************************************************
* Vectored Interrupt Controller
*********************************************************************************************************
*/
static void VIC_Init (void)
{
VICIntEnClr = 0xFFFFFFFF; /* Disable ALL interrupts */
VICProtection = 0; /* Setup interrupt controller */
VICVectAddr1 = (CPU_INT32U)VIC_DummyWDT; /* Set the vector address */
VICVectAddr2 = (CPU_INT32U)VIC_DummyTIMER0;
VICVectAddr3 = (CPU_INT32U)VIC_DummyTIMER1;
VICVectAddr4 = (CPU_INT32U)VIC_DummyUART0;
VICVectAddr5 = (CPU_INT32U)VIC_DummyUART1;
VICVectAddr6 = (CPU_INT32U)VIC_DummyPWM0;
VICVectAddr7 = (CPU_INT32U)VIC_DummyI2C;
VICVectAddr8 = (CPU_INT32U)VIC_DummySPI;
VICVectAddr9 = (CPU_INT32U)VIC_DummyRTC;
VICVectAddr10 = (CPU_INT32U)VIC_DummyEINT0;
VICVectAddr11 = (CPU_INT32U)VIC_DummyEINT1;
VICVectAddr12 = (CPU_INT32U)VIC_DummyEINT2;
}
static void VIC_Dummy (void)
{
while (1) {
(void)VIC_SpuriousInt;
}
}
static void VIC_DummyWDT (void)
{
VIC_SpuriousInt = VIC_WDT;
VIC_Dummy();
}
static void VIC_DummyTIMER0 (void)
{
VIC_SpuriousInt = VIC_TIMER0;
VIC_Dummy();
}
static void VIC_DummyTIMER1 (void)
{
VIC_SpuriousInt = VIC_TIMER1;
VIC_Dummy();
}
static void VIC_DummyUART0 (void)
{
VIC_SpuriousInt = VIC_UART0;
VIC_Dummy();
}
static void VIC_DummyUART1 (void)
{
VIC_SpuriousInt = VIC_UART1;
VIC_Dummy();
}
static void VIC_DummyPWM0 (void)
{
VIC_SpuriousInt = VIC_UART1;
VIC_Dummy();
}
static void VIC_DummyI2C (void)
{
VIC_SpuriousInt = VIC_I2C;
VIC_Dummy();
}
static void VIC_DummySPI (void)
{
VIC_SpuriousInt = VIC_SPI;
VIC_Dummy();
}
static void VIC_DummyRTC (void)
{
VIC_SpuriousInt = VIC_RTC;
VIC_Dummy();
}
static void VIC_DummyEINT0 (void)
{
VIC_SpuriousInt = VIC_EINT0;
VIC_Dummy();
}
static void VIC_DummyEINT1 (void)
{
VIC_SpuriousInt = VIC_EINT1;
VIC_Dummy();
}
static void VIC_DummyEINT2 (void)
{
VIC_SpuriousInt = VIC_EINT2;
VIC_Dummy();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -