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

📄 lpc213xdef.h

📁 ARM的串口源码
💻 H
📖 第 1 页 / 共 3 页
字号:
  #define P0_17_SCK1   __2//SPI1的串行时钟。SPI时钟从主机输出,从机输入
  #define P0_17_MAT1_2 __3//**定时器1的匹配输出通道2
#define P0_17_PINSEL   2 * P0_1
#define P0_18_GPIO     __0//通用数字输入输出管脚
  #define P0_18_CAP1_3 __1//**定时器1的捕获输入通道3
  #define P0_18_MISO1  __2//SPI1主机输入从机输出端。从机到主机的数据传输
  #define P0_18_MAT1_3 __3//**定时器1的匹配输出通道3
#define P0_18_PINSEL   2 * P0_2

#define P0_19_GPIO     __0//通用数字输入输出管脚
  #define P0_19_MAT1_2 __1//**定时器1的匹配输出通道2
  #define P0_19_MOSI1  __2//SPI1主机输出从机输入端。主机到从机的数据传输
  #define P0_19_CAP1_2 __3//**定时器1的捕获输入通道2
#define P0_19_PINSEL   2 * P0_3

#define P0_20_GPIO     __0//通用数字输入输出管脚
  #define P0_20_MAT1_3 __1//**定时器1的匹配输出通道3
  #define P0_20_SSEL1  __2//SPI1从机选择。选择SPI接口用作从机
  #define P0_20_EINT3  __3//***外部中断3输入
#define P0_20_PINSEL   2 * P0_4

#define P0_21_GPIO     __0//通用数字输入输出管脚
  #define P0_21_PWM5   __1//脉宽调制器输出5
  #define P0_21_AD1_6  __2//A/D转换器1输入6。该模拟输入总是连接到相应的管脚(仅用于 LPC2138)
  #define P0_21_CAP1_3 __3//**定时器1的捕获输入通道3
#define P0_21_PINSEL   2 * P0_5

#define P0_22_GPIO     __0//通用数字输入输出管脚
  #define P0_22_AD1_7  __1//A/D转换器1输入7。该模拟输入总是连接到相应的管脚(仅用于 LPC2138)
  #define P0_22_CAP0_0 __2//***定时器0的捕获输入通道0
  #define P0_22_MAT0_0 __3//**定时器0的匹配输出通道0
#define P0_22_PINSEL   2 * P0_6

#define P0_23_GPIO     __0//通用数字输入输出管脚
#define P0_23_PINSEL   2 * P0_7
/*-----------------------------------------------------------------------
#define P0_24_GPIO     0//P0.24 脚未用
#define P0_24_PINSEL 2 * P0_8
------------------------------------------------------------------------*/

#define P0_25_GPIO     __0//通用数字输入输出管脚
  #define P0_25_AD0_4  __1//A/D转换器0输入4。该模拟输入总是连接到相应的管脚.
  #define P0_25_DAC    __2//D/A 转换器输出(仅用于 LPC2138)
#define P0_25_PINSEL   2 * P0_9

#define P0_26_GPIO     __0//通用数字输入输出管脚
  #define P0_26_AD0_5  __1//A/D转换器0输入5。该模拟输入总是连接到相应的管脚
#define P0_26_PINSEL   2 * P0_10

#define P0_27_GPIO     __0//通用数字输入输出管脚
  #define P0_27_AD0_0  __1//A/D转换器0输入0。该模拟输入总是连接到相应的管脚
  #define P0_27_CAP0_1 __2//**定时器0的捕获输入通道1
  #define P0_27_MAT0_1 __3//**定时器0的捕获输入通道1
#define P0_27_PINSEL   2 * P0_11

#define P0_28_GPIO     __0//通用数字输入输出管脚
  #define P0_28_AD0_1  __1//A/D转换器0输入1。该模拟输入总是连接到相应的管脚
  #define P0_28_CAP0_2 __2//***定时器0的捕获输入通道2
  #define P0_28_MAT0_2 __3//**定时器0的匹配输出通道2
#define P0_28_PINSEL   2 * P0_12

#define P0_29_GPIO     __0//通用数字输入输出管脚
  #define P0_29_AD0_2  __1//A/D转换器0输入2。该模拟输入总是连接到相应的管脚
  #define P0_29_CAP0_3 __2//定时器0的捕获输入通道3
  #define P0_29_MAT0_3 __3//定时器0的匹配输出通道3
#define P0_29_PINSEL   2 * P0_13

#define P0_30_GPIO     __0//通用数字输入输出管脚
  #define P0_30_AD0_3  __1//A/D转换器0输入3。该模拟输入总是连接到相应的管脚
  #define P0_30_EINT3  __2//***外部中断3输入
  #define P0_30_CAP0_0 __3//***定时器0的捕获输入通道0
