flash.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /**
  2. * @Author: 李建
  3. * @Date: 2024/8/12 13:21
  4. * Description:
  5. * Copyright: Copyright (©) 2024 永续绿建. All rights reserved.
  6. */
  7. #ifndef ERV_HUMIDIFICATION_BOARD_FLASH_H
  8. #define ERV_HUMIDIFICATION_BOARD_FLASH_H
  9. #include "main.h"
  10. #define SLAVE_ADDRESS (uint32_t)0x0800FC00 //FLASH地址,第64页首地址,每次擦除最少一页
  11. #ifdef FLASH_BASE
  12. #undef FLASH_BASE
  13. #define FLASH_BASE 0x08000000U
  14. #endif
  15. #ifdef FLASH_PAGE_SIZE
  16. #undef FLASH_PAGE_SIZE
  17. #define FLASH_PAGE_SIZE 1024 //byte
  18. #endif
  19. //flash物理地址(绝对地址)与扇区编号转换
  20. //例如0x8006000转换成24
  21. #define FLASH_PAGE_TO_ADDR(page) ((uint32_t)(FLASH_BASE+(FLASH_PAGE_SIZE)*(page))) /* Base @ of page address*/
  22. #define ADDR_TO_FLASH_PAGE(addr) (((addr)-FLASH_BASE)/(FLASH_PAGE_SIZE))
  23. #define FLASH_USER_START_ADDR FLASH_PAGE_TO_ADDR(24) /* Start @ of user Flash area */
  24. #define FLASH_USER_END_ADDR FLASH_PAGE_TO_ADDR(34) /* End @ of user Flash area */
  25. typedef enum
  26. {
  27. FLASH_SUCCESS = 0,
  28. FLASH_PARAM_ERROR,
  29. FLASH_ADDR_ERROR,
  30. FLASH_WRITE_WORD_ERROR,
  31. FLASH_WRITE_HALF_WORD_ERROR,
  32. FLASH_WRITE_BYTE_ERROR,
  33. FLASH_READ_ERROR,
  34. FLASH_ERASE_ERROR,
  35. } FLASH_ERROR_CODE_E;
  36. FLASH_ERROR_CODE_E flash_write(uint32_t address, const uint8_t* pdata, uint32_t size);
  37. uint32_t flash_read ( uint32_t address, uint8_t* pdata, uint32_t size );
  38. FLASH_ERROR_CODE_E flash_erase( uint32_t start_addr,uint32_t end_addr);
  39. #endif //ERV_HUMIDIFICATION_BOARD_FLASH_H