头像-80864

青山奇侠

  • 广东省深圳市
  • 单片机 嵌入式 EMC/EMI RF/无线
  • 消费电子

个人成就

获得 0 次赞

帮助过0人

AVR单片机IAP引导程序的FLASH页写入问题

一个引导程序,在擦除FLASH,执行FLASH页写入时,每页的前2个字节写入错误,其他的字节都对。何解? 采用的是ATmeag644单片机 下面是详细的程序 void boot_page_ew(uint p_address,uchar code) { asm("mov r30,r16n" "mov r31,r17n" "out 0x3b,r18n");            //将页地址放入Z寄存器和RAMPZ的Bit0中 SPMCSR = code;                //寄存器SPMCSR中为操作码 asm("spmn");                    //对指定Flash页进行操作 } void boot_page_fill(unsigned int address1,uint data1) { asm("mov r30,r16n" "mov r31,r17n"        //Z寄存器中为填冲页内地址 "mov r0,r18n" "mov r1,r19n");       //R0R1中为一个指令字 SPMCSR = 0x01; asm("spmn"); } //等待一个Flash页的写完成 void wait_page_rw_ok(void) { while(SPMCSR & 0x40) { while(SPMCSR & 0x01); SPMCSR = 0x01;//0x11; asm("spmn"); } } //更新一个Flash页的完整处理 void write_one_page(uint address1) { uint i; boot_page_ew(address1,0x03);           //擦除一个Flash页 wait_page_rw_ok();               //等待擦除完成 for(i=0;i