G32R430 Device Driver Layer v1.0.4
G32R4xx Device Driver Layer API Reference
g32r4xx_ddl_flash.h
Go to the documentation of this file.
1
41
42/* Define to prevent recursive inclusion -------------------------------------*/
43#ifndef G32R4xx_DDL_FLASH_H
44#define G32R4xx_DDL_FLASH_H
45
46#ifdef __cplusplus
47extern "C" {
48#endif
49
50/* Includes ------------------------------------------------------------------*/
51#include "g32r4xx.h"
52
56
57#if defined (FLASH)
58
62
63/* Private types -------------------------------------------------------------*/
64/* Private variables ---------------------------------------------------------*/
65
66/* Private constants ---------------------------------------------------------*/
70
74#define FLASH_DDL_WAIT_PERIOD_0 (0x00000000UL)
75#define FLASH_DDL_WAIT_PERIOD_1 (FLASH_CR2_RDWAIT_0)
76#define FLASH_DDL_WAIT_PERIOD_2 (FLASH_CR2_RDWAIT_1)
77#define FLASH_DDL_WAIT_PERIOD_3 (FLASH_CR2_RDWAIT_1 | FLASH_CR2_RDWAIT_0)
78#define FLASH_DDL_WAIT_PERIOD_4 (FLASH_CR2_RDWAIT_2)
79#define FLASH_DDL_WAIT_PERIOD_5 (FLASH_CR2_RDWAIT_2 | FLASH_CR2_RDWAIT_0)
80#define FLASH_DDL_WAIT_PERIOD_6 (FLASH_CR2_RDWAIT_2 | FLASH_CR2_RDWAIT_1)
81#define FLASH_DDL_WAIT_PERIOD_7 (FLASH_CR2_RDWAIT_2 | FLASH_CR2_RDWAIT_1 | FLASH_CR2_RDWAIT_0)
82#define FLASH_DDL_WAIT_PERIOD_8 (FLASH_CR2_RDWAIT_3)
83#define FLASH_DDL_WAIT_PERIOD_9 (FLASH_CR2_RDWAIT_3 | FLASH_CR2_RDWAIT_0)
84#define FLASH_DDL_WAIT_PERIOD_10 (FLASH_CR2_RDWAIT_3 | FLASH_CR2_RDWAIT_1)
85#define FLASH_DDL_WAIT_PERIOD_11 (FLASH_CR2_RDWAIT_3 | FLASH_CR2_RDWAIT_1 | FLASH_CR2_RDWAIT_0)
86#define FLASH_DDL_WAIT_PERIOD_12 (FLASH_CR2_RDWAIT_3 | FLASH_CR2_RDWAIT_2)
87#define FLASH_DDL_WAIT_PERIOD_13 (FLASH_CR2_RDWAIT_3 | FLASH_CR2_RDWAIT_2 | FLASH_CR2_RDWAIT_0)
88#define FLASH_DDL_WAIT_PERIOD_14 (FLASH_CR2_RDWAIT_3 | FLASH_CR2_RDWAIT_2 | FLASH_CR2_RDWAIT_1)
89#define FLASH_DDL_WAIT_PERIOD_15 (FLASH_CR2_RDWAIT_3 | FLASH_CR2_RDWAIT_2 | FLASH_CR2_RDWAIT_1 | FLASH_CR2_RDWAIT_0)
90
94
98#define FLASH_DDL_MAIN_LOCK (FLASH_SR_MAINUNLOCK)
99#define FLASH_DDL_MAIN_KEY1 (0x96969696UL)
100#define FLASH_DDL_MAIN_KEY2 (0x3C3C3C3CUL)
101
102#define FLASH_DDL_OPT_LOCK (FLASH_SR_OPUNLOCK)
103#define FLASH_DDL_OPT_KEY1 (0xAAAABBBBUL)
104#define FLASH_DDL_OPT_KEY2 (0x44556677UL)
105
109
113#define FLASH_DDL_CHIP_ERASE_TYPE_SECTOR (0x00000000UL)
114#define FLASH_DDL_CHIP_ERASE_TYPE_BLOCK (FLASH_CR1_ERTYPE_0)
115#define FLASH_DDL_CHIP_ERASE_TYPE_MAIN (FLASH_CR1_ERTYPE_1 | FLASH_CR1_ERTYPE_0)
116
120
124#define DDL_FLASH_READ_PROTECTION_LEVEL_0 ((0xAAUL << FLASH_OBCR1_RDPWBF_Pos) & FLASH_OBCR1_RDPWBF_Msk)
125#define DDL_FLASH_READ_PROTECTION_LEVEL_1 ((0xBBUL << FLASH_OBCR1_RDPWBF_Pos) & FLASH_OBCR1_RDPWBF_Msk)
126#define DDL_FLASH_READ_PROTECTION_LEVEL_2 ((0xCCUL << FLASH_OBCR1_RDPWBF_Pos) & FLASH_OBCR1_RDPWBF_Msk)
127
128#define DDL_FLASH_WRITE_PROTECTION_ENABLE (FLASH_OBCR1_WLOCKENBF)
129#define DDL_FLASH_WRITE_PROTECTION_DISABLE (0x00000000UL)
130
131#define DDL_FLASH_IWDT_ENABLE_SOFTWARE (FLASH_OBCR1_IWDTSWBF)
132#define DDL_FLASH_IWDT_ENABLE_HARDWARE (0x00000000UL)
133
134#define DDL_FLASH_WWDT_ENABLE_SOFTWARE (FLASH_OBCR1_WWDTSWBF)
135#define DDL_FLASH_WWDT_ENABLE_HARDWARE (0x00000000UL)
136
137#define DDL_FLASH_NMI_ENABLE (FLASH_OBCR1_NMIDISWBF)
138#define DDL_FLASH_NMI_DISABLE (0x00000000UL)
139
140#define DDL_FLASH_ADC_TRIM_SOFTWARE (0x00000000)
141#define DDL_FLASH_ADC_TRIM_HARDWARE FLASH_OBCR1_ADTSLOADWBF
142
143#define DDL_FLASH_SECTOR_NONE (0x00000000)
144#define DDL_FLASH_SECTOR_0_31 (FLASH_OBCR1_WLOCKBF_0)
145#define DDL_FLASH_SECTOR_32_63 (FLASH_OBCR1_WLOCKBF_1)
146#define DDL_FLASH_SECTOR_64_95 (FLASH_OBCR1_WLOCKBF_2)
147#define DDL_FLASH_SECTOR_96_127 (FLASH_OBCR1_WLOCKBF_3)
148#define DDL_FLASH_SECTOR_128_159 (FLASH_OBCR1_WLOCKBF_4)
149#define DDL_FLASH_SECTOR_160_191 (FLASH_OBCR1_WLOCKBF_5)
150#define DDL_FLASH_SECTOR_192_223 (FLASH_OBCR1_WLOCKBF_6)
151#define DDL_FLASH_SECTOR_224_255 (FLASH_OBCR1_WLOCKBF_7)
152
156
160
161#define DDL_FLASH_CACHE_PRELOAD_ENABLE FLASH_CR2_PREFETCHEN
162#define DDL_FLASH_CACHE_PRELOAD_DISABLE (0x00000000UL)
163
167
171#define FLASH_SECTOR_SIZE (512UL)
172#define FLASH_MAIN_SIZE (256UL * FLASH_SECTOR_SIZE)
173
174#define FLASH_SYSTEMINFO_BASE (0x08020000UL)
175#define FLASH_MAIN_BASE (0x08000000UL)
176
180
184
185/* Exported types ------------------------------------------------------------*/
186#if defined(USE_FULL_DDL_DRIVER)
190
194typedef struct
195{
196 uint32_t readProtectionLevel; /* Read Protection Level
197 * @arg @ref DDL_FLASH_READ_PROTECTION_LEVEL_0
198 * @arg @ref DDL_FLASH_READ_PROTECTION_LEVEL_1
199 * @arg @ref DDL_FLASH_READ_PROTECTION_LEVEL_2 */
200
201 uint32_t iwdtSoftwareEnable; /* IWDT software enabled.
202 * @arg @ref DDL_FLASH_IWDT_ENABLE_HARDWARE
203 * @arg @ref DDL_FLASH_IWDT_ENABLE_SOFTWARE */
204
205 uint32_t wwdtSoftwareEnable; /* WWDT software enabled.
206 * @arg @ref DDL_FLASH_WWDT_ENABLE_HARDWARE
207 * @arg @ref DDL_FLASH_WWDT_ENABLE_SOFTWARE */
208
209 uint32_t writeProtectionEnable; /* Read Protection enabled
210 * @arg @ref DDL_FLASH_WRITE_PROTECTION_DISABLE
211 * @arg @ref DDL_FLASH_WRITE_PROTECTION_ENABLE */
212
213 uint32_t nmiEnable; /* NMI Pin Enable Configuration
214 * @arg @ref DDL_FLASH_NMI_DISABLE
215 * @arg @ref DDL_FLASH_NMI_ENABLE */
216
217 uint32_t adcTrim; /* ADC TRIM Configuration
218 * @arg @ref DDL_FLASH_ADC_TRIM_SOFTWARE
219 * @arg @ref DDL_FLASH_ADC_TRIM_HARDWARE */
220
221 uint32_t writeProtectionSectors; /* Write-protected sectors.
222 * @arg @ref DDL_FLASH_SECTOR_NONE
223 * @arg @ref DDL_FLASH_SECTOR_0_31
224 * @arg @ref DDL_FLASH_SECTOR_32_63
225 * @arg @ref DDL_FLASH_SECTOR_64_95
226 * @arg @ref DDL_FLASH_SECTOR_96_127
227 * @arg @ref DDL_FLASH_SECTOR_128_159
228 * @arg @ref DDL_FLASH_SECTOR_160_191
229 * @arg @ref DDL_FLASH_SECTOR_192_223
230 * @arg @ref DDL_FLASH_SECTOR_224_255 */
231
232 uint32_t bootAddr; /* Boot Address 0x0000~0xFFFF*/
234
235#endif
236
240
241/* Private macros ------------------------------------------------------------*/
245#define __DDL_FLASH_CALCULATE_BOOT_ADDRESS(__BOOT_ADDR__) \
246 (((__BOOT_ADDR__ & 0x8000UL) << 14UL) | ((__BOOT_ADDR__ & 0x7FFF) << 13UL))
247
248#define __DDL_FLASH_IS_VALID_BOOT_ADDRESS(__TRNS_BOOT_ADDR__) \
249 (((__TRNS_BOOT_ADDR__ >= 0x00100000UL) && (__TRNS_BOOT_ADDR__ <= 0x2000BFFFUL)) ? 1UL : 0UL)
250
251#define __DDL_FLASH_WRITE_TO_ADDRESS(__ADDR__, __DATA__) \
252 (*(uint32_t *)(__ADDR__) = (__DATA__))
253
257
258/* Exported functions --------------------------------------------------------*/
262
266
288__STATIC_INLINE void DDL_FLASH_SetWaitPeriod(uint32_t waitPeriod)
289{
290 MODIFY_REG(FLASH->CR2,
291 FLASH_CR2_RDWAIT, waitPeriod & FLASH_CR2_RDWAIT_Msk);
292}
293
314__STATIC_INLINE uint32_t DDL_FLASH_GetWaitPeriod(void)
315{
316 return (uint32_t)READ_BIT(FLASH->CR2, FLASH_CR2_RDWAIT);
317}
318
323__STATIC_INLINE void DDL_FLASH_MAIN_Lock(void)
324{
325 FLASH->SR = FLASH_DDL_MAIN_LOCK;
326}
327
332__STATIC_INLINE void DDL_FLASH_MAIN_UnLock(void)
333{
334 MODIFY_REG(FLASH->KEY, FLASH_KEY_FKEY, FLASH_DDL_MAIN_KEY1);
335 MODIFY_REG(FLASH->KEY, FLASH_KEY_FKEY, FLASH_DDL_MAIN_KEY2);
336}
337
342__STATIC_INLINE void DDL_FLASH_OPT_Lock(void)
343{
344 FLASH->SR = FLASH_DDL_OPT_LOCK;
345}
346
351__STATIC_INLINE void DDL_FLASH_OPT_UnLock(void)
352{
353 MODIFY_REG(FLASH->OPTKEY, FLASH_OPTKEY_OPTKEY, FLASH_DDL_OPT_KEY1);
354 MODIFY_REG(FLASH->OPTKEY, FLASH_OPTKEY_OPTKEY, FLASH_DDL_OPT_KEY2);
355}
356
360
364
369__STATIC_INLINE void DDL_FLASH_EnableErasure(void)
370{
371 MODIFY_REG(FLASH->CR1, FLASH_CR1_EREQ, FLASH_CR1_EREQ);
372}
373
378__STATIC_INLINE uint32_t DDL_FLASH_ErasureOngoing(void)
379{
380 return (READ_BIT(FLASH->CR1, FLASH_CR1_EREQ) == FLASH_CR1_EREQ) ? 1UL : 0UL;
381}
382
391__STATIC_INLINE void DDL_FLASH_SetErasureType(uint32_t type)
392{
393 MODIFY_REG(FLASH->CR1, FLASH_CR1_ERTYPE, type);
394}
395
403__STATIC_INLINE uint32_t DDL_FLASH_GetErasureType(void)
404{
405 return (uint32_t)READ_BIT(FLASH->CR1, FLASH_CR1_ERTYPE);
406}
407
414__STATIC_INLINE void DDL_FLASH_SetEraseTimeBase(uint32_t timeBase)
415{
416 MODIFY_REG(FLASH->TMCR, FLASH_TMCR_UNIT, timeBase & FLASH_TMCR_UNIT_Msk);
417}
418
424__STATIC_INLINE uint32_t DDL_FLASH_GetEraseTimeBase(void)
425{
426 return (uint32_t)READ_BIT(FLASH->TMCR, FLASH_TMCR_UNIT);
427}
428
432
436
441__STATIC_INLINE void DDL_FLASH_EnableProgram(void)
442{
443 MODIFY_REG(FLASH->CR1, FLASH_CR1_PREQ, FLASH_CR1_PREQ);
444}
445
450__STATIC_INLINE uint32_t DDL_FLASH_ProgramOngoing(void)
451{
452 return (READ_BIT(FLASH->CR1, FLASH_CR1_PREQ) == FLASH_CR1_PREQ) ? 1UL : 0UL;
453}
454
458
462
471__STATIC_INLINE void DDL_FLASH_SetReadProtectionCacheBit(uint32_t level)
472{
473 MODIFY_REG(FLASH->OBCR1, FLASH_OBCR1_RDPWBF, level);
474}
475
483__STATIC_INLINE uint32_t DDL_FLASH_GetReadProtectionCacheBit(void)
484{
485 return (uint32_t)READ_BIT(FLASH->OBCR1, FLASH_OBCR1_RDPWBF);
486}
487
495__STATIC_INLINE uint32_t DDL_FLASH_GetReadProtectionBitInOptionByte(void)
496{
497 return (uint32_t)READ_BIT(FLASH->OBSR1, FLASH_OBSR1_RDP);
498}
499
507__STATIC_INLINE void DDL_FLASH_SetWriteProtectionEnableCacheBit(uint32_t isEnabled)
508{
509 MODIFY_REG(FLASH->OBCR1, FLASH_OBCR1_WLOCKENBF, isEnabled);
510}
511
518__STATIC_INLINE uint32_t DDL_FLASH_GetWriteProtectionEnableCacheBit(void)
519{
520 return (uint32_t)READ_BIT(FLASH->OBCR1, FLASH_OBCR1_WLOCKENBF);
521}
522
530{
531 return (uint32_t)READ_BIT(FLASH->OBSR1, FLASH_OBSR1_WLOCKEN);
532}
533
548__STATIC_INLINE void DDL_FLASH_SetWriteProtectionCacheBit(uint32_t sectorBlock)
549{
550 MODIFY_REG(FLASH->OBCR1, FLASH_OBCR1_WLOCKBF, ~sectorBlock);
551}
552
566__STATIC_INLINE uint32_t DDL_FLASH_GetWriteProtectionCacheBit(void)
567{
568 return (uint32_t)READ_BIT(FLASH->OBCR1, FLASH_OBCR1_WLOCKBF);
569}
570
585{
586 return (uint32_t)READ_BIT(FLASH->OBSR1, FLASH_OBSR1_WLOCK);
587}
588
596__STATIC_INLINE void DDL_FLASH_SetNMIEnableCacheBit(uint32_t nmiEnable)
597{
598 MODIFY_REG(FLASH->OBCR1, FLASH_OBCR1_NMIDISWBF, nmiEnable);
599}
600
607__STATIC_INLINE uint32_t DDL_FLASH_GetNMIEnableCacheBit(void)
608{
609 return (uint32_t)READ_BIT(FLASH->OBCR1, FLASH_OBCR1_NMIDISWBF);
610}
611
618__STATIC_INLINE uint32_t DDL_FLASH_GetNMIEnableCacheBitInOptionByte(void)
619{
620 return (uint32_t)READ_BIT(FLASH->OBSR1, FLASH_OBSR1_NMIDIS);
621}
622
630__STATIC_INLINE void DDL_FLASH_SetADCTRIMCacheBit(uint32_t adcTrim)
631{
632 MODIFY_REG(FLASH->OBCR1, FLASH_OBCR1_ADTSLOADWBF, adcTrim);
633}
634
641__STATIC_INLINE uint32_t DDL_FLASH_GetADCTRIMCacheBit(void)
642{
643 return (uint32_t)READ_BIT(FLASH->OBCR1, FLASH_OBCR1_ADTSLOADWBF);
644}
645
652__STATIC_INLINE uint32_t DDL_FLASH_GetADCTRIMCacheBitInOptionByte(void)
653{
654 return (uint32_t)READ_BIT(FLASH->OBSR1, FLASH_OBSR1_ADTSLOAD);
655}
656
664__STATIC_INLINE void DDL_FLASH_SetIWDTTriggerBySoftwareCacheBit(uint32_t isEnabled)
665{
666 MODIFY_REG(FLASH->OBCR1, FLASH_OBCR1_IWDTSWBF, isEnabled);
667}
668
675__STATIC_INLINE uint32_t DDL_FLASH_GetIWDTTriggerBySoftwareCacheBit(void)
676{
677 return (uint32_t)READ_BIT(FLASH->OBCR1, FLASH_OBCR1_IWDTSWBF);
678}
679
687{
688 return (uint32_t)READ_BIT(FLASH->OBSR1, FLASH_OBSR1_IWDTSW);
689}
690
698__STATIC_INLINE void DDL_FLASH_SetWWDTTriggerBySoftwareCacheBit(uint32_t isEnabled)
699{
700 MODIFY_REG(FLASH->OBCR1, FLASH_OBCR1_WWDTSWBF, isEnabled);
701}
702
709__STATIC_INLINE uint32_t DDL_FLASH_GetWWDTTriggerBySoftwareCacheBit(void)
710{
711 return (uint32_t)READ_BIT(FLASH->OBCR1, FLASH_OBCR1_WWDTSWBF);
712}
713
721{
722 return (uint32_t)READ_BIT(FLASH->OBSR1, FLASH_OBSR1_WWDTSW);
723}
724
731__STATIC_INLINE void DDL_FLASH_SetBootAddrCacheBit(uint32_t bootAddr)
732{
733 MODIFY_REG(FLASH->OBCR2, FLASH_OBCR2_BOOTADDRBF, bootAddr);
734}
735
741__STATIC_INLINE uint32_t DDL_FLASH_GetBootAddrCacheBit(void)
742{
743 return (uint32_t)READ_BIT(FLASH->OBCR2, FLASH_OBCR2_BOOTADDRBF);
744}
745
751__STATIC_INLINE uint32_t DDL_FLASH_GetBootAddrInOptionByte(void)
752{
753 return (uint32_t)READ_BIT(FLASH->OBSR2, FLASH_OBSR2_BOOTADDR);
754}
755
762__STATIC_INLINE uint32_t DDL_FLASH_GetBootAddrTransferActualAddress(void)
763{
764 uint32_t bootAddr = (uint32_t)READ_BIT(FLASH->OBSR2, FLASH_OBSR2_BOOTADDR);
765 uint32_t actualAddr = __DDL_FLASH_CALCULATE_BOOT_ADDRESS(bootAddr);
766 return actualAddr;
767}
768
773__STATIC_INLINE void DDL_FLASH_OptionByteUpdate(void)
774{
775 MODIFY_REG(FLASH->OBCR1, FLASH_OBCR1_OPBWREQ, FLASH_OBCR1_OPBWREQ);
776}
777
782__STATIC_INLINE uint32_t DDL_FLASH_OptionByteUpdateOngoing(void)
783{
784 return (READ_BIT(FLASH->OBCR1, FLASH_OBCR1_OPBWREQ) == FLASH_OBCR1_OPBWREQ) ? 1UL : 0UL;
785}
786
791__STATIC_INLINE void DDL_FLASH_OptionByteForcedUpdate(void)
792{
793 MODIFY_REG(FLASH->CR1, FLASH_CR1_OPRELOAD, 0xA5A50000 | FLASH_CR1_OPRELOAD);
794}
795
799
803
808__STATIC_INLINE void DDL_FLASH_CacheReset(void)
809{
810 MODIFY_REG(FLASH->CR2, FLASH_CR2_CACHERST, FLASH_CR2_CACHERST);
811}
812
817__STATIC_INLINE uint32_t DDL_FLASH_CacheResetOngoing(void)
818{
819 return (READ_BIT(FLASH->CR2, FLASH_CR2_CACHERST) == FLASH_CR2_CACHERST) ? 1UL : 0UL;
820}
821
826__STATIC_INLINE void DDL_FLASH_EnableCachePreloadMode(void)
827{
828 MODIFY_REG(FLASH->CR2, FLASH_CR2_PREFETCHEN, DDL_FLASH_CACHE_PRELOAD_ENABLE);
829}
830
835__STATIC_INLINE void DDL_FLASH_DisableCachePreloadMode(void)
836{
837 MODIFY_REG(FLASH->CR2, FLASH_CR2_PREFETCHEN, DDL_FLASH_CACHE_PRELOAD_DISABLE);
838}
839
844__STATIC_INLINE uint32_t DDL_FLASH_CachePreloadModeIsEnabled(void)
845{
846 return (READ_BIT(FLASH->CR2, FLASH_CR2_PREFETCHEN) == DDL_FLASH_CACHE_PRELOAD_ENABLE) ? 1UL : 0UL;
847}
848
852
856
861__STATIC_INLINE void DDL_FLASH_EnableIT_ERR(void)
862{
863 SET_BIT(FLASH->CR1, FLASH_CR1_ERRIE);
864}
865
870__STATIC_INLINE void DDL_FLASH_DisableIT_ERR(void)
871{
872 CLEAR_BIT(FLASH->CR1, FLASH_CR1_ERRIE);
873}
874
880__STATIC_INLINE uint32_t DDL_FLASH_IsEnabledIT_ERR(void)
881{
882 return ((READ_BIT(FLASH->CR1, FLASH_CR1_ERRIE) == (FLASH_CR1_ERRIE)) ? 1UL : 0UL);
883}
884
889__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_WADRERR(void)
890{
891 return ((READ_BIT(FLASH->SR, FLASH_SR_WADRERR) == (FLASH_SR_WADRERR)) ? 1UL : 0UL);
892}
893
898__STATIC_INLINE void DDL_FLASH_ClearFlag_WADRERR(void)
899{
900 FLASH->SR = FLASH_SR_WADRERR;
901}
902
907__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_WRPRTERR(void)
908{
909 return ((READ_BIT(FLASH->SR, FLASH_SR_WRPRTERR) == (FLASH_SR_WRPRTERR)) ? 1UL : 0UL);
910}
911
916__STATIC_INLINE void DDL_FLASH_ClearFlag_WRPRTERR(void)
917{
918 FLASH->SR = FLASH_SR_WRPRTERR;
919}
920
925__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_KEYERR(void)
926{
927 return ((READ_BIT(FLASH->SR, FLASH_SR_KEYERR) == (FLASH_SR_KEYERR)) ? 1UL : 0UL);
928}
929
934__STATIC_INLINE void DDL_FLASH_ClearFlag_KEYERR(void)
935{
936 FLASH->SR = FLASH_SR_KEYERR;
937}
938
943__STATIC_INLINE void DDL_FLASH_EnableIT_EOP(void)
944{
945 SET_BIT(FLASH->CR1, FLASH_CR1_EOPIE);
946}
947
952__STATIC_INLINE void DDL_FLASH_DisableIT_EOP(void)
953{
954 CLEAR_BIT(FLASH->CR1, FLASH_CR1_EOPIE);
955}
956
962__STATIC_INLINE uint32_t DDL_FLASH_IsEnabledIT_EOP(void)
963{
964 return ((READ_BIT(FLASH->CR1, FLASH_CR1_EOPIE) == (FLASH_CR1_EOPIE)) ? 1UL : 0UL);
965}
966
971__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_PRD(void)
972{
973 return ((READ_BIT(FLASH->SR, FLASH_SR_PRD) == (FLASH_SR_PRD)) ? 1UL : 0UL);
974}
975
980__STATIC_INLINE void DDL_FLASH_ClearFlag_PRD(void)
981{
982 FLASH->SR = FLASH_SR_PRD;
983}
984
989__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_ERD(void)
990{
991 return ((READ_BIT(FLASH->SR, FLASH_SR_ERD) == (FLASH_SR_ERD)) ? 1UL : 0UL);
992}
993
998__STATIC_INLINE void DDL_FLASH_ClearFlag_ERD(void)
999{
1000 FLASH->SR = FLASH_SR_ERD;
1001}
1002
1007__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_OPUNLOCK(void)
1008{
1009 return ((READ_BIT(FLASH->SR, FLASH_SR_OPUNLOCK) == (FLASH_SR_OPUNLOCK)) ? 1UL : 0UL);
1010}
1011
1016__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_MAINUNLOCK(void)
1017{
1018 return ((READ_BIT(FLASH->SR, FLASH_SR_MAINUNLOCK) == (FLASH_SR_MAINUNLOCK)) ? 1UL : 0UL);
1019}
1020
1025__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_OPTERR(void)
1026{
1027 return ((READ_BIT(FLASH->SR, FLASH_SR_OPTERR) == (FLASH_SR_OPTERR)) ? 1UL : 0UL);
1028}
1029
1034__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_TRIMERR(void)
1035{
1036 return ((READ_BIT(FLASH->SR, FLASH_SR_TRIMERR) == (FLASH_SR_TRIMERR)) ? 1UL : 0UL);
1037}
1038
1043__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_OPBPRD(void)
1044{
1045 return ((READ_BIT(FLASH->SR, FLASH_SR_OPBPRD) == (FLASH_SR_OPBPRD)) ? 1UL : 0UL);
1046}
1047
1052__STATIC_INLINE void DDL_FLASH_ClearFlag_OPBPRD(void)
1053{
1054 FLASH->SR = FLASH_SR_OPBPRD;
1055}
1056
1061__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_BUSY(void)
1062{
1063 return ((READ_BIT(FLASH->SR, FLASH_SR_BUSY) == (FLASH_SR_BUSY)) ? 1UL : 0UL);
1064}
1065
1076__STATIC_INLINE void DDL_FLASH_ClearFlag_All(void)
1077{
1078 FLASH->SR = (FLASH_SR_ERD | FLASH_SR_PRD | FLASH_SR_KEYERR
1079 | FLASH_SR_WRPRTERR | FLASH_SR_WADRERR | FLASH_SR_OPBPRD);
1080}
1081
1085
1086#if defined(USE_FULL_DDL_DRIVER)
1090void DDL_FLASH_ReadData(uint32_t baseAddr, uint32_t *data, uint32_t length);
1091void DDL_FLASH_WriteData(uint32_t baseAddr, uint32_t *data, uint32_t length);
1092
1093ErrorStatus DDL_FLASH_EraseMain(uint32_t type, uint32_t baseAddr);
1094
1095void DDL_FLASH_OPT_StructInit(DDL_FLASH_OPT_InitTypeDef *FLASH_OPT_InitStruct);
1096ErrorStatus DDL_FLASH_OptionByteProgram(DDL_FLASH_OPT_InitTypeDef* FLASH_OPT_InitStruct);
1097ErrorStatus DDL_FLASH_MainProgram(uint32_t baseAddr, uint32_t *data, uint32_t numWords);
1101#endif /* USE_FULL_DDL_DRIVER */
1102
1106
1110
1111#endif /* defined (FLASH) */
1115
1116#ifdef __cplusplus
1117}
1118#endif
1119
1120#endif
1121
#define DDL_FLASH_CACHE_PRELOAD_ENABLE
#define DDL_FLASH_CACHE_PRELOAD_DISABLE
__STATIC_INLINE uint32_t DDL_FLASH_CachePreloadModeIsEnabled(void)
Get cache preload mode status.
__STATIC_INLINE void DDL_FLASH_DisableCachePreloadMode(void)
Disable cache preload mode.
__STATIC_INLINE void DDL_FLASH_EnableCachePreloadMode(void)
Enable cache preload mode.
__STATIC_INLINE uint32_t DDL_FLASH_CacheResetOngoing(void)
Cache reset.
__STATIC_INLINE void DDL_FLASH_CacheReset(void)
Cache reset.
__STATIC_INLINE uint32_t DDL_FLASH_GetEraseTimeBase(void)
Get chip erasing time base.
__STATIC_INLINE void DDL_FLASH_SetErasureType(uint32_t type)
Types of chip erasure configuration.
__STATIC_INLINE void DDL_FLASH_EnableErasure(void)
Start erasure.
__STATIC_INLINE uint32_t DDL_FLASH_ErasureOngoing(void)
Get erasure status.
__STATIC_INLINE uint32_t DDL_FLASH_GetErasureType(void)
Get the type of configuration chip erasure.
__STATIC_INLINE void DDL_FLASH_SetEraseTimeBase(uint32_t timeBase)
Configuring chip erasing time base.
__STATIC_INLINE void DDL_FLASH_MAIN_Lock(void)
Lock the flash main storage area.
__STATIC_INLINE uint32_t DDL_FLASH_GetWaitPeriod(void)
Get flash wait period.
__STATIC_INLINE void DDL_FLASH_SetWaitPeriod(uint32_t waitPeriod)
Set flash wait period.
__STATIC_INLINE void DDL_FLASH_OPT_UnLock(void)
Unlock the flash sysinfo storage area.
__STATIC_INLINE void DDL_FLASH_MAIN_UnLock(void)
Unlock the flash main storage area.
__STATIC_INLINE void DDL_FLASH_OPT_Lock(void)
Lock the flash opt storage area.
__STATIC_INLINE uint32_t DDL_FLASH_GetBootAddrCacheBit(void)
Get the write cache bit for setting BOOTADDR.
__STATIC_INLINE uint32_t DDL_FLASH_GetBootAddrTransferActualAddress(void)
Retrieve the data in the BOOTADDR option byte, which corresponds to the converted address.
__STATIC_INLINE uint32_t DDL_FLASH_GetWriteProtectionCacheBit(void)
Get write protection cache bit.
__STATIC_INLINE uint32_t DDL_FLASH_GetIWDTTriggerBySoftwareInOptionByte(void)
Get the IWDT software enables in the option byte.
__STATIC_INLINE void DDL_FLASH_OptionByteForcedUpdate(void)
Forced update of the options byte.
__STATIC_INLINE uint32_t DDL_FLASH_OptionByteUpdateOngoing(void)
Byte programming options Status.
__STATIC_INLINE uint32_t DDL_FLASH_GetNMIEnableCacheBit(void)
Get NMI Pin Enable Configuration.
__STATIC_INLINE uint32_t DDL_FLASH_GetADCTRIMCacheBitInOptionByte(void)
Get ADC TRIM Configuration.
__STATIC_INLINE uint32_t DDL_FLASH_GetReadProtectionBitInOptionByte(void)
Get the read protection bit in the option byte.
__STATIC_INLINE uint32_t DDL_FLASH_GetWriteProtectionEnableCacheBit(void)
Get write protection enable cache bit.
__STATIC_INLINE void DDL_FLASH_OptionByteUpdate(void)
Byte programming options.
__STATIC_INLINE uint32_t DDL_FLASH_GetADCTRIMCacheBit(void)
Get ADC TRIM Configuration.
__STATIC_INLINE uint32_t DDL_FLASH_GetWriteProtectionBitInOptionByte(void)
Get the write protection bit in the option byte.
__STATIC_INLINE uint32_t DDL_FLASH_GetWriteProtectionEnableBitInOptionByte(void)
Get the write protection enable bit in the option byte.
__STATIC_INLINE uint32_t DDL_FLASH_GetBootAddrInOptionByte(void)
Get the write cache bit for setting BOOTADDR in Option Byte.
__STATIC_INLINE void DDL_FLASH_SetWriteProtectionCacheBit(uint32_t sectorBlock)
Set write protection cache bit.
__STATIC_INLINE void DDL_FLASH_SetReadProtectionCacheBit(uint32_t level)
Set read protection cache bit.
__STATIC_INLINE uint32_t DDL_FLASH_GetWWDTTriggerBySoftwareInOptionByte(void)
Get the WWDT software enables in the option byte.
__STATIC_INLINE void DDL_FLASH_SetNMIEnableCacheBit(uint32_t nmiEnable)
Set NMI Pin Enable Configuration.
__STATIC_INLINE void DDL_FLASH_SetADCTRIMCacheBit(uint32_t adcTrim)
Set ADC TRIM Configuration.
__STATIC_INLINE void DDL_FLASH_SetIWDTTriggerBySoftwareCacheBit(uint32_t isEnabled)
Set IWDT software enables cache bits.
__STATIC_INLINE uint32_t DDL_FLASH_GetReadProtectionCacheBit(void)
Get read protection cache bit.
__STATIC_INLINE void DDL_FLASH_SetBootAddrCacheBit(uint32_t bootAddr)
Set the write cache bit for setting BOOTADDR.
__STATIC_INLINE uint32_t DDL_FLASH_GetWWDTTriggerBySoftwareCacheBit(void)
Get WWDT software enables cache bits.
__STATIC_INLINE void DDL_FLASH_SetWriteProtectionEnableCacheBit(uint32_t isEnabled)
Set write protection enable cache bit.
__STATIC_INLINE uint32_t DDL_FLASH_GetIWDTTriggerBySoftwareCacheBit(void)
Get IWDT software enables cache bits.
__STATIC_INLINE void DDL_FLASH_SetWWDTTriggerBySoftwareCacheBit(uint32_t isEnabled)
Set WWDT software enables cache bits.
__STATIC_INLINE uint32_t DDL_FLASH_GetNMIEnableCacheBitInOptionByte(void)
Get NMI Pin Enable Configuration.
__STATIC_INLINE void DDL_FLASH_EnableProgram(void)
Start program.
__STATIC_INLINE uint32_t DDL_FLASH_ProgramOngoing(void)
Get program status.
__STATIC_INLINE void DDL_FLASH_DisableIT_ERR(void)
Disable interruption Flash error.
__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_PRD(void)
Programming completed flag.
__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_OPBPRD(void)
The optionbyte programming completion flag.
__STATIC_INLINE void DDL_FLASH_ClearFlag_KEYERR(void)
Clear Flash KEY error flag.
__STATIC_INLINE void DDL_FLASH_EnableIT_ERR(void)
Enable interruption Flash error.
__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_OPTERR(void)
The option_byte does not meet the parity check flag.
__STATIC_INLINE uint32_t DDL_FLASH_IsEnabledIT_EOP(void)
Get state of interruption programming or erase end. (0: interrupt disabled, 1: interrupt enabled).
__STATIC_INLINE void DDL_FLASH_ClearFlag_WRPRTERR(void)
Clear write protection error flag.
__STATIC_INLINE void DDL_FLASH_ClearFlag_PRD(void)
Clear programming completed flag.
__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_MAINUNLOCK(void)
Locking flag for main area.
__STATIC_INLINE void DDL_FLASH_ClearFlag_OPBPRD(void)
Clear optionbyte programming completion flag.
__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_WRPRTERR(void)
Write protection error flag.
__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_KEYERR(void)
Flash KEY error flag.
__STATIC_INLINE void DDL_FLASH_ClearFlag_All(void)
Clear all flag.
__STATIC_INLINE void DDL_FLASH_ClearFlag_WADRERR(void)
Clear the address write error flag.
__STATIC_INLINE void DDL_FLASH_EnableIT_EOP(void)
Enable interruption programming or erase end.
__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_ERD(void)
Erase completed flag.
__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_OPUNLOCK(void)
Locking flag for option byte area.
__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_TRIMERR(void)
Trim check error flag.
__STATIC_INLINE void DDL_FLASH_DisableIT_EOP(void)
Disable interruption programming or erase end.
__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_BUSY(void)
FLASH erasing busy flag.
__STATIC_INLINE uint32_t DDL_FLASH_IsEnabledIT_ERR(void)
Get state of interruption Flash error. (0: interrupt disabled, 1: interrupt enabled).
__STATIC_INLINE uint32_t DDL_FLASH_IsActiveFlag_WADRERR(void)
Incorrect address write flag.
__STATIC_INLINE void DDL_FLASH_ClearFlag_ERD(void)
Clear erase completed flag.
ErrorStatus DDL_FLASH_EraseMain(uint32_t type, uint32_t baseAddr)
Erase the main area of the flash.
void DDL_FLASH_ReadData(uint32_t baseAddr, uint32_t *data, uint32_t length)
Erase the systemInfo area of the flash.
ErrorStatus DDL_FLASH_MainProgram(uint32_t baseAddr, uint32_t *data, uint32_t numWords)
Program the systemInfo area of the flash.
void DDL_FLASH_WriteData(uint32_t baseAddr, uint32_t *data, uint32_t length)
Erase the systemInfo area of the flash.
void DDL_FLASH_OPT_StructInit(DDL_FLASH_OPT_InitTypeDef *FLASH_OPT_InitStruct)
Set each DDL_FLASH_OPT_InitTypeDef field to default value.
ErrorStatus DDL_FLASH_OptionByteProgram(DDL_FLASH_OPT_InitTypeDef *FLASH_OPT_InitStruct)
Flash option byte programming.
#define FLASH_DDL_OPT_LOCK
#define FLASH_DDL_OPT_KEY2
#define FLASH_DDL_MAIN_KEY1
#define FLASH_DDL_MAIN_KEY2
#define FLASH_DDL_OPT_KEY1
#define FLASH_DDL_MAIN_LOCK
#define __DDL_FLASH_CALCULATE_BOOT_ADDRESS(__BOOT_ADDR__)
Flash Options Byte Structure definition.