原文:R8/1B 学习板--IAR下的 data flash之读写例
void block_erase( unsigned char *ers_addr)
{
di(); //禁止中断
fmr0=0x01;
asm("");
fmr0=0x03;
asm("");
fmr1=0x80;
asm("");
fmr1=0x82; //使用EW1模式
asm("");
*ers_addr=0x20; //擦除命令,先写0X20,再写0XD0
*ers_addr=0xd0; //擦除命令
while(!fmr00); //等待擦除完成
if(fmr07==1) *ers_addr=0x50; //清除状态寄存器
fmr0=0x01;
ei();
}
void writedata(unsigned char *ers_addr,unsigned char wdata)
{
di(); //禁止中断
fmr0=0x01;
asm("");
fmr0=0x03;
asm("");
fmr1=0x80;
asm("");
fmr1=0x82;
asm("");
*ers_addr=0x40; //命令 选写0X40 再写数据
*ers_addr=wdata; //数据
while(!fmr00); //等待擦除完成
if(fmr07==1) *ers_addr=0x50; //清除状态寄存器
fmr0=0x01;
ei();
}
调用:
block_erase((void *)0x2400);
block_erase((void *)0x2800);
writedata((void *)Ftpd,Ubuf[Dtmp2]);
Ftpd--是一个变量,Ubuf[Dtmp2] 是一个变量数组。
FLASH写,只能把1变成0,不能把0变1
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。