#define P0_30_PINSEL   2 * P0_14

#define P0_31_GPO      __0//通用数字输出管脚(注意:此管脚仅为输出)
#define P0_31_PINSEL   2 * P0_15
 

  
/*------------------------------------------------------------------------
        结构指针在ARM之应用(愚人节版)
------------------------------------------------------------------------*/

typedef struct _LPCS_VIC {
  LPC_REG IRQStatus;//IRQ 状态寄存器
  LPC_REG FIQStatus;//FIQ 状态请求
  LPC_REG RawIntr;//所有中断的状态寄存器
  LPC_REG IntSelect;//中断选择寄存器
  LPC_REG IntEnable;//中断使能寄存器
  LPC_REG IntEnClr;//中断使能清零寄存器
  LPC_REG SoftInt;//软件中断寄存器
  LPC_REG SoftIntClr;//软件中断清零寄存器
  LPC_REG Protection;//保护使能寄存器
  LPC_REG Reserved1[3]; //保留3个空位
  LPC_REG VectAddr;//向量地址寄存器
  LPC_REG DefVectAddr;//默认向量地址寄存器
  LPC_REG Reserved2[2]; //保留2个空位
  LPC_REG Reserved3[48];//保留48个空位
  LPC_REG VectAddrs[16];//向量地址寄存器,VICVectAddr0~VICVectAddr15
  LPC_REG Reserved4[48];//保留48个空位
  LPC_REG VectCntls[16];//向量控制寄存器,VICVectCntl0~VICVectCntl15
}LPCS_VIC, *LPCPS_VIC;
#define LPC_BASE_VIC  ((LPCPS_VIC)  0xFFFFF000)//定义硬件结构指针(硬件地址)
const LPCPS_VIC VIC = LPC_BASE_VIC;//定义全局结构指针变量
typedef struct _LPCS_PINSEL {
  LPC_REG PIN_SEL0;//管脚功能选择寄存器0
  LPC_REG PIN_SEL1;//管脚功能选择寄存器1
  LPC_REG Reserved[4]; //保留4个空位
  LPC_REG PIN_SEL2;//管脚功能选择寄存器2
}LPCS_PINSEL, *LPCPS_PINSEL;
#define LPC_BASE_PINSEL  ((LPCPS_PINSEL)  0xE002C000)//定义硬件结构指针(硬件地址)
const LPCPS_PINSEL PINSEL = LPC_BASE_PINSEL;//定义全局结构指针变量PINSEL
typedef struct _LPCS_MAM {
  LPC_REG MAM_CR;//存储器加速器模块控制寄存器
  LPC_REG MAM_TIM;//存储器加速器定时控制
}LPCS_MAM, *LPCPS_MAM;
#define LPC_BASE_MAM  ((LPCPS_MAM)  0xE01FC000)//定义硬件结构指针(硬件地址)
const LPCPS_MAM MAM = LPC_BASE_MAM;//定义全局结构指针变量MAM
typedef struct _LPCS_PLL {//锁相环
  LPC_REG PLL_CON;//PLL 控制寄存器
  LPC_REG PLL_CFG;//PLL 配置寄存器
  LPC_REG PLL_STAT;//PLL 状态寄存器
  LPC_REG PLL_FEED;//PLL 愦送寄存器
}LPCS_PLL, *LPCPS_PLL;
#define LPC_BASE_PLL  ((LPCPS_PLL)  0xE01FC080)//定义硬件结构指针(硬件地址)
const LPCPS_PLL PLL = LPC_BASE_PLL;//定义全局结构指针变量PLL

typedef struct _LPCS_GPIO {//通用I/O口
  LPC_REG IOPIN;//GPIO管脚值寄存器
  LPC_REG IOSET;//GPIO输出置位寄存器
  LPC_REG IODIR;//GPIO方向寄存器
  LPC_REG IOCLR;//GPIO输出清零寄存器
}LPCS_GPIO, *LPCPS_GPIO;

#define LPC_BASE_GPIO0  ((LPCPS_GPIO)  0xE0028000)//定义硬件结构指针(硬件地址)
#define LPC_BASE_GPIO1  ((LPCPS_GPIO)  0xE0028010)//定义硬件结构指针(硬件地址)
const LPCPS_GPIO P0 = LPC_BASE_GPIO0;//定义全局结构指针变量P0
const LPCPS_GPIO P1 = LPC_BASE_GPIO1;//定义全局结构指针变量P1
/*--------------------------------------------------------------------
应用示例
  P0->IODIR |= (1 << P0_8);//设置P0.8为输出
  P0->IOSET  = (1 << P0_8);//P0.8输出高电平
  P0->IOCLR  = (1 << P0_8);//P0.8输出低电平
  P0->IOPIN ^= (1 << P0_8);//P0.8输出电平翻转
  P1->IODIR |= (1 << P1_8);//设置P1.8为输出
  P1->IOSET  = (1 << P1_8);//P1.8输出高电平
  P1->IOCLR  = (1 << P1_8);//P1.8输出低电平
  P1->IOPIN ^= (1 << P1_8);//P1.8输出电平翻转
----------------------------------------------------------------------*/
 
