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

📄 lpc213xdef.h

📁 LPCARM之IAP应用举例及FLASH二次写入C++程序祥解。方便大家写程序参考.
💻 H
📖 第 1 页 / 共 4 页
字号:
  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


typedef struct _LPCS_WDT {
  LPC_REG WDT_WDMOD;//狗模式寄
  LPC_REG WDT_WDTC;//看门狗定时器常数寄存器
  LPC_REG WDT_WDFEED;//看门狗喂狗寄存器
  LPC_REG WDT_WDTV;//看门狗定时器值寄存器
}LPCS_WDT, *LPCPS_WDT;

#define LPC_BASE_WDT  ((LPCPS_WDT)  0xE0000000)//定义硬件结构指针(硬件地址)
const LPCPS_WDT WDT = LPC_BASE_WDT;//定义全局结构指针变量WDT

typedef struct _LPCS_ADC {
  LPC_REG ADCR; //A/D 控制寄存器
  LPC_REG ADDR; //A/D 数据寄存器
  LPC_REG AD_GSR;//A/D 全局启动寄存器
}LPCS_ADC, *LPCPS_ADC;

#define LPC_BASE_ADC0  ((LPCPS_ADC)  0xE0034000)//定义硬件结构指针(硬件地址)
#define LPC_BASE_ADC1  ((LPCPS_ADC)  0xE0060000)//定义硬件结构指针(硬件地址)
const LPCPS_ADC ADC0 = LPC_BASE_ADC0;//定义全局结构指针变量ADC0
const LPCPS_ADC ADC1 = LPC_BASE_ADC1;//定义全局结构指针变量ADC1

typedef struct _LPCS_INTCON {
  LPC_REG EXT_INT;//外部中断标志寄存器
  LPC_REG INT_WAKE;//外部中断唤醒寄存器
  LPC_REG EXT_MODE;//外部中断方式寄存器
  LPC_REG EXT_POLAR;//外部中断极性寄存器
}LPCS_INTCON, *LPCPS_INTCON;

#define LPC_BASE_INTCON  ((LPCPS_INTCON)  0xE01FC140)//定义硬件结构指针(硬件地址)
const LPCPS_INTCON INTCON = LPC_BASE_INTCON;//定义全局结构指针变量INTCON

typedef struct _LPCS_POWER {
  LPC_REG P_CON;//功率控制寄存器
  LPC_REG P_CONP;//外部功率控制寄存器
}LPCS_POWER, *LPCPS_POWER;

#define LPC_BASE_POWER  ((LPCPS_POWER)  0xE01FC0C0)//定义硬件结构指针(硬件地址)
const LPCPS_POWER POWER = LPC_BASE_POWER;//定义全局结构指针变量INTCON

typedef struct _LPCS_SYSCON {
  LPC_REG MEM_MAP;//存储器映射控制     //0xE01FC040
  LPC_REG Reserved0[15]; //保留16个空位 //0xE01FC044
  LPC_REG PLL_CON;//PLL 控制寄存器  //0xE01FC080
  LPC_REG PLL_CFG;//PLL 配置寄存器  //0xE01FC084
  LPC_REG PLL_STAT;//PLL 状态寄存器  //0xE01FC088
  LPC_REG PLL_FEED;//PLL 愦送寄存器  //0xE01FC08C
  LPC_REG Reserved1[12]; //保留4个空位 //0xE01FC090
  LPC_REG P_CON;//功率控制寄存器  //0xE01FC0C0
  LPC_REG P_CONP;//外部功率控制寄存器 //0xE01FC0C4
  LPC_REG Reserved2[14]; //保留14个空位 //0xE01FC0C8
  LPC_REG VPB_DIV;//VPB 分频器控制寄存器//0xE01FC100
  LPC_REG Reserved3[15]; //保留15个空位 //0xE01FC104
  LPC_REG EXT_INT;//外部中断标志寄存器 //0xE01FC140
  LPC_REG INT_WAKE;//外部中断唤醒寄存器 //0xE01FC144
  LPC_REG EXT_MODE;//外部中断方式寄存器 //0xE01FC148
  LPC_REG EXT_POLAR;//外部中断极性寄存器//0xE01FC14C
  LPC_REG Reserved4[12]; //保留12个空位 //0xE01FC150
  LPC_REG RS_ID;//复位源识别寄存器  //0xE01FC180
  LPC_REG CS_PR;//代码安全保护寄存器 //0xE01FC184
}LPCS_SYSCON, *LPCPS_SYSCON;

#define LPC_BASE_SYSCON  ((LPCPS_SYSCON)  0xE01FC040)//定义硬件结构指针(硬件地址)
const LPCPS_SYSCON SYSCON = LPC_BASE_SYSCON;//定义全局结构指针变量SYSCON

#define IAP_FCCLK            11059

/* 定义IAP命令字 */
                                    //   命令           参数
#define     IAP_SELECTOR        50  // 选择扇区     【起始扇区号、结束扇区号】
#define     IAP_RAMTOFLASH      51  // 拷贝数据     【FLASH目标地址、RAM源地址、写入字节数、系统时钟频率】
#define     IAP_ERASESECTOR     52  // 擦除扇区     【起始扇区号、结束扇区号、系统时钟频率】
#define     IAP_BLANKCHK        53  // 查空扇区     【起始扇区号、结束扇区号】
#define     IAP_READPARTID      54  // 读器件ID     【无】
#define     IAP_BOOTCODEID      55  // 读Boot版本号 【无】
#define     IAP_COMPARE         56  // 比较命令     【Flash起始地址、RAM起始地址、需要比较的字节数】
#define     IAP_EXEC            57

/* 定义IAP返回状态字 */
#define     CMD_SUCCESS          __0
#define     INVALID_COMMAND      __1
#define     SRC_ADDR_ERROR       __2 
#define     DST_ADDR_ERROR       __3
#define     SRC_ADDR_NOT_MAPPED  __4
#define     DST_ADDR_NOT_MAPPED  __5
#define     COUNT_ERROR          __6
#define     INVALID_SECTOR       __7
#define     SECTOR_NOT_BLANK     __8
#define     SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION __9
#define     COMPARE_ERROR        __10
#define     BUSY                 __11

#define IAP_LOCATION 0x7ffffff1//IAP函数入口地址
typedef void(*IAP)(unsigned int[], unsigned int[]);//IAP函数指针类型

#define Device_LPC2131  0x0002ff01// 196353
#define Device_LPC2132  0x0002ff11// 196369
#define Device_LPC2134  0x0002ff12// 196370
#define Device_LPC2136  0x0002ff23// 196387
#define Device_LPC2138  0x0002ff25// 196389


#endif  // __LPC213xDEF_H

⌨️ 快捷键说明

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