|
楼主 |
发表于 2016-6-16 19:18:49
|
显示全部楼层
R8C/1B 学习板--IAR下的 data flash之读写例 [复制链接]
http://www.renesas-mcu.com/read-htm-tid-788-fpage-5-page-1.html
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, 读就是直接读绝对地寻址!
RL78能否与以上R8C通用?
RL78=78K内核+R8C的外设, |
|