1. 程式人生 > >21IC上關於stm32 option bytes的操作帖子記錄

21IC上關於stm32 option bytes的操作帖子記錄

好多年過去了,樓上兩位也不知道解決沒有,我解決了,問題在於keil的debug選項。
首先程式碼如下
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