typedef struct _LPCS_UART {
  union {//地址冲突处理
    LPC_REG _RBR;//接收缓冲
    LPC_REG _THR;//发送保持
    LPC_REG _DLL;//除数锁存低位
  }RBR_THR_DLL;//收发数据
  union {//地址冲突处理
    LPC_REG _IER;//中断使能
    LPC_REG _DLM;//除数锁存高位
  }IER_DLM;
  union {//地址冲突处理
    LPC_REG _IIR;//中断ID
    LPC_REG _FCR;//FIFO控制
  }IIR_FCR;//(8)
  LPC_REG LCR;//线控制
  LPC_REG MCR;//Modem控制(只有UART1)
  LPC_REG LSR;//线状态)
  LPC_REG MSR;//Modem状态(只有UART1)
  LPC_REG SCR;//高速缓存
  LPC_REG Reserved[4]; //保留4个空位
  LPC_REG TER;//发送使能
}LPCS_UART, *LPCPS_UART;
#define RBR RBR_THR_DLL._RBR
#define THR RBR_THR_DLL._THR
#define DLL RBR_THR_DLL._DLL
#define IER IER_DLM._IER 
#define DLM IER_DLM._DLM 
#define IIR IIR_FCR._IIR
#define FCR IIR_FCR._FCR

#define LPC_BASE_UART0  ((LPCPS_UART)  0xE000C000)//定义硬件结构指针(硬件地址)
const LPCPS_UART U0 = LPC_BASE_UART0;//定义全局结构指针变量U0
#define LPC_BASE_UART1  ((LPCPS_UART)  0xE0010000)//定义硬件结构指针(硬件地址)
const LPCPS_UART U1 = LPC_BASE_UART1;//定义全局结构指针变量U1

typedef struct _LPCS_TIMER {//定时器
  LPC_REG TIMER_IR;//中断寄存器
  LPC_REG TIMER_TCR;//定时器控制寄存器
  LPC_REG TIMER_TC;//定时器计数器
  LPC_REG TIMER_PR;//预分频寄存器
  LPC_REG TIMER_PC;//预分频计数器
  LPC_REG TIMER_MCR;
  LPC_REG TIMER_MR0;
  LPC_REG TIMER_MR1;
  LPC_REG TIMER_MR2;
  LPC_REG TIMER_MR3;
  LPC_REG TIMER_CCR;
  LPC_REG TIMER_CR0;
  LPC_REG TIMER_CR1;
  LPC_REG TIMER_CR2;
  LPC_REG TIMER_CR3;
  LPC_REG TIMER_EMR;
  LPC_REG Reserved[12]; //保留12个空位
  LPC_REG TIMER_CTCR;
}LPCS_TIMER, *LPCPS_TIMER;

#define LPC_BASE_TIMER0  ((LPCPS_TIMER)  0xE0004000)//定义硬件结构指针(硬件地址)
#define LPC_BASE_TIMER1  ((LPCPS_TIMER)  0xE0008000)//定义硬件结构指针(硬件地址)
const LPCPS_TIMER T0 = LPC_BASE_TIMER0;//定义全局结构指针变量T0
const LPCPS_TIMER T1 = LPC_BASE_TIMER1;//定义全局结构指针变量T1

typedef struct _LPCS_PWM {
  LPC_REG PWM_IR; //中断寄存器
  LPC_REG PWM_TCR;//PWM定时器控制寄存器
  LPC_REG PWM_TC; //PWM定时器计数器
  LPC_REG PWM_PR; //PWM预分频寄存器
  LPC_REG PWM_PC; //PWM预分频计数器寄存器
  LPC_REG PWM_MCR;//PWM匹配控制寄存器
  LPC_REG PWM_MR0;//PWM匹配寄存器0
  LPC_REG PWM_MR1;//PWM匹配寄存器1
  LPC_REG PWM_MR2;//PWM匹配寄存器2
  LPC_REG PWM_MR3;//PWM匹配寄存器3
  LPC_REG Reserved[6]; //保留6个空位
  LPC_REG PWM_MR4;//PWM匹配寄存器4
  LPC_REG PWM_MR5;//PWM匹配寄存器5
  LPC_REG PWM_MR6;//PWM匹配寄存器6
  LPC_REG PWM_PCR;//PWM控制寄存器
  LPC_REG PWM_LER;//PWM锁存使能寄存器
}LPCS_PWM, *LPCPS_PWM;
#define LPC_BASE_PWM  ((LPCPS_PWM)  0xE0014000)//定义硬件结构指针(硬件地址)
const LPCPS_PWM PWM = LPC_BASE_PWM;//定义全局结构指针变量PWM
typedef struct _LPCS_I2C {
  LPC_REG I2C_CONSET; //I2C控制置位寄存器
  LPC_REG I2C_STAT;   //I2C状态寄存器
  LPC_REG I2C_DAT;   //I2C数据寄存器
  LPC_REG I2C_ADR;   //I2C从地址寄存器
  LPC_REG I2C_SCLH;   //SCH占空比寄存器高半字
  LPC_REG I2C_SCLL;   //SCL占空比寄存器低半字
  LPC_REG I2C_CONCLR; //I2C控制清零寄存器
}LPCS_I2C, *LPCPS_I2C;//

