美文网首页
灵动微MM32F003硬件最小系统 --- 片内flash读写例

灵动微MM32F003硬件最小系统 --- 片内flash读写例

作者: 黄开通 | 来源:发表于2020-11-09 19:14 被阅读0次

该例程通过向片内特定地址写入数据,然后从该地址读取数据,与原始数据进行比较。如果对比结果一致,指示LED就按照1秒的时间间隔闪烁,否则按照100毫秒时间间隔闪烁。

1 片内flash读写函数

u8 FLASH_Program(void)
{

    /* Porgram FLASH Bank1 ********************************************************/
    /* Unlock the Flash Bank1 Program Erase controller */
    FLASH_Unlock();

    /* Clear All pending flags */
    FLASH_ClearFlag(FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR);

    FLASH_ErasePage(BANK1_WRITE_START_ADDR);

    FLASH_ClearFlag(FLASH_FLAG_EOP );

    FLASHStatus = FLASH_ProgramWord(BANK1_WRITE_START_ADDR, Data);

    FLASH_ClearFlag(FLASH_FLAG_EOP );

    FLASH_Lock();


    if((*(__IO uint32_t*) BANK1_WRITE_START_ADDR) != Data) {
        return 1;
    }
    return 0;
}

2 主程序

int main(void)
{
    u8 t;
    delay_init();
    LED_Init();

    t = FLASH_Program();

    if(t == 0) {
        while(1) {
            LED1_TOGGLE();
            delay_ms(1000);
        }
    } else {
        while(1) {
            LED1_TOGGLE();
            delay_ms(100);
        }
    }
}

相关文章

网友评论

      本文标题:灵动微MM32F003硬件最小系统 --- 片内flash读写例

      本文链接:https://www.haomeiwen.com/subject/sdrrbktx.html