#ifndef __HAL_LKSMCU_FLASH_H__
#define __HAL_LKSMCU_FLASH_H__

#include "stdint.h"
typedef enum
{
    HAL_FLASH_0, ///< 内部flash
    HAL_FLASH_1, ///< 外部flash
} HAL_FLASH_x;
// 初始化
void HAL_FLASH_Reset(HAL_FLASH_x);   // 模块复位，预留接口
void HAL_FLASH_Enable(HAL_FLASH_x);  // 模块打开，预留接口
void HAL_FLASH_Disable(HAL_FLASH_x); // 模块关闭，预留接口

void HAL_FLASH_EnableCache(HAL_FLASH_x);                                              // 使能flash缓存加速
void HAL_FLASH_DisableCache(HAL_FLASH_x);                                             // 关闭flash缓存加速
uint32_t HAL_FLASH_ReadSectorSize(HAL_FLASH_x);                                       // 获取一个扇区的大小，和HAL_FLASH_SECTOR_SIZE等效
void HAL_FLASH_Erase(HAL_FLASH_x, uint32_t flashaddr, uint32_t len);                  // 扇区擦除，len只能是扇区大小的整数倍，不够一个扇区的部分会被忽略
void HAL_FLASH_Program(HAL_FLASH_x, uint32_t flashaddr, uint8_t *data, uint32_t len); // 编程
void HAL_FLASH_Update(HAL_FLASH_x, uint32_t flashaddr, uint8_t *data, uint32_t len);  // 更新数据，等效先擦除再编程
#endif
