flash.h 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. /******************************************************************************
  2. * Copyright (C) 2021, Xiaohua Semiconductor Co., Ltd. All rights reserved.
  3. *
  4. * This software component is licensed by XHSC under BSD 3-Clause license
  5. * (the "License"); You may not use this file except in compliance with the
  6. * License. You may obtain a copy of the License at:
  7. * opensource.org/licenses/BSD-3-Clause
  8. *
  9. ******************************************************************************/
  10. /******************************************************************************
  11. * @file flash.h
  12. *
  13. * @brief Header file for FLASH functions
  14. *
  15. * @author MADS Team
  16. *
  17. ******************************************************************************/
  18. #ifndef __FLASH_H__
  19. #define __FLASH_H__
  20. /******************************************************************************/
  21. /* Include files */
  22. /******************************************************************************/
  23. #include "ddl.h"
  24. /* C binding of definitions if building with C++ compiler */
  25. #ifdef __cplusplus
  26. extern "C"
  27. {
  28. #endif
  29. /**
  30. ******************************************************************************
  31. ** \defgroup FlashGroup Flash Controller (Flash)
  32. **
  33. **
  34. ******************************************************************************/
  35. //@{
  36. /******************************************************************************
  37. * Global type definitions
  38. ******************************************************************************/
  39. /**
  40. ******************************************************************************
  41. ** \brief Flash中断类型重定义
  42. *****************************************************************************/
  43. typedef enum en_flash_int_type
  44. {
  45. FlashPCInt = 0x01u, ///<擦写PC地址报警中断
  46. FlashSlockInt = 0x02u, ///<擦写保护报警中断
  47. } en_flash_int_type_t;
  48. /**
  49. ******************************************************************************
  50. ** \brief Flash读等待周期类型重定义
  51. *****************************************************************************/
  52. typedef enum en_flash_waitcycle
  53. {
  54. FlashWaitCycle0 = 0u, ///< 读等待周期设置为0-即读周期为1(当HCLK小于等于24MHz时)
  55. FlashWaitCycle1 = 1u, ///< 读等待周期设置为1-即读周期为2(当HCLK大于24MHz时必须至少为1)
  56. FlashWaitCycle2 = 2u, ///< 读等待周期设置为2-即读周期为3(当HCK大于48MHz时必须至少为2)
  57. } en_flash_waitcycle_t;
  58. /**
  59. ******************************************************************************
  60. ** \brief Flash擦写保护范围重定义
  61. *****************************************************************************/
  62. typedef enum en_flash_lock
  63. {
  64. FlashLock0 = 0u, ///<LOCK0
  65. FlashLock1 = 1u, ///<LOCK1
  66. FlashLock2 = 4u, ///<LOCK2
  67. FlashLock3 = 5u, ///<LOCK3
  68. } en_flash_lock_t;
  69. /**
  70. ******************************************************************************
  71. ** \brief Redefinition of FLASH register structure
  72. ******************************************************************************/
  73. /******************************************************************************
  74. * Global definitions
  75. ******************************************************************************/
  76. /******************************************************************************
  77. * Local type definitions ('typedef')
  78. ******************************************************************************/
  79. /******************************************************************************
  80. * Global variable definitions ('extern')
  81. ******************************************************************************/
  82. /******************************************************************************
  83. * Global function prototypes (definition in C source)
  84. ******************************************************************************/
  85. ///<Flash 初始化配置(中断函数、编程时间参数及休眠模式配置)
  86. en_result_t Flash_Init(uint8_t u8FreqCfg, boolean_t bDpstbEn);
  87. ///<Flash 页/全片擦除
  88. en_result_t Flash_SectorErase(uint32_t u32SectorAddr);
  89. en_result_t Flash_ChipErase(void);
  90. ///<Flash 字节/半字/字写
  91. en_result_t Flash_WriteByte(uint32_t u32Addr, uint8_t u8Data);
  92. en_result_t Flash_WriteHalfWord(uint32_t u32Addr, uint16_t u16Data);
  93. en_result_t Flash_WriteWord(uint32_t u32Addr, uint32_t u32Data);
  94. ///<Flash 编程保护加锁/解锁
  95. void Flash_LockAll(void);
  96. void Flash_UnlockAll(void);
  97. en_result_t Flash_LockSet(en_flash_lock_t enLock, uint32_t u32LockValue);
  98. ///<Flash 读等待周期设定
  99. en_result_t Flash_WaitCycle(en_flash_waitcycle_t enWaitCycle);
  100. ///<中断相关函数
  101. ///<中断使能/禁止
  102. en_result_t Flash_EnableIrq(en_flash_int_type_t enFlashIntType);
  103. en_result_t Flash_DisableIrq(en_flash_int_type_t enFlashIntType);
  104. ///<中断标志获取
  105. boolean_t Flash_GetIntFlag(en_flash_int_type_t enFlashIntType);
  106. ///<中断标志清除
  107. en_result_t Flash_ClearIntFlag(en_flash_int_type_t enFlashIntType);
  108. //@} // FlashGroup
  109. #ifdef __cplusplus
  110. }
  111. #endif
  112. #endif /* __FLASH_H__ */
  113. /******************************************************************************/
  114. /* EOF (not truncated) */
  115. /******************************************************************************/