📄 lpc210x.h
字号:
/**************************************************************************
* *
* PROJECT : ARM port for uC/OS-II *
* *
* MODULE : LPC210X.h *
* *
* AUTHOR : Michael Anburaj *
* URL : http://geocities.com/michaelanburaj/ *
* EMAIL: michaelanburaj@hotmail.com *
* *
* SPONSORS : Thanks to Martin Li (mli00@yahoo.com) & Don Williams *
* (donw@clearblu.net) for sponsoring hardware. *
* *
* PROCESSOR : LPC210x (32 bit ARM7TDMI-S RISC core from Philips) *
* *
* TOOL-CHAIN : SDT 2.51, ADS 1.2 or GCC *
* *
* DESCRIPTION : *
* LPC210x processor register definition header file. *
* *
**************************************************************************/
#ifndef __LPC210X_H__
#define __LPC210X_H__
#include "frmwrk.h"
#ifdef __cplusplus
extern "C" {
#endif
/* ********************************************************************* */
/* Module configuration */
/* ********************************************************************* */
/* Interface macro & data definition */
// Memory Accelerator Module (MAM)
#define rMAMCR (*(volatile unsigned char *)(SFR_BADDR + 0x1fc000)) //MAM Control Register
#define rMAMTIM (*(volatile unsigned char *)(SFR_BADDR + 0x1fc004)) //MAM Timing control
#define rMEMMAP (*(volatile unsigned char *)(SFR_BADDR + 0x1fc040)) //Memory mapping control
// Phase Locked Loop (PLL)
#define rPLLCON (*(volatile unsigned char *)(SFR_BADDR + 0x1fc080)) //PLL control
#define rPLLCFG (*(volatile unsigned char *)(SFR_BADDR + 0x1fc084)) //PLL configuration
#define rPLLSTAT (*(volatile unsigned short *)(SFR_BADDR + 0x1fc088)) //PLL status
#define rPLLFEED (*(volatile unsigned char *)(SFR_BADDR + 0x1fc08c)) //PLL feed
// rPLLCON Register
#define BIT_PLLCON_PLLE (0x1<<0) //PLL Enable
#define BIT_PLLCON_PLLC (0x1<<1) //PLL Connect
// rPLLSTAT Register
#define BIT_PLLSTAT_LOCK (1 << 10) //PLL Lock Status Bit
// Power Control
#define rPCON (*(volatile unsigned char *)(SFR_BADDR + 0x1fc0c0)) //Power control
#define rPCONP (*(volatile unsigned *)(SFR_BADDR + 0x1fc0c4)) //Power control for peripherals
// VPB Divider
#define rVPBDIV (*(volatile unsigned char *)(SFR_BADDR + 0x1fc100)) //VPB divider control
// External Interrupts
#define rEXTINT (*(volatile unsigned char *)(SFR_BADDR + 0x1fc140)) //External interrupt flag
#define rEXTWAKE (*(volatile unsigned char *)(SFR_BADDR + 0x1fc144)) //External interrupt wakeup
// VIC
#define VIC_BADDR 0xfffff000
#define rVICIRQStatus (*(volatile unsigned *)(VIC_BADDR + 0x000)) //IRQ Status
#define rVICFIQStatus (*(volatile unsigned *)(VIC_BADDR + 0x004)) //FIQ Status
#define rVICRawIntr (*(volatile unsigned *)(VIC_BADDR + 0x008)) //Raw Interrupt Status
#define rVICIntSelect (*(volatile unsigned *)(VIC_BADDR + 0x00c)) //Interrupt Select
#define rVICIntEnable (*(volatile unsigned *)(VIC_BADDR + 0x010)) //Interrupt Enable
#define rVICIntEnClr (*(volatile unsigned *)(VIC_BADDR + 0x014)) //Interrupt Enable Clear
#define rVICSoftInt (*(volatile unsigned *)(VIC_BADDR + 0x018)) //Software Interrupt
#define rVICSoftIntClear (*(volatile unsigned *)(VIC_BADDR + 0x01c)) //Software Interrupt Clear
#define rVICProtection (*(volatile unsigned *)(VIC_BADDR + 0x020)) //Protection enable
#define rVICVectAddr (*(volatile unsigned *)(VIC_BADDR + 0x030)) //Vector Address
#define rVICDefVectAddr (*(volatile unsigned *)(VIC_BADDR + 0x034)) //Default Vector Address
#define rVICVectAddr0 (*(volatile unsigned *)(VIC_BADDR + 0x100)) //Vector address 0 register
#define rVICVectAddr1 (*(volatile unsigned *)(VIC_BADDR + 0x104)) //Vector address 1 register
#define rVICVectAddr2 (*(volatile unsigned *)(VIC_BADDR + 0x108)) //Vector address 2 register
#define rVICVectAddr3 (*(volatile unsigned *)(VIC_BADDR + 0x10c)) //Vector address 3 register
#define rVICVectAddr4 (*(volatile unsigned *)(VIC_BADDR + 0x110)) //Vector address 4 register
#define rVICVectAddr5 (*(volatile unsigned *)(VIC_BADDR + 0x114)) //Vector address 5 register
#define rVICVectAddr6 (*(volatile unsigned *)(VIC_BADDR + 0x118)) //Vector address 6 register
#define rVICVectAddr7 (*(volatile unsigned *)(VIC_BADDR + 0x11c)) //Vector address 7 register
#define rVICVectAddr8 (*(volatile unsigned *)(VIC_BADDR + 0x120)) //Vector address 8 register
#define rVICVectAddr9 (*(volatile unsigned *)(VIC_BADDR + 0x124)) //Vector address 9 register
#define rVICVectAddr10 (*(volatile unsigned *)(VIC_BADDR + 0x128)) //Vector address 10 register
#define rVICVectAddr11 (*(volatile unsigned *)(VIC_BADDR + 0x12c)) //Vector address 11 register
#define rVICVectAddr12 (*(volatile unsigned *)(VIC_BADDR + 0x130)) //Vector address 12 register
#define rVICVectAddr13 (*(volatile unsigned *)(VIC_BADDR + 0x134)) //Vector address 13 register
#define rVICVectAddr14 (*(volatile unsigned *)(VIC_BADDR + 0x138)) //Vector address 14 register
#define rVICVectAddr15 (*(volatile unsigned *)(VIC_BADDR + 0x13c)) //Vector address 15 register
#define rVICVectCntl0 (*(volatile unsigned *)(VIC_BADDR + 0x200)) //Vector control 0 register
#define rVICVectCntl1 (*(volatile unsigned *)(VIC_BADDR + 0x204)) //Vector control 1 register
#define rVICVectCntl2 (*(volatile unsigned *)(VIC_BADDR + 0x208)) //Vector control 2 register
#define rVICVectCntl3 (*(volatile unsigned *)(VIC_BADDR + 0x20c)) //Vector control 3 register
#define rVICVectCntl4 (*(volatile unsigned *)(VIC_BADDR + 0x210)) //Vector control 4 register
#define rVICVectCntl5 (*(volatile unsigned *)(VIC_BADDR + 0x214)) //Vector control 5 register
#define rVICVectCntl6 (*(volatile unsigned *)(VIC_BADDR + 0x218)) //Vector control 6 register
#define rVICVectCntl7 (*(volatile unsigned *)(VIC_BADDR + 0x21c)) //Vector control 7 register
#define rVICVectCntl8 (*(volatile unsigned *)(VIC_BADDR + 0x220)) //Vector control 8 register
#define rVICVectCntl9 (*(volatile unsigned *)(VIC_BADDR + 0x224)) //Vector control 9 register
#define rVICVectCntl10 (*(volatile unsigned *)(VIC_BADDR + 0x228)) //Vector control 10 register
#define rVICVectCntl11 (*(volatile unsigned *)(VIC_BADDR + 0x22c)) //Vector control 11 register
#define rVICVectCntl12 (*(volatile unsigned *)(VIC_BADDR + 0x230)) //Vector control 12 register
#define rVICVectCntl13 (*(volatile unsigned *)(VIC_BADDR + 0x234)) //Vector control 13 register
#define rVICVectCntl14 (*(volatile unsigned *)(VIC_BADDR + 0x238)) //Vector control 14 register
#define rVICVectCntl15 (*(volatile unsigned *)(VIC_BADDR + 0x23c)) //Vector control 15 register
// GPIO
#define rIOPIN (*(volatile unsigned *)(SFR_BADDR + 0x28000)) //GPIO pin value
#define rIOSET (*(volatile unsigned *)(SFR_BADDR + 0x28004)) //Output value SET
#define rIODIR (*(volatile unsigned *)(SFR_BADDR + 0x28008)) //Direction control
#define rIOCLR (*(volatile unsigned *)(SFR_BADDR + 0x2800c)) //Output value CLEAR
#define rPINSEL0 (*(volatile unsigned *)(SFR_BADDR + 0x2c000)) //Pin function select 0
#define rPINSEL1 (*(volatile unsigned *)(SFR_BADDR + 0x2c004)) //Pin function select 1
// PINSEL0 values
#define VAL_PINSEL0_U0 (0x5<<0) // PINSEL0 Value for UART0
#define MSK_PINSEL0_U0 (0xf<<0) // PINSEL0 Mask for UART0
#define VAL_PINSEL0_U1 (0x5<<16) // PINSEL0 Value for UART1
#define MSK_PINSEL0_U1 (0xf<<16) // PINSEL0 Mask for UART1
//UART0
#define rU0RBR (*(volatile unsigned char *)(SFR_BADDR + 0x0c000)) //RO - Receiver Buffer
#define rU0THR (*(volatile unsigned char *)(SFR_BADDR + 0x0c000)) //WO - Transmit Holding
#define rU0IER (*(volatile unsigned char *)(SFR_BADDR + 0x0c004)) //RW - Interrupt Enable
#define rU0IIR (*(volatile unsigned char *)(SFR_BADDR + 0x0c008)) //RO - Interrupt ID
#define rU0FCR (*(volatile unsigned char *)(SFR_BADDR + 0x0c008)) //WO - FIFO Control
#define rU0LCR (*(volatile unsigned char *)(SFR_BADDR + 0x0c00c)) //RW - Line Control
#define rU0LSR (*(volatile unsigned char *)(SFR_BADDR + 0x0c014)) //RO - Line Status
#define rU0SCR (*(volatile unsigned char *)(SFR_BADDR + 0x0c01c)) //RW - Scratch Pad
// DLAB = 1
#define rU0DLL (*(volatile unsigned char *)(SFR_BADDR + 0x0c000)) //RW - Divisor Latch LSB
#define rU0DLM (*(volatile unsigned char *)(SFR_BADDR + 0x0c004)) //RW - Divisor Latch MSB
//UART1
#define rU1RBR (*(volatile unsigned char *)(SFR_BADDR + 0x10000)) //RO - Receiver Buffer
#define rU1THR (*(volatile unsigned char *)(SFR_BADDR + 0x10000)) //WO - Transmit Holding
#define rU1IER (*(volatile unsigned char *)(SFR_BADDR + 0x10004)) //RW - Interrupt Enable
#define rU1IIR (*(volatile unsigned char *)(SFR_BADDR + 0x10008)) //RO - Interrupt ID
#define rU1FCR (*(volatile unsigned char *)(SFR_BADDR + 0x10008)) //WO - FIFO Control
#define rU1LCR (*(volatile unsigned char *)(SFR_BADDR + 0x1000c)) //RW - Line Control
#define rU1LSR (*(volatile unsigned char *)(SFR_BADDR + 0x10014)) //RO - Line Status
#define rU1SCR (*(volatile unsigned char *)(SFR_BADDR + 0x1001c)) //RW - Scratch Pad
// DLAB = 1
#define rU1DLL (*(volatile unsigned char *)(SFR_BADDR + 0x10000)) //RW - Divisor Latch LSB
#define rU1DLM (*(volatile unsigned char *)(SFR_BADDR + 0x10004)) //RW - Divisor Latch MSB
// I2C
#define rI2CONSET (*(volatile unsigned char *)(SFR_BADDR + 0x1c000)) //I2C Control Set
#define rI2STAT (*(volatile unsigned char *)(SFR_BADDR + 0x1c004)) //I2C Status
#define rI2DAT (*(volatile unsigned char *)(SFR_BADDR + 0x1c008)) //I2C Data
#define rI2ADR (*(volatile unsigned char *)(SFR_BADDR + 0x1c00c)) //I2C Slave Address
#define rI2SCLH (*(volatile unsigned short *)(SFR_BADDR + 0x1c010)) //SCL Duty Cycle Register High Half Word
#define rI2SCLL (*(volatile unsigned short *)(SFR_BADDR + 0x1c014)) //SCL Duty Cycle Register Low Half Word
#define rI2CONCLR (*(volatile unsigned char *)(SFR_BADDR + 0x1c018)) //I2C Control Clear
// SPI
#define rSPCR (*(volatile unsigned char *)(SFR_BADDR + 0x20000)) //SPI Control
#define rSPSR (*(volatile unsigned char *)(SFR_BADDR + 0x20004)) //SPI Status
#define rSPDR (*(volatile unsigned char *)(SFR_BADDR + 0x20008)) //SPI Data
#define rSPCCR (*(volatile unsigned char *)(SFR_BADDR + 0x2000c)) //SPI Clock Counter
#define rSPINT (*(volatile unsigned char *)(SFR_BADDR + 0x2001c)) //SPI Interrupt Flag
// Time 0
#define rT0IR (*(volatile unsigned *)(SFR_BADDR + 0x04000)) //Interrupt Register
#define rT0TCR (*(volatile unsigned *)(SFR_BADDR + 0x04004)) //Timer Control
#define rT0TC (*(volatile unsigned *)(SFR_BADDR + 0x04008)) //Timer Counter
#define rT0PR (*(volatile unsigned *)(SFR_BADDR + 0x0400c)) //Prescale Register
#define rT0PC (*(volatile unsigned *)(SFR_BADDR + 0x04010)) //Prescale Counter
#define rT0MCR (*(volatile unsigned *)(SFR_BADDR + 0x04014)) //Match Control
#define rT0MR0 (*(volatile unsigned *)(SFR_BADDR + 0x04018)) //Match Register 0
#define rT0MR1 (*(volatile unsigned *)(SFR_BADDR + 0x0401c)) //Match Register 1
#define rT0MR2 (*(volatile unsigned *)(SFR_BADDR + 0x04020)) //Match Register 2
#define rT0MR3 (*(volatile unsigned *)(SFR_BADDR + 0x04024)) //Match Register 3
#define rT0CCR (*(volatile unsigned *)(SFR_BADDR + 0x04028)) //Capture Control
#define rT0CR0 (*(volatile unsigned *)(SFR_BADDR + 0x0402c)) //Capture Register 0
#define rT0CR1 (*(volatile unsigned *)(SFR_BADDR + 0x04030)) //Capture Register 1
#define rT0CR2 (*(volatile unsigned *)(SFR_BADDR + 0x04034)) //Capture Register 2
#define rT0CR3 (*(volatile unsigned *)(SFR_BADDR + 0x04038)) //Capture Register 3
#define rT0EMR (*(volatile unsigned *)(SFR_BADDR + 0x0403c)) //External Match
// Time 1
#define rT1IR (*(volatile unsigned *)(SFR_BADDR + 0x08000)) //Interrupt Register
#define rT1TCR (*(volatile unsigned *)(SFR_BADDR + 0x08004)) //Timer Control
#define rT1TC (*(volatile unsigned *)(SFR_BADDR + 0x08008)) //Timer Counter
#define rT1PR (*(volatile unsigned *)(SFR_BADDR + 0x0800c)) //Prescale Register
#define rT1PC (*(volatile unsigned *)(SFR_BADDR + 0x08010)) //Prescale Counter
#define rT1MCR (*(volatile unsigned *)(SFR_BADDR + 0x08014)) //Match Control
#define rT1MR0 (*(volatile unsigned *)(SFR_BADDR + 0x08018)) //Match Register 0
#define rT1MR1 (*(volatile unsigned *)(SFR_BADDR + 0x0801c)) //Match Register 1
#define rT1MR2 (*(volatile unsigned *)(SFR_BADDR + 0x08020)) //Match Register 2
#define rT1MR3 (*(volatile unsigned *)(SFR_BADDR + 0x08024)) //Match Register 3
#define rT1CCR (*(volatile unsigned *)(SFR_BADDR + 0x08028)) //Capture Control
#define rT1CR0 (*(volatile unsigned *)(SFR_BADDR + 0x0802c)) //Capture Register 0
#define rT1CR1 (*(volatile unsigned *)(SFR_BADDR + 0x08030)) //Capture Register 1
#define rT1CR2 (*(volatile unsigned *)(SFR_BADDR + 0x08034)) //Capture Register 2
#define rT1CR3 (*(volatile unsigned *)(SFR_BADDR + 0x08038)) //Capture Register 3
#define rT1EMR (*(volatile unsigned *)(SFR_BADDR + 0x0803c)) //External Match
// Timer Interrupt Register Bit Definitions
#define BIT_IR_MR0 (1 << 0)
#define BIT_IR_MR1 (1 << 1)
#define BIT_IR_MR2 (1 << 2)
#define BIT_IR_MR3 (1 << 3)
#define BIT_IR_CR0 (1 << 4)
#define BIT_IR_CR1 (1 << 5)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -