32 lines
1.3 KiB
C
32 lines
1.3 KiB
C
#ifndef __APP_FLASH_H__
|
|
#define __APP_FLASH_H__
|
|
#include "main.h"
|
|
#include <stdint.h>
|
|
|
|
/* STM32F103C8T6 Flash 规格: 64KB, 起始地址 0x08000000, 每页 1KB */
|
|
/* FLASH_PAGE_SIZE 由 HAL 库定义(stm32f1xx_hal_flash_ex.h), 此处不再重定义 */
|
|
#define FLASH_BASE_ADDR 0x08000000U
|
|
#define FLASH_TOTAL_SIZE (64U * 1024U)
|
|
#define FLASH_PAGE_NUM 64U
|
|
|
|
/* 用户数据存储区: 最后4页(0x0800F000 - 0x0800FFFF), 共4KB */
|
|
#define FLASH_USER_START_ADDR (FLASH_BASE_ADDR + 60U * FLASH_PAGE_SIZE) /* 0x0800F000 */
|
|
#define FLASH_USER_END_ADDR (FLASH_BASE_ADDR + FLASH_TOTAL_SIZE) /* 0x08010000 */
|
|
#define FLASH_USER_PAGE_NUM 4U
|
|
|
|
/* API */
|
|
uint8_t flash_read_byte(uint32_t addr);
|
|
uint16_t flash_read_halfword(uint32_t addr);
|
|
uint32_t flash_read_word(uint32_t addr);
|
|
void flash_read_bytes(uint32_t addr, uint8_t *buf, uint32_t len);
|
|
uint8_t flash_write_word_root(uint32_t addr, uint32_t data);
|
|
uint8_t flash_write_word(uint32_t addr, uint32_t data);
|
|
uint8_t flash_write_bytes(uint32_t addr, const uint8_t *data, uint32_t len);
|
|
uint8_t flash_erase_page(uint32_t page_addr);
|
|
|
|
/* 便捷接口: 基于偏移读写用户数据区 */
|
|
uint8_t flash_read_user(uint16_t offset, uint8_t *buf, uint16_t len);
|
|
uint8_t flash_write_user(uint16_t offset, const uint8_t *buf, uint16_t len);
|
|
|
|
#endif /* __APP_FLASH_H__ */
|