请教马潮老师的mega128的bootloader的API函数问题?
//等待一个Flash页的写完成void wait_page_rw_ok(void)
{
while(SPMCSR & 0x40)
{
while(SPMCSR & 0x01);
SPMCSR = 0x11;
asm("spm
");
}
}
我觉得这个函数有点问题,while(SPMCSR & 0x40)这个判断有实际作用吗?根据datasheet的话只要写或者擦除的话RWWSB都置1,并且在其他默认的情况下他将一直保持,那么这句判断能不能看出读或者页完成呢?是不是应该通过判断SPMEN来看是不是读或者页完成呢?
即
void wait_page_rw_ok(void)
{
while(!(SPMCSR & 0x01))
{
SPMCSR = 0x11;
asm("spm
");
}
}
是不是这样才能有效的判断读或者页完成呢? 不好意思,马老师,你写的程序没有问题,并且可靠性更好,我刚开始没有深刻理解你程序里的while(SPMCSR & 0x01);这句话的作用。麻烦你了,谢谢。
页:
[1]