unsigned short int read_flash_word(unsigned short int addr)<br />{unsigned char ss;<br /> FEEMOD =0x00; //关闭页面,禁止修改<br /> FEEADR = addr; // set address<br /> FEECON = 0x01; // single read command<br /> flash_error = 0x00;<br /> ss = FEESTA&0x01;<br /> while (!ss && (flash_error++<=2000)) ss = FEESTA&0x01; // wait data read ready<br /> return(FEEDAT); // one byte data<br />}<br /><br /><br />void write_flash_word(unsigned short int addr, unsigned short int *word, unsigned short int count)<br />{ unsigned short int erased_page, i;<br /> unsigned char ss;<br /> erased_page = 0x01; //页面起始地址的低九位应该为0,设置为1表示开始就需要页面清空<br /> for(i=0; i<count; i++)<br /> {<br /> if (erased_page!=(addr&0xFE00))<br /> {<br /> Erase_Page(addr);<br /> erased_page = addr&0xFE00;<br /> }<br /> FEEADR = addr++; addr++; // set address //地址必须 “+ 2”<br /> FEEDAT = *word; word++; // set data value<br /> FEECON = 0x02; // write command<br /> flash_error = 0x00;<br /> ss = FEESTA&0x01;<br /> while (!ss && (flash_error++<=2000)) ss = FEESTA&0x01; // wait data read ready<br /> }<br /> FEEMOD =0x00; //关闭页面,禁止修改<br />}<br /><br /><br />执行完上面的任意一个函数,调试中断异常,仿真程序也飞了,求教大虾了! |
|