123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981 |
- /**
- *******************************************************************************************************
- * @file fm33lc0xx_fl_flash.h
- * @author FMSH Application Team
- * @brief Head file of FLASH FL Module
- *******************************************************************************************************
- * @attention
- *
- * Copyright (c) [2019] [Fudan Microelectronics]
- * THIS SOFTWARE is licensed under the Mulan PSL v1.
- * can use this software according to the terms and conditions of the Mulan PSL v1.
- * You may obtain a copy of Mulan PSL v1 at:
- * http://license.coscl.org.cn/MulanPSL
- * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
- * PURPOSE.
- * See the Mulan PSL v1 for more details.
- *
- *******************************************************************************************************
- */
- /* Define to prevent recursive inclusion---------------------------------------------------------------*/
- #ifndef __FM33LC0XX_FL_FLASH_H
- #define __FM33LC0XX_FL_FLASH_H
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* Includes -------------------------------------------------------------------------------------------*/
- #include "fm33lc0xx_fl.h"
- /** @addtogroup FM33LC0XX_FL_Driver
- * @{
- */
- /** @defgroup FLASH FLASH
- * @brief FLASH FL driver
- * @{
- */
- /* Exported types -------------------------------------------------------------------------------------*/
- /** @defgroup FLASH_FL_ES_INIT FLASH Exported Init structures
- * @{
- */
- /**
- * @}
- */
- /* Exported constants ---------------------------------------------------------------------------------*/
- /** @defgroup FLASH_FL_Exported_Constants FLASH Exported Constants
- * @{
- */
- #define FLASH_RDCR_WAIT_Pos (0U)
- #define FLASH_RDCR_WAIT_Msk (0x3U << FLASH_RDCR_WAIT_Pos)
- #define FLASH_RDCR_WAIT FLASH_RDCR_WAIT_Msk
- #define FLASH_PFCR_PRFTEN_Pos (0U)
- #define FLASH_PFCR_PRFTEN_Msk (0x1U << FLASH_PFCR_PRFTEN_Pos)
- #define FLASH_PFCR_PRFTEN FLASH_PFCR_PRFTEN_Msk
- #define FLASH_OPTBR_IWDTSLP_Pos (31U)
- #define FLASH_OPTBR_IWDTSLP_Msk (0x1U << FLASH_OPTBR_IWDTSLP_Pos)
- #define FLASH_OPTBR_IWDTSLP FLASH_OPTBR_IWDTSLP_Msk
- #define FLASH_OPTBR_IFLOCK_Pos (17U)
- #define FLASH_OPTBR_IFLOCK_Msk (0x3U << FLASH_OPTBR_IFLOCK_Pos)
- #define FLASH_OPTBR_IFLOCK FLASH_OPTBR_IFLOCK_Msk
- #define FLASH_OPTBR_DFLSEN_Pos (10U)
- #define FLASH_OPTBR_DFLSEN_Msk (0x1U << FLASH_OPTBR_DFLSEN_Pos)
- #define FLASH_OPTBR_DFLSEN FLASH_OPTBR_DFLSEN_Msk
- #define FLASH_OPTBR_BTSEN_Pos (8U)
- #define FLASH_OPTBR_BTSEN_Msk (0x3U << FLASH_OPTBR_BTSEN_Pos)
- #define FLASH_OPTBR_BTSEN FLASH_OPTBR_BTSEN_Msk
- #define FLASH_OPTBR_ACLOCKEN_Pos (2U)
- #define FLASH_OPTBR_ACLOCKEN_Msk (0x3U << FLASH_OPTBR_ACLOCKEN_Pos)
- #define FLASH_OPTBR_ACLOCKEN FLASH_OPTBR_ACLOCKEN_Msk
- #define FLASH_OPTBR_DBRDPEN_Pos (0U)
- #define FLASH_OPTBR_DBRDPEN_Msk (0x3U << FLASH_OPTBR_DBRDPEN_Pos)
- #define FLASH_OPTBR_DBRDPEN FLASH_OPTBR_DBRDPEN_Msk
- #define FLASH_EPCR_ERTYPE_Pos (8U)
- #define FLASH_EPCR_ERTYPE_Msk (0x3U << FLASH_EPCR_ERTYPE_Pos)
- #define FLASH_EPCR_ERTYPE FLASH_EPCR_ERTYPE_Msk
- #define FLASH_EPCR_PREQ_Pos (1U)
- #define FLASH_EPCR_PREQ_Msk (0x1U << FLASH_EPCR_PREQ_Pos)
- #define FLASH_EPCR_PREQ FLASH_EPCR_PREQ_Msk
- #define FLASH_EPCR_EREQ_Pos (0U)
- #define FLASH_EPCR_EREQ_Msk (0x1U << FLASH_EPCR_EREQ_Pos)
- #define FLASH_EPCR_EREQ FLASH_EPCR_EREQ_Msk
- #define FLASH_IER_OPTIE_Pos (11U)
- #define FLASH_IER_OPTIE_Msk (0x1U << FLASH_IER_OPTIE_Pos)
- #define FLASH_IER_OPTIE FLASH_IER_OPTIE_Msk
- #define FLASH_IER_AUTHIE_Pos (10U)
- #define FLASH_IER_AUTHIE_Msk (0x1U << FLASH_IER_AUTHIE_Pos)
- #define FLASH_IER_AUTHIE FLASH_IER_AUTHIE_Msk
- #define FLASH_IER_KEYIE_Pos (9U)
- #define FLASH_IER_KEYIE_Msk (0x1U << FLASH_IER_KEYIE_Pos)
- #define FLASH_IER_KEYIE FLASH_IER_KEYIE_Msk
- #define FLASH_IER_CKIE_Pos (8U)
- #define FLASH_IER_CKIE_Msk (0x1U << FLASH_IER_CKIE_Pos)
- #define FLASH_IER_CKIE FLASH_IER_CKIE_Msk
- #define FLASH_IER_PRDIE_Pos (1U)
- #define FLASH_IER_PRDIE_Msk (0x1U << FLASH_IER_PRDIE_Pos)
- #define FLASH_IER_PRDIE FLASH_IER_PRDIE_Msk
- #define FLASH_IER_ERDIE_Pos (0U)
- #define FLASH_IER_ERDIE_Msk (0x1U << FLASH_IER_ERDIE_Pos)
- #define FLASH_IER_ERDIE FLASH_IER_ERDIE_Msk
- #define FLASH_ISR_KEYSTA_Pos (17U)
- #define FLASH_ISR_KEYSTA_Msk (0x7U << FLASH_ISR_KEYSTA_Pos)
- #define FLASH_ISR_KEYSTA FLASH_ISR_KEYSTA_Msk
- #define FLASH_ISR_BTSF_Pos (16U)
- #define FLASH_ISR_BTSF_Msk (0x1U << FLASH_ISR_BTSF_Pos)
- #define FLASH_ISR_BTSF FLASH_ISR_BTSF_Msk
- #define FLASH_ISR_OPTERR_Pos (11U)
- #define FLASH_ISR_OPTERR_Msk (0x1U << FLASH_ISR_OPTERR_Pos)
- #define FLASH_ISR_OPTERR FLASH_ISR_OPTERR_Msk
- #define FLASH_ISR_AUTHERR_Pos (10U)
- #define FLASH_ISR_AUTHERR_Msk (0x1U << FLASH_ISR_AUTHERR_Pos)
- #define FLASH_ISR_AUTHERR FLASH_ISR_AUTHERR_Msk
- #define FLASH_ISR_KEYERR_Pos (9U)
- #define FLASH_ISR_KEYERR_Msk (0x1U << FLASH_ISR_KEYERR_Pos)
- #define FLASH_ISR_KEYERR FLASH_ISR_KEYERR_Msk
- #define FLASH_ISR_CKERR_Pos (8U)
- #define FLASH_ISR_CKERR_Msk (0x1U << FLASH_ISR_CKERR_Pos)
- #define FLASH_ISR_CKERR FLASH_ISR_CKERR_Msk
- #define FLASH_ISR_PRD_Pos (1U)
- #define FLASH_ISR_PRD_Msk (0x1U << FLASH_ISR_PRD_Pos)
- #define FLASH_ISR_PRD FLASH_ISR_PRD_Msk
- #define FLASH_ISR_ERD_Pos (0U)
- #define FLASH_ISR_ERD_Msk (0x1U << FLASH_ISR_ERD_Pos)
- #define FLASH_ISR_ERD FLASH_ISR_ERD_Msk
- #define FL_FLASH_INFORMATION1_REGIN (0x1U << 17U)
- #define FL_FLASH_INFORMATION2_REGIN (0x1U << 18U)
- #define FL_FLASH_BLOCK_0 (0x1U << 0U)
- #define FL_FLASH_BLOCK_1 (0x1U << 1U)
- #define FL_FLASH_BLOCK_2 (0x1U << 2U)
- #define FL_FLASH_BLOCK_3 (0x1U << 3U)
- #define FL_FLASH_BLOCK_4 (0x1U << 4U)
- #define FL_FLASH_BLOCK_5 (0x1U << 5U)
- #define FL_FLASH_BLOCK_6 (0x1U << 6U)
- #define FL_FLASH_BLOCK_7 (0x1U << 7U)
- #define FL_FLASH_BLOCK_8 (0x1U << 8U)
- #define FL_FLASH_BLOCK_9 (0x1U << 9U)
- #define FL_FLASH_BLOCK_10 (0x1U << 10U)
- #define FL_FLASH_BLOCK_11 (0x1U << 11U)
- #define FL_FLASH_BLOCK_12 (0x1U << 12U)
- #define FL_FLASH_BLOCK_13 (0x1U << 13U)
- #define FL_FLASH_BLOCK_14 (0x1U << 14U)
- #define FL_FLASH_BLOCK_15 (0x1U << 15U)
- #define FL_FLASH_LOCK_ALL (0x0U << 0U)
- #define FL_FLASH_LOCK_SOFTWARE (0x2U << 0U)
- #define FL_FLASH_LOCK_NONE (0x3U << 0U)
- #define FL_FLASH_BOOTSWAP_ENABLE (0x2U << 8U)
- #define FL_FLASH_BOOTSWAP_DISABLE (0x0U << 8U)
- #define FL_FLASH_APPCODE_LOCK_ENABLE (0x2U << 2U)
- #define FL_FLASH_APPCODE_LOCK_DISABLE (0x0U << 2U)
- #define FL_FLASH_DEBUG_READ_ENABLE (0x2U << 0U)
- #define FL_FLASH_DEBUG_READ_DISABLE (0x0U << 0U)
- #define FL_FLASH_ERASE_KEY 0x96969696U
- #define FL_FLASH_CHIP_ERASE_KEY 0x7D7D7D7DU
- #define FL_FLASH_PAGE_ERASE_KEY 0xEAEAEAEAU
- #define FL_FLASH_SECTOR_ERASE_KEY 0x3C3C3C3CU
- #define FL_FLASH_ERASE_REQUEST 0x1234ABCDU
- #define FL_FLASH_PROGRAM_KEY1 0xA5A5A5A5U
- #define FL_FLASH_PROGRAM_KEY2 0xF1F1F1F1U
- #define FL_FLASH_ERASE_TIMEOUT 0x0000FFFFU
- #define FL_FLASH_ADDRS_ALIGN 0x00000004U
- #define FL_FLASH_MAX_PAGE_NUM 0x00000200U
- #define FL_FLASH_MAX_SECTOR_NUM 0x00000080U
- #define FL_FLASH_SECTOR_SIZE_BYTE 0x00000800U
- #define FL_FLASH_PAGE_SIZE_BYTE 0x00000200U
- #define FL_FLASH_ADDR_MAXPROGRAM 0x0003FFFFU
- #define FL_FLASH_READ_WAIT_0CYCLE (0x0U << FLASH_RDCR_WAIT_Pos)
- #define FL_FLASH_READ_WAIT_1CYCLE (0x1U << FLASH_RDCR_WAIT_Pos)
- #define FL_FLASH_READ_WAIT_2CYCLE (0x2U << FLASH_RDCR_WAIT_Pos)
- #define FL_FLASH_IWDT_STOP_UNDER_SLEEP (0x0U << FLASH_OPTBR_IWDTSLP_Pos)
- #define FL_FLASH_IWDT_WORK_UNDER_SLEEP (0x1U << FLASH_OPTBR_IWDTSLP_Pos)
- #define FL_FLASH_IF_UNLOCK (0x0U << FLASH_OPTBR_IFLOCK_Pos)
- #define FL_FLASH_IF_LOCK (0x1U << FLASH_OPTBR_IFLOCK_Pos)
- #define FL_FLASH_DATA_FLASH_DISABLE (0x0U << FLASH_OPTBR_DFLSEN_Pos)
- #define FL_FLASH_DATA_FLASH_ENABLE (0x1U << FLASH_OPTBR_DFLSEN_Pos)
- #define FL_FLASH_BOOT_SWAP_DISABLE (0x0U << FLASH_OPTBR_BTSEN_Pos)
- #define FL_FLASH_BOOT_SWAP_ENABLE (0x1U << FLASH_OPTBR_BTSEN_Pos)
- #define FL_FLASH_FLASH_LOCK_DISABLE (0x0U << FLASH_OPTBR_ACLOCKEN_Pos)
- #define FL_FLASH_FLASH_LOCK_ENABLE (0x1U << FLASH_OPTBR_ACLOCKEN_Pos)
- #define FL_FLASH_SWD_READ_PEOTECTION_DISABLE (0x0U << FLASH_OPTBR_DBRDPEN_Pos)
- #define FL_FLASH_SWD_READ_PEOTECTION_ENABLE (0x1U << FLASH_OPTBR_DBRDPEN_Pos)
- #define FL_FLASH_ERASE_TYPE_PAGE (0x0U << FLASH_EPCR_ERTYPE_Pos)
- #define FL_FLASH_ERASE_TYPE_SECTOR (0x1U << FLASH_EPCR_ERTYPE_Pos)
- #define FL_FLASH_KEY_STATUS_LOCK (0x0U << FLASH_ISR_KEYSTA_Pos)
- #define FL_FLASH_KEY_STATUS_PAGE_ERASE (0x2U << FLASH_ISR_KEYSTA_Pos)
- #define FL_FLASH_KEY_STATUS_PROGRAM (0x3U << FLASH_ISR_KEYSTA_Pos)
- #define FL_FLASH_KEY_STATUS_ERROR (0x4U << FLASH_ISR_KEYSTA_Pos)
- #define FL_FLASH_KEY_STATUS_SECTOR_ERASE (0x5U << FLASH_ISR_KEYSTA_Pos)
- #define FL_FLASH_BOOT_SECTOR_0000H_1FFFH (0x0U << FLASH_ISR_BTSF_Pos)
- #define FL_FLASH_BOOT_SECTOR_2000H_3FFFH (0x1U << FLASH_ISR_BTSF_Pos)
- /**
- * @}
- */
- /* Exported functions ---------------------------------------------------------------------------------*/
- /** @defgroup FLASH_FL_Exported_Functions FLASH Exported Functions
- * @{
- */
- /**
- * @brief Flash wait cycles config
- * @rmtoll RDCR WAIT FL_FLASH_SetReadWait
- * @param FLASHx FLASH instance
- * @param wait This parameter can be one of the following values:
- * @arg @ref FL_FLASH_READ_WAIT_0CYCLE
- * @arg @ref FL_FLASH_READ_WAIT_1CYCLE
- * @arg @ref FL_FLASH_READ_WAIT_2CYCLE
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_SetReadWait(FLASH_Type *FLASHx, uint32_t wait)
- {
- MODIFY_REG(FLASHx->RDCR, FLASH_RDCR_WAIT_Msk, wait);
- }
- /**
- * @brief Get flash wait cycles config status
- * @rmtoll RDCR WAIT FL_FLASH_GetReadWait
- * @param FLASHx FLASH instance
- * @retval Returned value can be one of the following values:
- * @arg @ref FL_FLASH_READ_WAIT_0CYCLE
- * @arg @ref FL_FLASH_READ_WAIT_1CYCLE
- * @arg @ref FL_FLASH_READ_WAIT_2CYCLE
- */
- __STATIC_INLINE uint32_t FL_FLASH_GetReadWait(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->RDCR, FLASH_RDCR_WAIT_Msk));
- }
- /**
- * @brief Prefetch Enable
- * @rmtoll PFCR PRFTEN FL_FLASH_EnablePrefetch
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_EnablePrefetch(FLASH_Type *FLASHx)
- {
- SET_BIT(FLASHx->PFCR, FLASH_PFCR_PRFTEN_Msk);
- }
- /**
- * @brief Get prefetch enable status
- * @rmtoll PFCR PRFTEN FL_FLASH_IsEnabledPrefetch
- * @param FLASHx FLASH instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_FLASH_IsEnabledPrefetch(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->PFCR, FLASH_PFCR_PRFTEN_Msk) == FLASH_PFCR_PRFTEN_Msk);
- }
- /**
- * @brief Prefetch disable
- * @rmtoll PFCR PRFTEN FL_FLASH_DisablePrefetch
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_DisablePrefetch(FLASH_Type *FLASHx)
- {
- CLEAR_BIT(FLASHx->PFCR, FLASH_PFCR_PRFTEN_Msk);
- }
- /**
- * @brief Get IWDT sleep enable status
- * @rmtoll OPTBR IWDTSLP FL_FLASH_GetIWDTStateUnderSleep
- * @param FLASHx FLASH instance
- * @retval Returned value can be one of the following values:
- * @arg @ref FL_FLASH_IWDT_STOP_UNDER_SLEEP
- * @arg @ref FL_FLASH_IWDT_WORK_UNDER_SLEEP
- */
- __STATIC_INLINE uint32_t FL_FLASH_GetIWDTStateUnderSleep(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->OPTBR, FLASH_OPTBR_IWDTSLP_Msk));
- }
- /**
- * @brief Get information2 lock enable flag
- * @rmtoll OPTBR IFLOCK FL_FLASH_IsActiveFlag_IFLockedState
- * @param FLASHx FLASH instance
- * @param region This parameter can be one of the following values:
- * @arg @ref FL_FLASH_INFORMATION1_REGIN
- * @arg @ref FL_FLASH_INFORMATION2_REGIN
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_FLASH_IsActiveFlag_IFLockedState(FLASH_Type *FLASHx, uint32_t region)
- {
- return (uint32_t)(READ_BIT(FLASHx->OPTBR, FLASH_OPTBR_IFLOCK_Msk) == (FLASH_OPTBR_IFLOCK_Msk));
- }
- /**
- * @brief Get dataflash enable status
- * @rmtoll OPTBR DFLSEN FL_FLASH_GetDataFlashState
- * @param FLASHx FLASH instance
- * @retval Returned value can be one of the following values:
- * @arg @ref FL_FLASH_DATA_FLASH_DISABLE
- * @arg @ref FL_FLASH_DATA_FLASH_ENABLE
- */
- __STATIC_INLINE uint32_t FL_FLASH_GetDataFlashState(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->OPTBR, FLASH_OPTBR_DFLSEN_Msk));
- }
- /**
- * @brief Get BootSwap enable status
- * @rmtoll OPTBR BTSEN FL_FLASH_GetBootSwapState
- * @param FLASHx FLASH instance
- * @retval Returned value can be one of the following values:
- * @arg @ref FL_FLASH_BOOT_SWAP_DISABLE
- * @arg @ref FL_FLASH_BOOT_SWAP_ENABLE
- */
- __STATIC_INLINE uint32_t FL_FLASH_GetBootSwapState(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->OPTBR, FLASH_OPTBR_BTSEN_Msk));
- }
- /**
- * @brief Get AppCode lock enable
- * @rmtoll OPTBR ACLOCKEN FL_FLASH_GetFlashLockState
- * @param FLASHx FLASH instance
- * @retval Returned value can be one of the following values:
- * @arg @ref FL_FLASH_FLASH_LOCK_DISABLE
- * @arg @ref FL_FLASH_FLASH_LOCK_ENABLE
- */
- __STATIC_INLINE uint32_t FL_FLASH_GetFlashLockState(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->OPTBR, FLASH_OPTBR_ACLOCKEN_Msk));
- }
- /**
- * @brief Get debug read protection enable status
- * @rmtoll OPTBR DBRDPEN FL_FLASH_GetSWDReadProtectionState
- * @param FLASHx FLASH instance
- * @retval Returned value can be one of the following values:
- * @arg @ref FL_FLASH_SWD_READ_PEOTECTION_DISABLE
- * @arg @ref FL_FLASH_SWD_READ_PEOTECTION_ENABLE
- */
- __STATIC_INLINE uint32_t FL_FLASH_GetSWDReadProtectionState(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->OPTBR, FLASH_OPTBR_DBRDPEN_Msk));
- }
- /**
- * @brief Set ACLOCK register low 32 bit
- * @rmtoll ACLOCK1 FL_FLASH_SetFlashLowRegionLock
- * @param FLASHx FLASH instance
- * @param region This parameter can be one of the following values:
- * @arg @ref FL_FLASH_BLOCK_0
- * @arg @ref FL_FLASH_BLOCK_1
- * @arg @ref FL_FLASH_BLOCK_2
- * @arg @ref FL_FLASH_BLOCK_3
- * @arg @ref FL_FLASH_BLOCK_4
- * @arg @ref FL_FLASH_BLOCK_5
- * @arg @ref FL_FLASH_BLOCK_6
- * @arg @ref FL_FLASH_BLOCK_7
- * @arg @ref FL_FLASH_BLOCK_8
- * @arg @ref FL_FLASH_BLOCK_9
- * @arg @ref FL_FLASH_BLOCK_10
- * @arg @ref FL_FLASH_BLOCK_11
- * @arg @ref FL_FLASH_BLOCK_12
- * @arg @ref FL_FLASH_BLOCK_13
- * @arg @ref FL_FLASH_BLOCK_14
- * @arg @ref FL_FLASH_BLOCK_15
- * @param mode This parameter can be one of the following values:
- * @arg @ref FL_FLASH_LOCK_ALL
- * @arg @ref FL_FLASH_LOCK_SOFTWARE
- * @arg @ref FL_FLASH_LOCK_NONE
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_SetFlashLowRegionLock(FLASH_Type *FLASHx, uint32_t region, uint32_t mode)
- {
- CLEAR_BIT(FLASHx->ACLOCK1, ((region * region) * (((mode == 3) ? 0 : (~mode)) & 0x03)));
- }
- /**
- * @brief Get ACLOCK register low 32 bit status
- * @rmtoll ACLOCK1 FL_FLASH_GetFlashLowRegionLock
- * @param FLASHx FLASH instance
- * @param region This parameter can be one of the following values:
- * @arg @ref FL_FLASH_BLOCK_0
- * @arg @ref FL_FLASH_BLOCK_1
- * @arg @ref FL_FLASH_BLOCK_2
- * @arg @ref FL_FLASH_BLOCK_3
- * @arg @ref FL_FLASH_BLOCK_4
- * @arg @ref FL_FLASH_BLOCK_5
- * @arg @ref FL_FLASH_BLOCK_6
- * @arg @ref FL_FLASH_BLOCK_7
- * @arg @ref FL_FLASH_BLOCK_8
- * @arg @ref FL_FLASH_BLOCK_9
- * @arg @ref FL_FLASH_BLOCK_10
- * @arg @ref FL_FLASH_BLOCK_11
- * @arg @ref FL_FLASH_BLOCK_12
- * @arg @ref FL_FLASH_BLOCK_13
- * @arg @ref FL_FLASH_BLOCK_14
- * @arg @ref FL_FLASH_BLOCK_15
- * @retval Returned value can be one of the following values:
- */
- __STATIC_INLINE uint32_t FL_FLASH_GetFlashLowRegionLock(FLASH_Type *FLASHx, uint32_t region)
- {
- return (uint32_t)(READ_BIT(FLASHx->ACLOCK1, ((region * region) * 0x03)) / (region * region));
- }
- /**
- * @brief Set ACLOCK register high 32 bit
- * @rmtoll ACLOCK2 FL_FLASH_SetFlashHighRegionLock
- * @param FLASHx FLASH instance
- * @param region This parameter can be one of the following values:
- * @arg @ref FL_FLASH_BLOCK_0
- * @arg @ref FL_FLASH_BLOCK_1
- * @arg @ref FL_FLASH_BLOCK_2
- * @arg @ref FL_FLASH_BLOCK_3
- * @arg @ref FL_FLASH_BLOCK_4
- * @arg @ref FL_FLASH_BLOCK_5
- * @arg @ref FL_FLASH_BLOCK_6
- * @arg @ref FL_FLASH_BLOCK_7
- * @arg @ref FL_FLASH_BLOCK_8
- * @arg @ref FL_FLASH_BLOCK_9
- * @arg @ref FL_FLASH_BLOCK_10
- * @arg @ref FL_FLASH_BLOCK_11
- * @arg @ref FL_FLASH_BLOCK_12
- * @arg @ref FL_FLASH_BLOCK_13
- * @arg @ref FL_FLASH_BLOCK_14
- * @arg @ref FL_FLASH_BLOCK_15
- * @param mode This parameter can be one of the following values:
- * @arg @ref FL_FLASH_LOCK_ALL
- * @arg @ref FL_FLASH_LOCK_SOFTWARE
- * @arg @ref FL_FLASH_LOCK_NONE
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_SetFlashHighRegionLock(FLASH_Type *FLASHx, uint32_t region, uint32_t mode)
- {
- CLEAR_BIT(FLASHx->ACLOCK2, ((region * region) * (((mode == 3) ? 0 : (~mode)) & 0x03)));
- }
- /**
- * @brief Get ACLOCK register high 32 bit status
- * @rmtoll ACLOCK2 FL_FLASH_GetFlashHighRegionLock
- * @param FLASHx FLASH instance
- * @param region This parameter can be one of the following values:
- * @arg @ref FL_FLASH_BLOCK_0
- * @arg @ref FL_FLASH_BLOCK_1
- * @arg @ref FL_FLASH_BLOCK_2
- * @arg @ref FL_FLASH_BLOCK_3
- * @arg @ref FL_FLASH_BLOCK_4
- * @arg @ref FL_FLASH_BLOCK_5
- * @arg @ref FL_FLASH_BLOCK_6
- * @arg @ref FL_FLASH_BLOCK_7
- * @arg @ref FL_FLASH_BLOCK_8
- * @arg @ref FL_FLASH_BLOCK_9
- * @arg @ref FL_FLASH_BLOCK_10
- * @arg @ref FL_FLASH_BLOCK_11
- * @arg @ref FL_FLASH_BLOCK_12
- * @arg @ref FL_FLASH_BLOCK_13
- * @arg @ref FL_FLASH_BLOCK_14
- * @arg @ref FL_FLASH_BLOCK_15
- * @retval Returned value can be one of the following values:
- */
- __STATIC_INLINE uint32_t FL_FLASH_GetFlashHighRegionLock(FLASH_Type *FLASHx, uint32_t region)
- {
- return (uint32_t)(READ_BIT(FLASHx->ACLOCK2, ((region * region) * 0x03)) / (region * region));
- }
- /**
- * @brief Set flash erase type
- * @rmtoll EPCR ERTYPE FL_FLASH_SetFlashEraseType
- * @param FLASHx FLASH instance
- * @param type This parameter can be one of the following values:
- * @arg @ref FL_FLASH_ERASE_TYPE_PAGE
- * @arg @ref FL_FLASH_ERASE_TYPE_SECTOR
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_SetFlashEraseType(FLASH_Type *FLASHx, uint32_t type)
- {
- MODIFY_REG(FLASHx->EPCR, FLASH_EPCR_ERTYPE_Msk, type);
- }
- /**
- * @brief Get flash erase type
- * @rmtoll EPCR ERTYPE FL_FLASH_GetFlashEraseType
- * @param FLASHx FLASH instance
- * @retval Returned value can be one of the following values:
- * @arg @ref FL_FLASH_ERASE_TYPE_PAGE
- * @arg @ref FL_FLASH_ERASE_TYPE_SECTOR
- */
- __STATIC_INLINE uint32_t FL_FLASH_GetFlashEraseType(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->EPCR, FLASH_EPCR_ERTYPE_Msk));
- }
- /**
- * @brief Program request enable
- * @rmtoll EPCR PREQ FL_FLASH_EnableProgram
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_EnableProgram(FLASH_Type *FLASHx)
- {
- CLEAR_BIT(FLASHx->EPCR, FLASH_EPCR_EREQ_Msk);
- SET_BIT(FLASHx->EPCR, FLASH_EPCR_PREQ_Msk);
- }
- /**
- * @brief Erase request enable
- * @rmtoll EPCR EREQ FL_FLASH_EnableErase
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_EnableErase(FLASH_Type *FLASHx)
- {
- CLEAR_BIT(FLASHx->EPCR, FLASH_EPCR_PREQ_Msk);
- SET_BIT(FLASHx->EPCR, FLASH_EPCR_EREQ_Msk);
- }
- /**
- * @brief Set flash key
- * @rmtoll KEY FL_FLASH_UnlockFlash
- * @param FLASHx FLASH instance
- * @param key
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_UnlockFlash(FLASH_Type *FLASHx, uint32_t key)
- {
- WRITE_REG(FLASHx->KEY, key);
- }
- /**
- * @brief Reset flash key
- * @rmtoll KEY FL_FLASH_LockFlash
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_LockFlash(FLASH_Type *FLASHx)
- {
- WRITE_REG(FLASHx->KEY, 0xFFFFFFFF);
- }
- /**
- * @brief OTP program error interrupt enable
- * @rmtoll IER OPTIE FL_FLASH_EnableIT_OTPProgramError
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_EnableIT_OTPProgramError(FLASH_Type *FLASHx)
- {
- SET_BIT(FLASHx->IER, FLASH_IER_OPTIE_Msk);
- }
- /**
- * @brief OTP program error interrupt disable
- * @rmtoll IER OPTIE FL_FLASH_DisableIT_OTPProgramError
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_DisableIT_OTPProgramError(FLASH_Type *FLASHx)
- {
- CLEAR_BIT(FLASHx->IER, FLASH_IER_OPTIE_Msk);
- }
- /**
- * @brief Get OTP program error interrupt enable status
- * @rmtoll IER OPTIE FL_FLASH_IsEnabledIT_OTPProgramError
- * @param FLASHx FLASH instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_FLASH_IsEnabledIT_OTPProgramError(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->IER, FLASH_IER_OPTIE_Msk) == FLASH_IER_OPTIE_Msk);
- }
- /**
- * @brief Flash authentication error interrupt enable
- * @rmtoll IER AUTHIE FL_FLASH_EnableIT_AuthenticationError
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_EnableIT_AuthenticationError(FLASH_Type *FLASHx)
- {
- SET_BIT(FLASHx->IER, FLASH_IER_AUTHIE_Msk);
- }
- /**
- * @brief Flash authentication error interrupt disable
- * @rmtoll IER AUTHIE FL_FLASH_DisableIT_AuthenticationError
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_DisableIT_AuthenticationError(FLASH_Type *FLASHx)
- {
- CLEAR_BIT(FLASHx->IER, FLASH_IER_AUTHIE_Msk);
- }
- /**
- * @brief Get flash authentication error interrupt enable status
- * @rmtoll IER AUTHIE FL_FLASH_IsEnabledIT_AuthenticationError
- * @param FLASHx FLASH instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_FLASH_IsEnabledIT_AuthenticationError(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->IER, FLASH_IER_AUTHIE_Msk) == FLASH_IER_AUTHIE_Msk);
- }
- /**
- * @brief Flash key error interrupt enable
- * @rmtoll IER KEYIE FL_FLASH_EnableIT_KeyError
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_EnableIT_KeyError(FLASH_Type *FLASHx)
- {
- SET_BIT(FLASHx->IER, FLASH_IER_KEYIE_Msk);
- }
- /**
- * @brief Flash key error interrupt disable
- * @rmtoll IER KEYIE FL_FLASH_DisableIT_KeyError
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_DisableIT_KeyError(FLASH_Type *FLASHx)
- {
- CLEAR_BIT(FLASHx->IER, FLASH_IER_KEYIE_Msk);
- }
- /**
- * @brief Get Flash key error interrupt enable status
- * @rmtoll IER KEYIE FL_FLASH_IsEnabledIT_KeyError
- * @param FLASHx FLASH instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_FLASH_IsEnabledIT_KeyError(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->IER, FLASH_IER_KEYIE_Msk) == FLASH_IER_KEYIE_Msk);
- }
- /**
- * @brief Erase/Program clock error interrupt enable
- * @rmtoll IER CKIE FL_FLASH_EnableIT_ClockError
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_EnableIT_ClockError(FLASH_Type *FLASHx)
- {
- SET_BIT(FLASHx->IER, FLASH_IER_CKIE_Msk);
- }
- /**
- * @brief Erase/Program clock error interrupt disable
- * @rmtoll IER CKIE FL_FLASH_DisableIT_ClockError
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_DisableIT_ClockError(FLASH_Type *FLASHx)
- {
- CLEAR_BIT(FLASHx->IER, FLASH_IER_CKIE_Msk);
- }
- /**
- * @brief Get Erase/Program clock error interrupt enable status
- * @rmtoll IER CKIE FL_FLASH_IsEnabledIT_ClockError
- * @param FLASHx FLASH instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_FLASH_IsEnabledIT_ClockError(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->IER, FLASH_IER_CKIE_Msk) == FLASH_IER_CKIE_Msk);
- }
- /**
- * @brief Program done interrupt enable
- * @rmtoll IER PRDIE FL_FLASH_EnableIT_ProgramComplete
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_EnableIT_ProgramComplete(FLASH_Type *FLASHx)
- {
- SET_BIT(FLASHx->IER, FLASH_IER_PRDIE_Msk);
- }
- /**
- * @brief Program done interrupt disable
- * @rmtoll IER PRDIE FL_FLASH_DisableIT_ProgramComplete
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_DisableIT_ProgramComplete(FLASH_Type *FLASHx)
- {
- CLEAR_BIT(FLASHx->IER, FLASH_IER_PRDIE_Msk);
- }
- /**
- * @brief Get program done interrupt enable status
- * @rmtoll IER PRDIE FL_FLASH_IsEnabledIT_ProgramComplete
- * @param FLASHx FLASH instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_FLASH_IsEnabledIT_ProgramComplete(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->IER, FLASH_IER_PRDIE_Msk) == FLASH_IER_PRDIE_Msk);
- }
- /**
- * @brief Erase done interrupt enable
- * @rmtoll IER ERDIE FL_FLASH_EnableIT_EraseComplete
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_EnableIT_EraseComplete(FLASH_Type *FLASHx)
- {
- SET_BIT(FLASHx->IER, FLASH_IER_ERDIE_Msk);
- }
- /**
- * @brief Erase done interrupt disable
- * @rmtoll IER ERDIE FL_FLASH_DisableIT_EraseComplete
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_DisableIT_EraseComplete(FLASH_Type *FLASHx)
- {
- CLEAR_BIT(FLASHx->IER, FLASH_IER_ERDIE_Msk);
- }
- /**
- * @brief Get erase done interrupt enable status
- * @rmtoll IER ERDIE FL_FLASH_IsEnabledIT_EraseComplete
- * @param FLASHx FLASH instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_FLASH_IsEnabledIT_EraseComplete(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->IER, FLASH_IER_ERDIE_Msk) == FLASH_IER_ERDIE_Msk);
- }
- /**
- * @brief Get flash key status
- * @rmtoll ISR KEYSTA FL_FLASH_GetFlashLockStatus
- * @param FLASHx FLASH instance
- * @retval Returned value can be one of the following values:
- * @arg @ref FL_FLASH_KEY_STATUS_LOCK
- * @arg @ref FL_FLASH_KEY_STATUS_PAGE_ERASE
- * @arg @ref FL_FLASH_KEY_STATUS_PROGRAM
- * @arg @ref FL_FLASH_KEY_STATUS_ERROR
- * @arg @ref FL_FLASH_KEY_STATUS_SECTOR_ERASE
- */
- __STATIC_INLINE uint32_t FL_FLASH_GetFlashLockStatus(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->ISR, FLASH_ISR_KEYSTA_Msk));
- }
- /**
- * @brief Get BootSwap
- register value
- * @rmtoll ISR BTSF FL_FLASH_GetFlashSwapStatus
- * @param FLASHx FLASH instance
- * @retval Returned value can be one of the following values:
- * @arg @ref FL_FLASH_BOOT_SECTOR_0000H_1FFFH
- * @arg @ref FL_FLASH_BOOT_SECTOR_2000H_3FFFH
- */
- __STATIC_INLINE uint32_t FL_FLASH_GetFlashSwapStatus(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->ISR, FLASH_ISR_BTSF_Msk));
- }
- /**
- * @brief Get OTP program Error Flag
- * @rmtoll ISR OPTERR FL_FLASH_IsActiveFlag_OPTProgramError
- * @param FLASHx FLASH instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_FLASH_IsActiveFlag_OPTProgramError(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->ISR, FLASH_ISR_OPTERR_Msk) == (FLASH_ISR_OPTERR_Msk));
- }
- /**
- * @brief Clear OTP program Error Flag
- * @rmtoll ISR OPTERR FL_FLASH_ClearFlag_OPTProgramError
- * @param UARTx UART instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_ClearFlag_OPTProgramError(UART_Type *UARTx)
- {
- WRITE_REG(UARTx->ISR, FLASH_ISR_OPTERR_Msk);
- }
- /**
- * @brief Get Flash Authentication Error Flag
- * @rmtoll ISR AUTHERR FL_FLASH_IsActiveFlag_AuthenticationError
- * @param FLASHx FLASH instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_FLASH_IsActiveFlag_AuthenticationError(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->ISR, FLASH_ISR_AUTHERR_Msk) == (FLASH_ISR_AUTHERR_Msk));
- }
- /**
- * @brief ClearFlash Authentication Error Flag
- * @rmtoll ISR AUTHERR FL_FLASH_ClearFlag_AuthenticationError
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_ClearFlag_AuthenticationError(FLASH_Type *FLASHx)
- {
- WRITE_REG(FLASHx->ISR, FLASH_ISR_AUTHERR_Msk);
- }
- /**
- * @brief Get Flash Key Error Flag
- * @rmtoll ISR KEYERR FL_FLASH_IsActiveFlag_KeyError
- * @param FLASHx FLASH instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_FLASH_IsActiveFlag_KeyError(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->ISR, FLASH_ISR_KEYERR_Msk) == (FLASH_ISR_KEYERR_Msk));
- }
- /**
- * @brief Clear Flash Key Error Flag
- * @rmtoll ISR KEYERR FL_FLASH_ClearFlag_KeyError
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_ClearFlag_KeyError(FLASH_Type *FLASHx)
- {
- WRITE_REG(FLASHx->ISR, FLASH_ISR_KEYERR_Msk);
- }
- /**
- * @brief Get Erase/Program Clock Error Flag
- * @rmtoll ISR CKERR FL_FLASH_IsActiveFlag_ClockError
- * @param FLASHx FLASH instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_FLASH_IsActiveFlag_ClockError(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->ISR, FLASH_ISR_CKERR_Msk) == (FLASH_ISR_CKERR_Msk));
- }
- /**
- * @brief Clear Erase/Program Clock Error Flag
- * @rmtoll ISR CKERR FL_FLASH_ClearFlag_ClockError
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_ClearFlag_ClockError(FLASH_Type *FLASHx)
- {
- WRITE_REG(FLASHx->ISR, FLASH_ISR_CKERR_Msk);
- }
- /**
- * @brief Get Program Done Flag
- * @rmtoll ISR PRD FL_FLASH_IsActiveFlag_ProgramComplete
- * @param FLASHx FLASH instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_FLASH_IsActiveFlag_ProgramComplete(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->ISR, FLASH_ISR_PRD_Msk) == (FLASH_ISR_PRD_Msk));
- }
- /**
- * @brief Clear Program Done Flag
- * @rmtoll ISR PRD FL_FLASH_ClearFlag_ProgramComplete
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_ClearFlag_ProgramComplete(FLASH_Type *FLASHx)
- {
- WRITE_REG(FLASHx->ISR, FLASH_ISR_PRD_Msk);
- }
- /**
- * @brief Get Erase Done Flag
- * @rmtoll ISR ERD FL_FLASH_IsActiveFlag_EraseComplete
- * @param FLASHx FLASH instance
- * @retval State of bit (1 or 0).
- */
- __STATIC_INLINE uint32_t FL_FLASH_IsActiveFlag_EraseComplete(FLASH_Type *FLASHx)
- {
- return (uint32_t)(READ_BIT(FLASHx->ISR, FLASH_ISR_ERD_Msk) == (FLASH_ISR_ERD_Msk));
- }
- /**
- * @brief Clear Erase Done Flag
- * @rmtoll ISR ERD FL_FLASH_ClearFlag_EraseComplete
- * @param FLASHx FLASH instance
- * @retval None
- */
- __STATIC_INLINE void FL_FLASH_ClearFlag_EraseComplete(FLASH_Type *FLASHx)
- {
- WRITE_REG(FLASHx->ISR, FLASH_ISR_ERD_Msk);
- }
- /**
- * @}
- */
- /** @defgroup FLASH_FL_EF_Init Initialization and de-initialization functions
- * @{
- */
- /**
- * @}
- */
- /** @defgroup FLASH_FL_EF_Operation Opeartion functions
- * @{
- */
- FL_ErrorStatus FL_FLASH_PageErase(FLASH_Type *FLASHx, uint32_t address);
- FL_ErrorStatus FL_FLASH_SectorErase(FLASH_Type *FLASHx, uint32_t address);
- FL_ErrorStatus FL_FLASH_Program_Word(FLASH_Type *FLASHx, uint32_t address, uint32_t data);
- FL_ErrorStatus FL_FLASH_Program_Page(FLASH_Type *FLASHx, uint32_t pageNum, uint32_t *data);
- FL_ErrorStatus FL_FLASH_Program_Sector(FLASH_Type *FLASHx, uint32_t sectorNum, uint32_t *data);
- /**
- * @}
- */
- /**
- * @}
- */
- /**
- * @}
- */
- #ifdef __cplusplus
- }
- #endif
- #endif /* __FM33LC0XX_FL_FLASH_H*/
- /*************************Py_Code_Generator Version: 0.1-0.14-0.2 @ 2020-12-15*************************/
- /*************************(C) COPYRIGHT Fudan Microelectronics **** END OF FILE*************************/
|