/**
 * @brief FLASH-MAIN区域读写和擦除
 * @details
 * 通过调用FLASH_Write()和FLASH_Erase()函数，实现了对Flash存储器的读写和擦除操作。
 * 向flash存储器写入256字节的数据，然后擦除flash存储器，最后再写入数据。
 * 数据为0~255，然后读取flash存储器，最后比较写入和读取的数据是否一致。
 */
#include "lks32mc09x_flash.h"
#include "lks32mc09x_sys.h"

uint32_t address = 0x8000;
uint8_t testdata[256];
uint8_t buffer[256];

volatile uint32_t write_flg = 0;
/**
 * @brief 主函数
 */
int main(void)
{
    SYS_SetPowerFailureDetection(SYS_PVDSEL_OFF);
    for (int i = 0; i < 256; i++)
    {
        testdata[i] = i;
    }

    // 主循环，防止程序退出
    while (1)
    {
        switch (write_flg)
        {
        case 0:
            break;
        case 1:
            write_flg = 0;
            FLASH_Write(address, testdata, 256); // 写入flash
            break;
        case 2:
            FLASH_Erase(address); // 擦除flash
            write_flg = 0;
            break;
        case 3:
            FLASH_Read(address, buffer, 256); // 读取flash
            write_flg = 0;
            break;
        default:
            break;
        }
    }
}

