forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-06-19 6e3f1f560d618b37ee1a47fa2b0f682b70c3ef1c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
/**
  ******************************************************************************
  * @file    fm33a0xxev_flash.h
  * @author  FM33A0XXEV Application Team
  * @version V1.0.0
  * @date    16-April-2020
  * @brief   This file contains all the functions prototypes for the FLASH firmware library.  
  ******************************************************************************
  */
  
/* Define to prevent recursive inclusion -------------------------------------*/
 
#ifndef __FM33A0XXEV_FLASH_H
#define __FM33A0XXEV_FLASH_H
 
 
#ifdef __cplusplus
 extern "C" {
#endif
 
/* Includes ------------------------------------------------------------------*/
 
#include "FM33A0XXEV.h" 
   
#define    FLS_RDCR_WAIT_Pos    0    /* Flash¶ÁµÈ´ýÖÜÆÚÅäÖà(Wait Cycles Config)
00/11£º0 wait cycle
01£º1 wait cycle
10£º2 wait cycles
CPUÖ÷ƵСÓÚµÈÓÚ24MHzʱ£¬²»ÐèÒª¿ªÆôwait£»Ö÷Ƶ´óÓÚ24MСÓÚ48MhzʱʹÄÜ1 wait£¬Ö÷Ƶ´óÓÚ48MhzʱʹÄÜ2 wait */
#define    FLS_RDCR_WAIT_Msk    (0x3U << FLS_RDCR_WAIT_Pos)
#define    FLS_RDCR_WAIT_0CYCLE    (0x0U << FLS_RDCR_WAIT_Pos)    /* 0 wait cycle */
#define    FLS_RDCR_WAIT_1CYCLE    (0x1U << FLS_RDCR_WAIT_Pos)    /* 1 wait cycle */
#define    FLS_RDCR_WAIT_2CYCLE    (0x2U << FLS_RDCR_WAIT_Pos)    /* 2 wait cycles */
 
#define    FLS_PFCR_PRFTEN_Pos    0    /* Ö¸ÁîԤȡָʹÄÜ£¬ÔÚWAIT==00µÄÇé¿öÏÂд1ÎÞЧ (Prefetch Enable)
1£ºÊ¹ÄÜPrefetch
0£º½ûÖ¹Prefetch */
#define    FLS_PFCR_PRFTEN_Msk    (0x1U << FLS_PFCR_PRFTEN_Pos)
    /* Ê¹ÄÜPrefetch */
    /* ½ûÖ¹Prefetch */
 
#define    FLS_OPTBR_DBGCFGEN_Pos    31    
#define    FLS_OPTBR_DBGCFGEN_Msk    (0x1U << FLS_OPTBR_DBGCFGEN_Pos)
 
#define    FLS_OPTBR_IF2LOCK_Pos    18    /* Information2ÇøËø¶¨±êÖ¾ (IF2 Lock Enable)
0£ºÎ´Ëø¶¨
1£ºÒÑËø¶¨£¬Ëø¶¨ºóÈí¼þ²»¿É¸Äд±¾ÉÈÇø */
#define    FLS_OPTBR_IF2LOCK_Msk    (0x1U << FLS_OPTBR_IF2LOCK_Pos)
 
#define    FLS_OPTBR_IF1LOCK_Pos    17    /* Information1ÇøËø¶¨±êÖ¾ (IF1 Lock Enable)
0£ºÎ´Ëø¶¨
1£ºÒÑËø¶¨£¬Ëø¶¨ºóÈí¼þ²»¿É¸Äд±¾ÉÈÇø */
#define    FLS_OPTBR_IF1LOCK_Msk    (0x1U << FLS_OPTBR_IF1LOCK_Pos)
 
#define    FLS_OPTBR_DFLSEN_Pos    10    /* DataFlashʹÄÜ (DataFlash Enable)
0£ºÎÞdata flash
1£ºÓÐdata flash */
#define    FLS_OPTBR_DFLSEN_Msk    (0x1U << FLS_OPTBR_DFLSEN_Pos)
    /* ÎÞdata flash */
    /* ÓÐdata flash */
 
#define    FLS_OPTBR_BTSEN_Pos    8    /* BootSwap¹¦ÄÜʹÄÜ (BootSwap Enable)
00/01/11£º½ûÖ¹BootSwap¹¦ÄÜ
10£ºÔÊÐíBootSwap */
#define    FLS_OPTBR_BTSEN_Msk    (0x3U << FLS_OPTBR_BTSEN_Pos)
    /* ½ûÖ¹BootSwap¹¦ÄÜ */
    /* ½ûÖ¹BootSwap¹¦ÄÜ */
    /* ½ûÖ¹BootSwap¹¦ÄÜ */
    /* ÔÊÐíBootSwap */
 
#define    FLS_OPTBR_ACLOCKEN_Pos    4    /* Ó¦ÓôúÂëȨÏÞËø¶¨Ê¹ÄÜ (AppCode Lock Enable)
00/01/11£ºACLOCK²»Ê¹ÄÜ
10£ºACLOCKʹÄÜ */
#define    FLS_OPTBR_ACLOCKEN_Msk    (0x3U << FLS_OPTBR_ACLOCKEN_Pos)
    /* ACLOCK²»Ê¹ÄÜ */
    /* ACLOCK²»Ê¹ÄÜ */
    /* ACLOCK²»Ê¹ÄÜ */
    /* ACLOCKʹÄÜ */
 
#define    FLS_OPTBR_DBRDPEN_Pos    0    /* Debug Port¶ÁÈ¡±£»¤Ê¹ÄÜ (Debug Read Protection Enable)
00/01/11£ºDBRDP²»Ê¹ÄÜ
10£ºDBRDPʹÄÜ */
#define    FLS_OPTBR_DBRDPEN_Msk    (0xfU << FLS_OPTBR_DBRDPEN_Pos)
    /* DBRDP²»Ê¹ÄÜ */
    /* DBRDP²»Ê¹ÄÜ */
    /* DBRDP²»Ê¹ÄÜ */
    /* DBRDPʹÄÜ */
 
#define    FLS_OPTBR_LOCK1_Pos    0    /* ACLOCKÅäÖüĴæÆ÷µÍ32bit£¬·Ö±ðÓÃÓÚ¿ØÖÆBlock15~Block0µÄÓ¦ÓôúÂë¶ÁÐ´Ëø¶¨¡£Ã¿¸öBlock´óСΪ8KB£¬Ã¿¸öBlockʹÓÃ2bit½øÐÐȨÏÞ¿ØÖÆ¡£ */
#define    FLS_OPTBR_LOCK1_Msk    (0xffffffffU << FLS_OPTBR_LOCK1_Pos)
 
#define    FLS_OPTBR_LOCK2_Pos    0    /* ACLOCKÅäÖüĴæÆ÷¸ß32bit£¬·Ö±ðÓÃÓÚ¿ØÖÆBlock31~Block16µÄÓ¦ÓôúÂë¶ÁÐ´Ëø¶¨¡£Ã¿¸öBlock´óСΪ8KB£¬Ã¿¸öBlockʹÓÃ2bit½øÐÐȨÏÞ¿ØÖÆ */
#define    FLS_OPTBR_LOCK2_Msk    (0xffffffffU << FLS_OPTBR_LOCK2_Pos)
 
#define    FLS_OPTBR_LOCK3_Pos    0    /* ACLOCKÅäÖüĴæÆ÷¸ß32bit£¬·Ö±ðÓÃÓÚ¿ØÖÆBlock31~Block16µÄÓ¦ÓôúÂë¶ÁÐ´Ëø¶¨¡£Ã¿¸öBlock´óСΪ8KB£¬Ã¿¸öBlockʹÓÃ2bit½øÐÐȨÏÞ¿ØÖÆ */
#define    FLS_OPTBR_LOCK3_Msk    (0xffffffffU << FLS_OPTBR_LOCK3_Pos)
 
#define    FLS_OPTBR_LOCK4_Pos    0    /* ACLOCKÅäÖüĴæÆ÷¸ß32bit£¬·Ö±ðÓÃÓÚ¿ØÖÆBlock31~Block16µÄÓ¦ÓôúÂë¶ÁÐ´Ëø¶¨¡£Ã¿¸öBlock´óСΪ8KB£¬Ã¿¸öBlockʹÓÃ2bit½øÐÐȨÏÞ¿ØÖÆ */
#define    FLS_OPTBR_LOCK4_Msk    (0xffffffffU << FLS_OPTBR_LOCK4_Pos)
 
#define    FLS_EPCR_ERTYPE_Pos    8    /* Flash²Á³ýÀàÐÍÅäÖà(Erase Type)
00/11£ºPage Erase
01£ºSector Erase
10£ºChip Erase (SWD only) */
#define    FLS_EPCR_ERTYPE_Msk    (0x3U << FLS_EPCR_ERTYPE_Pos)
#define    FLS_EPCR_ERTYPE_PAGE    (0x0U << FLS_EPCR_ERTYPE_Pos)    /* Page Erase */
#define    FLS_EPCR_ERTYPE_SECTOR    (0x1U << FLS_EPCR_ERTYPE_Pos)    /* Sector Erase */
#define    FLS_EPCR_ERTYPE_CHIP_ERASE    (0x2U << FLS_EPCR_ERTYPE_Pos)    /* Chip Erase (SWD only) */
 
#define    FLS_EPCR_PREQ_Pos    1    /* Program Request
Èí¼þÖÃλ£¬Ó²¼þÍê³É±à³Ìºó×Ô¶¯ÇåÁã */
#define    FLS_EPCR_PREQ_Msk    (0x1U << FLS_EPCR_PREQ_Pos)
 
#define    FLS_EPCR_EREQ_Pos    0    /* Erase Request
Èí¼þÖÃλ£¬Ó²¼þÍê³É²Á³ýºó×Ô¶¯ÇåÁã */
#define    FLS_EPCR_EREQ_Msk    (0x1U << FLS_EPCR_EREQ_Pos)
 
#define    FLS_KEY_KEY_Pos    0    /* Flash²ÁдKeyÊäÈë¼Ä´æÆ÷£¬Èí¼þ»òÕßSWDÔÚÆô¶¯²Áдǰ±ØÐëÕýÈ·µØÏò´ËµØÖ·Ð´ÈëºÏ·¨KEYÐòÁС£ (Flash Key) */
#define    FLS_KEY_KEY_Msk    (0xffffffffU << FLS_KEY_KEY_Pos)
 
#define    FLS_IER_OTPIE_Pos    11    /* OTP±à³Ì´íÎóÖжÏʹÄÜ£¬1ÓÐЧ (OTP program error Interrupt Enable) */
#define    FLS_IER_OTPIE_Msk    (0x1U << FLS_IER_OTPIE_Pos)
 
#define    FLS_IER_AUTHIE_Pos    10    /* Flash¶ÁдȨÏÞ´íÎóÖжÏʹÄÜ£¬1ÓÐЧ (Flash Authentication Error Interrupt Enable) */
#define    FLS_IER_AUTHIE_Msk    (0x1U << FLS_IER_AUTHIE_Pos)
 
#define    FLS_IER_KEYIE_Pos    9    /* Flash KEY´íÎóÖжÏʹÄÜ£¬1ÓÐЧ (Flash Key Error Interrupt Enable) */
#define    FLS_IER_KEYIE_Msk    (0x1U << FLS_IER_KEYIE_Pos)
 
#define    FLS_IER_CKIE_Pos    8    /* ²Áд¶¨Ê±Ê±ÖÓ´íÎóÖжÏʹÄÜ£¬1ÓÐЧ (Erase/Program Clock Error Interrupt Enable) */
#define    FLS_IER_CKIE_Msk    (0x1U << FLS_IER_CKIE_Pos)
 
#define    FLS_IER_PRDIE_Pos    1    /* ±à³ÌÍê³É±êÖ¾ÖжÏʹÄÜ£¬1ÓÐЧ (Program Done Interrupt Enable) */
#define    FLS_IER_PRDIE_Msk    (0x1U << FLS_IER_PRDIE_Pos)
 
#define    FLS_IER_ERDIE_Pos    0    /* ²ÁдÍê³É±êÖ¾ÖжÏʹÄÜ£¬1ÓÐЧ (Erase Done Interrupt Enable) */
#define    FLS_IER_ERDIE_Msk    (0x1U << FLS_IER_ERDIE_Pos)
 
#define    FLS_ISR_KEYSTA_Pos    17    /* Flash²ÁдKEYÊäÈë״̬ (Flash Key Status)
000£ºFlashд±£»¤×´Ì¬£¬Î´ÊäÈëKEY
001£ºÈ«²Á½âËø×´Ì¬
010£ºÉÈÇø²Á½âËø×´Ì¬
011£º±à³Ì½âËø×´Ì¬
100£ºKEY´íÎóËø¶¨×´Ì¬£¬ÐèÒª¸´Î»²ÅÄܽâËø
101/110/111£ºRFU */
#define    FLS_ISR_KEYSTA_Msk    (0x7U << FLS_ISR_KEYSTA_Pos)
#define    FLS_ISR_KEYSTA_KEY_NONE_PROTECT    (0x0U << FLS_ISR_KEYSTA_Pos)    /* Flashд±£»¤×´Ì¬£¬Î´ÊäÈëKEY */
#define    FLS_ISR_KEYSTA_CHIP_ERASE    (0x1U << FLS_ISR_KEYSTA_Pos)    /* È«²Á½âËø×´Ì¬ */
#define    FLS_ISR_KEYSTA_SECTOR_ERASE    (0x2U << FLS_ISR_KEYSTA_Pos)    /* ÉÈÇø²Á½âËø×´Ì¬ */
#define    FLS_ISR_KEYSTA_PROGRAM    (0x3U << FLS_ISR_KEYSTA_Pos)    /* ±à³Ì½âËø×´Ì¬ */
#define    FLS_ISR_KEYSTA_KEY_ERR_PROTECT    (0x4U << FLS_ISR_KEYSTA_Pos)    /* KEY´íÎóËø¶¨×´Ì¬£¬ÐèÒª¸´Î»²ÅÄܽâËø */
 
#define    FLS_ISR_BTSF_Pos    16    /* BootSwap±êÖ¾¼Ä´æÆ÷ (BootSwap)
0£ºÆô¶¯³ÌÐòÇøÎªFlashÎïÀíµØÖ·0000H~1FFFH
1£ºÆô¶¯³ÌÐòÇøÎªFlashÎïÀíµØÖ·2000H~3FFFH */
#define    FLS_ISR_BTSF_Msk    (0x1U << FLS_ISR_BTSF_Pos)
#define    FLS_ISR_BTSF_START_0000H    (0x0U << FLS_ISR_BTSF_Pos)    /* Æô¶¯³ÌÐòÇøÎªFlashÎïÀíµØÖ·0000H~1FFFH */
#define    FLS_ISR_BTSF_START_2000H    (0x1U << FLS_ISR_BTSF_Pos)    /* Æô¶¯³ÌÐòÇøÎªFlashÎïÀíµØÖ·2000H~3FFFH */
 
#define    FLS_ISR_OTPERR_Pos    11    /* OTP page±à³ÌȨÏÞ´íÎó£¬Ó²¼þÖÃ룬Èí¼þд1ÇåÁã (OTP program Error Flag. Write 1 to clear)
1£º³¢ÊÔ¶ÔÒѱà³ÌµÄOTP×Ö½Ú½øÐбà³Ì
0£ºÎÞOTP±à³Ì´íÎó */
#define    FLS_ISR_OTPERR_Msk    (0x1U << FLS_ISR_OTPERR_Pos)
 
#define    FLS_ISR_AUTHERR_Pos    10    /* Flash¶ÁдȨÏÞ´íÎ󣬶ÁÈ¡LOCK¿éÊý¾Ý»ò¶ÔLOCK¿é²ÁдʱÖÃ룬Èí¼þд1ÇåÁã¡£(Flash Authentication Error Flag, write 1 to clear)
1£ºFlash·ÃÎÊȨÏÞ´íÎó
0£ºFlash·ÃÎÊûÓз¢ÉúȨÏÞ´íÎó */
#define    FLS_ISR_AUTHERR_Msk    (0x1U << FLS_ISR_AUTHERR_Pos)
 
#define    FLS_ISR_KEYERR_Pos    9    /* Flash KEY´íÎó£¬Ó²¼þÖÃ룬Èí¼þд1ÇåÁã (Flash Key Error Flag, write 1 to clear) */
#define    FLS_ISR_KEYERR_Msk    (0x1U << FLS_ISR_KEYERR_Pos)
 
#define    FLS_ISR_CKERR_Pos    8    /* ²Áд¶¨Ê±Ê±ÖÓ´íÎó£¬NVMIF²ÁдFlashʱÈç¹ûRCHFδʹÄÜ£¬Ôò´¥·¢CKERRÖжϣ¬Èí¼þд1ÇåÁã¡£(Erase/Program Clock Error Flag, write 1 to clear) */
#define    FLS_ISR_CKERR_Msk    (0x1U << FLS_ISR_CKERR_Pos)
 
#define    FLS_ISR_PRD_Pos    1    /* Program Done£¬±à³ÌÍê³É±êÖ¾£¬Ó²¼þÖÃ룬Èí¼þд1ÇåÁã(Program Done Flag,write 1 to clear) */
#define    FLS_ISR_PRD_Msk    (0x1U << FLS_ISR_PRD_Pos)
 
#define    FLS_ISR_ERD_Pos    0    /* Erase Done£¬²ÁдÍê³É±êÖ¾£¬Ó²¼þÖÃ룬Èí¼þд1ÇåÁã(Erase Done Flag,write 1 to clear) */
#define    FLS_ISR_ERD_Msk    (0x1U << FLS_ISR_ERD_Pos)
//Macro_End
 
/* Exported functions --------------------------------------------------------*/ 
extern void FLS_Deinit(void);
 
/* Flash¶ÁµÈ´ýÖÜÆÚÅäÖà(Wait Cycles Config)
00/11£º0 wait cycle
01£º1 wait cycle
10£º2 wait cycles
CPUÖ÷ƵСÓÚµÈÓÚ24MHzʱ£¬²»ÐèÒª¿ªÆôwait£»Ö÷Ƶ´óÓÚ24MСÓÚ48MhzʱʹÄÜ1 wait£¬Ö÷Ƶ´óÓÚ48MhzʱʹÄÜ2 wait Ïà¹Øº¯Êý */
extern void FLS_RDCR_WAIT_Set(uint32_t SetValue);
extern uint32_t FLS_RDCR_WAIT_Get(void);
 
/* Ö¸ÁîԤȡָʹÄÜ£¬ÔÚWAIT==00µÄÇé¿öÏÂд1ÎÞЧ (Prefetch Enable)
1£ºÊ¹ÄÜPrefetch
0£º½ûÖ¹Prefetch Ïà¹Øº¯Êý */
extern void FLS_PFCR_PRFTEN_Setable(FunState NewState);
extern FunState FLS_PFCR_PRFTEN_Getable(void);
 
/* IWDTÔÚÐÝÃßģʽÏÂÊÇ·ñÔÊÐíÓ¦ÓÃÔÝÍ£¼ÆÊý (IWDT Sleep Enable)
1£ºÔÊÐíÓ¦ÓÃÔÚÐÝÃßģʽÏÂÔÝÍ£IWDT¼ÆÊý
0£º½ûÖ¹Ó¦ÓÃÔÚÐÝÃßģʽÏÂÔÝÍ£IWDT¼ÆÊý Ïà¹Øº¯Êý */
extern FunState FLS_OPTBR_IWDTSLP_Getable(void);
 
extern FunState FLS_OPTBR_DBGCFGEN_Chk(void);
 
/* Information2ÇøËø¶¨±êÖ¾ (IF2 Lock Enable)
0£ºÎ´Ëø¶¨
1£ºÒÑËø¶¨£¬Ëø¶¨ºóÈí¼þ²»¿É¸Äд±¾ÉÈÇø Ïà¹Øº¯Êý */
extern FlagStatus FLS_OPTBR_IF2LOCK_Chk(void);
 
/* Information1ÇøËø¶¨±êÖ¾ (IF1 Lock Enable)
0£ºÎ´Ëø¶¨
1£ºÒÑËø¶¨£¬Ëø¶¨ºóÈí¼þ²»¿É¸Äд±¾ÉÈÇø Ïà¹Øº¯Êý */
extern FlagStatus FLS_OPTBR_IF1LOCK_Chk(void);
 
/* DataFlashʹÄÜ (DataFlash Enable)
0£ºÎÞdata flash
1£ºÓÐdata flash Ïà¹Øº¯Êý */
extern FunState FLS_OPTBR_DFLSEN_Getable(void);
 
/* BootSwap¹¦ÄÜʹÄÜ (BootSwap Enable)
00/01/11£º½ûÖ¹BootSwap¹¦ÄÜ
10£ºÔÊÐíBootSwap Ïà¹Øº¯Êý */
extern FunState FLS_OPTBR_BTSEN_Getable(void);
 
/* Ó¦ÓôúÂëȨÏÞËø¶¨Ê¹ÄÜ (AppCode Lock Enable)
00/01/11£ºACLOCK²»Ê¹ÄÜ
10£ºACLOCKʹÄÜ Ïà¹Øº¯Êý */
extern FunState FLS_OPTBR_ACLOCKEN_Getable(void);
 
/* Debug Port¶ÁÈ¡±£»¤Ê¹ÄÜ (Debug Read Protection Enable)
00/01/11£ºDBRDP²»Ê¹ÄÜ
10£ºDBRDPʹÄÜ Ïà¹Øº¯Êý */
extern uint32_t FLS_OPTBR_DBRDPEN_Getable(void);
 
/* Flash²Á³ýÀàÐÍÅäÖà(Erase Type)
00/11£ºPage Erase
01£ºSector Erase
10£ºChip Erase (SWD only) Ïà¹Øº¯Êý */
extern void FLS_EPCR_ERTYPE_Set(uint32_t SetValue);
extern uint32_t FLS_EPCR_ERTYPE_Get(void);
 
/* Program Request
Èí¼þÖÃλ£¬Ó²¼þÍê³É±à³Ìºó×Ô¶¯ÇåÁã Ïà¹Øº¯Êý */
extern void FLS_EPCR_PREQ_Set(uint32_t SetValue);
extern uint32_t FLS_EPCR_PREQ_Get(void);
 
/* Erase Request
Èí¼þÖÃλ£¬Ó²¼þÍê³É²Á³ýºó×Ô¶¯ÇåÁã Ïà¹Øº¯Êý */
extern void FLS_EPCR_EREQ_Set(uint32_t SetValue);
extern uint32_t FLS_EPCR_EREQ_Get(void);
 
/* Flash²ÁдKeyÊäÈë¼Ä´æÆ÷£¬Èí¼þ»òÕßSWDÔÚÆô¶¯²Áдǰ±ØÐëÕýÈ·µØÏò´ËµØÖ·Ð´ÈëºÏ·¨KEYÐòÁС£ (Flash Key) Ïà¹Øº¯Êý */
extern void FLS_KEY_Write(uint32_t SetValue);
 
/* OTP±à³Ì´íÎóÖжÏʹÄÜ£¬1ÓÐЧ (OTP program error Interrupt Enable) Ïà¹Øº¯Êý */
extern void FLS_IER_OTPIE_Setable(FunState NewState);
extern FunState FLS_IER_OTPIE_Getable(void);
 
/* Flash¶ÁдȨÏÞ´íÎóÖжÏʹÄÜ£¬1ÓÐЧ (Flash Authentication Error Interrupt Enable) Ïà¹Øº¯Êý */
extern void FLS_IER_AUTHIE_Setable(FunState NewState);
extern FunState FLS_IER_AUTHIE_Getable(void);
 
/* Flash KEY´íÎóÖжÏʹÄÜ£¬1ÓÐЧ (Flash Key Error Interrupt Enable) Ïà¹Øº¯Êý */
extern void FLS_IER_KEYIE_Setable(FunState NewState);
extern FunState FLS_IER_KEYIE_Getable(void);
 
/* ²Áд¶¨Ê±Ê±ÖÓ´íÎóÖжÏʹÄÜ£¬1ÓÐЧ (Erase/Program Clock Error Interrupt Enable) Ïà¹Øº¯Êý */
extern void FLS_IER_CKIE_Setable(FunState NewState);
extern FunState FLS_IER_CKIE_Getable(void);
 
/* ±à³ÌÍê³É±êÖ¾ÖжÏʹÄÜ£¬1ÓÐЧ (Program Done Interrupt Enable) Ïà¹Øº¯Êý */
extern void FLS_IER_PRDIE_Setable(FunState NewState);
extern FunState FLS_IER_PRDIE_Getable(void);
 
/* ²ÁдÍê³É±êÖ¾ÖжÏʹÄÜ£¬1ÓÐЧ (Erase Done Interrupt Enable) Ïà¹Øº¯Êý */
extern void FLS_IER_ERDIE_Setable(FunState NewState);
extern FunState FLS_IER_ERDIE_Getable(void);
 
/* Flash²ÁдKEYÊäÈë״̬ (Flash Key Status)
000£ºFlashд±£»¤×´Ì¬£¬Î´ÊäÈëKEY
001£ºÈ«²Á½âËø×´Ì¬
010£ºÉÈÇø²Á½âËø×´Ì¬
011£º±à³Ì½âËø×´Ì¬
100£ºKEY´íÎóËø¶¨×´Ì¬£¬ÐèÒª¸´Î»²ÅÄܽâËø
101/110/111£ºRFU Ïà¹Øº¯Êý */
extern uint32_t FLS_ISR_KEYSTA_Get(void);
 
/* BootSwap±êÖ¾¼Ä´æÆ÷ (BootSwap)
0£ºÆô¶¯³ÌÐòÇøÎªFlashÎïÀíµØÖ·0000H~1FFFH
1£ºÆô¶¯³ÌÐòÇøÎªFlashÎïÀíµØÖ·2000H~3FFFH Ïà¹Øº¯Êý */
extern uint32_t FLS_ISR_BTSF_Get(void);
 
/* OTP page±à³ÌȨÏÞ´íÎó£¬Ó²¼þÖÃ룬Èí¼þд1ÇåÁã (OTP program Error Flag. Write 1 to clear)
1£º³¢ÊÔ¶ÔÒѱà³ÌµÄOTP×Ö½Ú½øÐбà³Ì
0£ºÎÞOTP±à³Ì´íÎó Ïà¹Øº¯Êý */
extern void FLS_ISR_OTPERR_Clr(void);
extern FlagStatus FLS_ISR_OTPERR_Chk(void);
 
/* Flash¶ÁдȨÏÞ´íÎ󣬶ÁÈ¡LOCK¿éÊý¾Ý»ò¶ÔLOCK¿é²ÁдʱÖÃ룬Èí¼þд1ÇåÁã¡£(Flash Authentication Error Flag, write 1 to clear)
1£ºFlash·ÃÎÊȨÏÞ´íÎó
0£ºFlash·ÃÎÊûÓз¢ÉúȨÏÞ´íÎó Ïà¹Øº¯Êý */
extern void FLS_ISR_AUTHERR_Clr(void);
extern FlagStatus FLS_ISR_AUTHERR_Chk(void);
 
/* Flash KEY´íÎó£¬Ó²¼þÖÃ룬Èí¼þд1ÇåÁã (Flash Key Error Flag, write 1 to clear) Ïà¹Øº¯Êý */
extern void FLS_ISR_KEYERR_Clr(void);
extern FlagStatus FLS_ISR_KEYERR_Chk(void);
 
/* ²Áд¶¨Ê±Ê±ÖÓ´íÎó£¬NVMIF²ÁдFlashʱÈç¹ûRCHFδʹÄÜ£¬Ôò´¥·¢CKERRÖжϣ¬Èí¼þд1ÇåÁã¡£(Erase/Program Clock Error Flag, write 1 to clear) Ïà¹Øº¯Êý */
extern void FLS_ISR_CKERR_Clr(void);
extern FlagStatus FLS_ISR_CKERR_Chk(void);
 
/* Program Done£¬±à³ÌÍê³É±êÖ¾£¬Ó²¼þÖÃ룬Èí¼þд1ÇåÁã(Program Done Flag,write 1 to clear) Ïà¹Øº¯Êý */
extern void FLS_ISR_PRD_Clr(void);
extern FlagStatus FLS_ISR_PRD_Chk(void);
 
/* Erase Done£¬²ÁдÍê³É±êÖ¾£¬Ó²¼þÖÃ룬Èí¼þд1ÇåÁã(Erase Done Flag,write 1 to clear) Ïà¹Øº¯Êý */
extern void FLS_ISR_ERD_Clr(void);
extern FlagStatus FLS_ISR_ERD_Chk(void);
//Announce_End
#ifdef __cplusplus
}
#endif
 
#endif /* __FM33A0XXEV_FLASH_H */