PAGE1
PAGE1
LPC1700系列的编程模型
程序存储器和数据存储器
LPC1700系列单片机具有丰富的存储器资源,包括程序存储器(FlashMemory)和数据存储器(SRAM)。理解这些存储器的结构和使用方法是编写高效、可靠代码的基础。
程序存储器(FlashMemory)
程序存储器主要用于存储程序代码和常量数据。LPC1700系列的Flash存储器具有以下特点:
容量:LPC1768具有512KB的Flash存储器,而LPC1769具有1MB的Flash存储器。
访问速度:访问速度非常快,通常与CPU的主频相匹配。
编程和擦除:Flash存储器支持编程和擦除操作,但需要特定的时序和命令。编程操作通常以字节为单位,擦除操作则以块为单位。
Flash存储器的编程示例
以下是一个简单的示例,展示如何使用LPC1700系列的Flash存储器编程接口来写入数据。
#includeLPC17xx.h
//定义Flash存储器的基地址
#defineFLASH_BASE_ADDRESS0
#defineFLASH_PAGE_SIZE0x800//2KB页面大小
//定义要写入的数据
constuint32_tdata_to_write=0
//Flash编程函数
voidflash_program(uint32_taddress,uint32_tdata){
//禁用中断
__disable_irq();
//配置Flash访问控制寄存器
LPC_FLASH_ACCESS-FACR=0x01;//启用Flash编程
//等待Flash准备好
while(LPC_FLASH_ACCESS-FSTATR0x01){
//等待直到Flash准备好
}
//执行编程操作
LPC_FLASH_ACCESS-FADR=address;//设置地址
LPC_FLASH_ACCESS-FDATA=data;//设置数据
LPC_FLASH_ACCESS-FCR=0x01;//设置编程命令
//等待编程完成
while(LPC_FLASH_ACCESS-FSTATR0x02){
//等待直到编程完成
}
//恢复中断
__enable_irq();
}
intmain(void){
//写入数据到Flash存储器
flash_program(FLASH_BASE_ADDRESS+0x100,data_to_write);
//读取数据并验证
uint32_tread_data;
LPC_FLASH_ACCESS-FADR=FLASH_BASE_ADDRESS+0x100;//设置读取地址
LPC_FLASH_ACCESS-FCR=0x00;//设置读取命令
read_data=LPC_FLASH_ACCESS-FDATA;//读取数据
if(read_data==data_to_write){
//写入成功
}else{
//写入失败
}
return0;
}
数据存储器(SRAM)
数据存储器主要用于存储变量、堆栈和动态数据。LPC1700系列的SRAM具有以下特点:
容量:LPC1768和LPC1769都具有64KB的SRAM。
访问速度:访问速度非常快,通常与CPU的主频相匹配。
易失性:SRAM是易失性的,断电后数据会丢失。
SRAM的使用示例
以下是一个简单的示例,展示如何在SRAM中定义和使用变量。
#includeLPC17xx.h
//定义一个存储在SRAM中的变量
uint32_tsram_variable__attribute__((section(SRAM)))=0xdeadbeef;
intmain(void){
//访问SRAM中的变量
sram_variable=0
if(sram_variable