21IC上關於stm32 option bytes的操作帖子記錄
阿新 • • 發佈:2018-12-21
首先程式碼如下
u16 OptionByte_Read1(void) //兩個8位元組合成1個16位元組使用
{
u8 high=(*(vu16*)(0x1FFFF804))&0x00ff;//讀0x1FFFF804
u8 low =(*(vu16*)(0x1FFFF806))&0x00ff;//讀0x1FFFF806
return ( (high<<8)+low );
}
void OptionByte_Write1(u16 data)//兩個8位元組合成1個16位元組使用
{
FLASH_Unlock();
FLASH_OB_Unlock();//解鎖
FLASH_EraseOptionBytes();//flash為ff時候才能寫入,所以先擦除,網上很多不成功就是沒擦除
FLASH_ProgramOptionByteData(0x1FFFF804,data>>8); //寫0x1FFFF804
FLASH_ProgramOptionByteData(0x1FFFF806,data&0x00ff);//寫0x1FFFF806
FLASH_OB_Lock(); //上鎖
FLASH_Lock();
}
int main()
{
Init_UART2();
//簡單記錄復位次數
OptionByte_Write1(0xa5a5);
OptionByte=OptionByte_Read1();
printf("OptionByte=0x%4x\r\n",OptionByte);
然後再keil燒寫器配置中,要把16B的Flash打勾選上,不能只選64KB的那個ROM