void ProgramOptionByte(u16 address,u8 *buf,u16 number)
{ FLASH_DUKR= 0xae;
FLASH_DUKR= 0x56;
FLASH_CR2_bit.OPT= 1;
FLASH_NCR2_bit.NOPT= 0;
for(u16 i=0;i<number;i++)
{ *((u8*)(address+i)) = buf;
}
while(!FLASH_IAPSR_bit.HVOFF);
FLASH_CR2_bit.OPT= 0;
FLASH_NCR2_bit.NOPT= 1;
FLASH_IAPSR_bit.DUL= 0;
}
main:
u8 buf[3];
u8 x= BOOT_SIZE/SECTOR_SIZE-1;
buf[0]= 0xaa;
buf[1]= x;
buf[2]= ~x;
ProgramOptionByte(0x4800,buf,3)
这个程序参考下
|