STM32
直播中

张昂笙

7年用户 970经验值
私信 关注
[问答]

如何修改STM32f030F4中的option bytes?

void OptionByteSet(u8 ob0, u8 ob1)
{
    FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPERR);
  FLASH_Unlock();
  FLASH_OB_Unlock();  
  if(ob0 != 0xff) FLASH_OB_ProgramData(0x1FFFF804, ob0);
  if(ob1 != 0xff) FLASH_OB_ProgramData(0x1FFFF806, ob1);
  FLASH_OB_Launch();
  FLASH_OB_Lock();
  FLASH_Lock();  
}

返回  FLASH_ERROR_PROGRAM 错误!

库: KEIL:  STM32F0XX_DFP 1.4


回帖(1)

李鸿

2024-5-11 17:27:01
要修改STM32F030F4中的Option Bytes(OB),您可以使用以下步骤:

1. 首先,确保您的开发环境已正确设置,包括STM32F030F4的库文件和头文件。

2. 在您的代码中,包含以下头文件:

```c
#include "stm32f0xx.h"
```

3. 确保您的系统时钟已正确配置,以便为FLASH操作提供足够的时钟频率。

4. 使用以下函数来修改Option Bytes:

```c
void OptionByteSet(u8 ob0, u8 ob1)
{
    // 清除FLASH标志
    FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPERR);

    // 解锁FLASH
    FLASH_Unlock();

    // 解锁Option Bytes
    FLASH_OB_Unlock();

    // 编程OB0(如果ob0不为0xff)
    if (ob0 != 0xff)
    {
        FLASH_OB_ProgramData(0x1FFFF804, ob0);
    }

    // 编程OB1(如果ob1不为0xff)
    if (ob1 != 0xff)
    {
        FLASH_OB_ProgramData(0x1FFFF806, ob1);
    }

    // 启动Option Bytes编程
    FLASH_OB_Launch();

    // 锁定Option Bytes
    FLASH_OB_Lock();

    // 锁定FLASH
    FLASH_Lock();
}
```

5. 在您的主函数中,调用`OptionByteSet()`函数并传入您想要设置的OB0和OB1值。例如:

```c
int main(void)
{
    // 设置系统时钟
    SystemClock_Config();

    // 修改Option Bytes
    OptionByteSet(0xAA, 0xBB);

    // 其他代码...

    while (1)
    {
        // 主循环
    }
}
```

请注意,修改Option Bytes可能会导致设备复位。确保在修改OB0和OB1之前保存所有重要数据,并在修改后检查设备是否正常工作。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分