#define LPC_BASE_I2C0  ((LPCPS_I2C)  0xE001C000)//定义硬件结构指针(硬件地址)
#define LPC_BASE_I2C1  ((LPCPS_I2C)  0xE005C000)//定义硬件结构指针(硬件地址)
const LPCPS_I2C I2C0 = LPC_BASE_I2C0;//定义全局结构指针变量I2C0
const LPCPS_I2C I2C1 = LPC_BASE_I2C1;//定义全局结构指针变量I2C1
typedef struct _LPCS_SPI {
  LPC_REG SPI_SPCR;
  LPC_REG SPI_SPSR;
  LPC_REG SPI_SPDR;
  LPC_REG SPI_SPCCR;
  LPC_REG Reserved[4]; //保留4个空位
  LPC_REG SPI_SPINT;
}LPCS_SPI, *LPCPS_SPI;
#define LPC_BASE_SPI  ((LPCPS_SPI)  0xE0020000)//定义硬件结构指针(硬件地址)
const LPCPS_SPI SPI = LPC_BASE_SPI;//定义全局结构指针变量SPI
typedef struct _LPCS_SSP {
  LPC_REG SSP_CR0;
  LPC_REG SSP_CR1;
  LPC_REG SSP_DR;
  LPC_REG SSP_SR;   //SSP状态寄存器
  LPC_REG SSP_CPSR;
  LPC_REG SSP_IMSC;
  LPC_REG SSP_RIS;
  LPC_REG SSP_MIS;
  LPC_REG SSP_ICR;
}LPCS_SSP, *LPCPS_SSP;
#define LPC_BASE_SSP  ((LPCPS_SSP)  0xE0068000)//定义硬件结构指针(硬件地址)
const LPCPS_SSP SSP = LPC_BASE_SSP;//定义全局结构指针变量SSP
typedef struct _LPCS_RTC {
  LPC_REG RTC_ILR;//中断位置寄存器
  LPC_REG RTC_CTC;//时钟节拍计数器
  LPC_REG RTC_CCR;//时钟控制寄存器
  LPC_REG RTC_CIIR;//计数器递增中断寄存器
  LPC_REG RTC_AMR;//报警屏蔽寄存器
  LPC_REG RTC_CTIME0;//完整时间寄存器0
  LPC_REG RTC_CTIME1;//完整时间寄存器1
  LPC_REG RTC_CTIME2;//完整时间寄存器2
  LPC_REG RTC_SEC;//秒寄存器
  LPC_REG RTC_MIN;//分寄存器
  LPC_REG RTC_HOUR;//小时寄存器
  LPC_REG RTC_DOM;//日期(月)寄存器
  LPC_REG RTC_DOW;//星期寄存器
  LPC_REG RTC_DOY;//日期(年)寄存器
  LPC_REG RTC_MONTH;//月寄存器
  LPC_REG RTC_YEAR;//年寄存器
  LPC_REG Reserved[8]; //保留8个空位
  LPC_REG RTC_ALSEC;//秒报警值
  LPC_REG RTC_ALMIN;//分报警值
  LPC_REG RTC_ALHOUR;//小时报警值
  LPC_REG RTC_ALDOM;//日期(月)报警值
  LPC_REG RTC_ALDOW;//星期报警值
  LPC_REG RTC_ALDOY;//日期(年)报警值
  LPC_REG RTC_ALMONTH;//月报警值
  LPC_REG RTC_ALYEAR;//年报警值
  LPC_REG RTC_PREINT;//预分频值,整数部分
  LPC_REG RTC_PREFRAC;//预分频值,小数部分
}LPCS_RTC, *LPCPS_RTC;
#define LPC_BASE_RTC  ((LPCPS_RTC)  0xE0024000)//定义硬件结构指针(硬件地址)
const LPCPS_RTC RTC = LPC_BASE_RTC;//定义全局结构指针变量RTC

#endif

⌨️ 快捷键说明

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