1 /* Define to prevent recursive inclusion -------------------------------------*/
2 #ifndef __AIR32F10x_OTP_H
3 #define __AIR32F10x_OTP_H
4 
5 #ifdef __cplusplus
6  extern "C" {
7 #endif
8 
9 /* Includes ------------------------------------------------------------------*/
10 #include "air32f10x.h"
11 
12 /** @addtogroup air32f10x_StdPeriph_Driver
13   * @{
14   */
15 
16 /** @addtogroup OTP
17   * @{
18   */
19 
20 #define OTP_PAGE_NUM        (32)
21 #define OTP_POWERON_TIME    (200)
22 
23 enum OTP_ADDRESS{
24     OTP_ADDRESS_0 = 0,
25     OTP_ADDRESS_1,
26     OTP_ADDRESS_2,
27     OTP_ADDRESS_3,
28     OTP_ADDRESS_4,
29     OTP_ADDRESS_5,
30     OTP_ADDRESS_6,
31     OTP_ADDRESS_7,
32     OTP_ADDRESS_8,
33     OTP_ADDRESS_9,
34     OTP_ADDRESS_10,
35     OTP_ADDRESS_11,
36     OTP_ADDRESS_12,
37     OTP_ADDRESS_13,
38     OTP_ADDRESS_14,
39     OTP_ADDRESS_15,
40     OTP_ADDRESS_16,
41     OTP_ADDRESS_17,
42     OTP_ADDRESS_18,
43     OTP_ADDRESS_19,
44     OTP_ADDRESS_20,
45     OTP_ADDRESS_21,
46     OTP_ADDRESS_22,
47     OTP_ADDRESS_23,
48     OTP_ADDRESS_24,
49     OTP_ADDRESS_25,
50     OTP_ADDRESS_26,
51     OTP_ADDRESS_27,
52     OTP_ADDRESS_28,
53     OTP_ADDRESS_29,
54     OTP_ADDRESS_30,
55     OTP_ADDRESS_31,
56 };
57 
58 #define IS_OTP_ADDRESS(ADDRESS)         (((ADDRESS) == OTP_ADDRESS_0) || ((ADDRESS) == OTP_ADDRESS_1) || ((ADDRESS) == OTP_ADDRESS_3) || ((ADDRESS) == OTP_ADDRESS_5) \
59                                         ((ADDRESS) == OTP_ADDRESS_6) || ((ADDRESS) == OTP_ADDRESS_7) || ((ADDRESS) == OTP_ADDRESS_8) || ((ADDRESS) == OTP_ADDRESS_9) \
60                                         ((ADDRESS) == OTP_ADDRESS_10) || ((ADDRESS) == OTP_ADDRESS_11) || ((ADDRESS) == OTP_ADDRESS_12) || ((ADDRESS) == OTP_ADDRESS_13) \
61                                         ((ADDRESS) == OTP_ADDRESS_14) || ((ADDRESS) == OTP_ADDRESS_15) || ((ADDRESS) == OTP_ADDRESS_16) || ((ADDRESS) == OTP_ADDRESS_17) \
62                                         ((ADDRESS) == OTP_ADDRESS_18) || ((ADDRESS) == OTP_ADDRESS_19) || ((ADDRESS) == OTP_ADDRESS_20) || ((ADDRESS) == OTP_ADDRESS_21) \
63                                         ((ADDRESS) == OTP_ADDRESS_22) || ((ADDRESS) == OTP_ADDRESS_23) || ((ADDRESS) == OTP_ADDRESS_24) || ((ADDRESS) == OTP_ADDRESS_25) \
64                                         ((ADDRESS) == OTP_ADDRESS_26) || ((ADDRESS) == OTP_ADDRESS_27) || ((ADDRESS) == OTP_ADDRESS_28) || ((ADDRESS) == OTP_ADDRESS_29) \
65                                         ((ADDRESS) == OTP_ADDRESS_30) || ((ADDRESS) == OTP_ADDRESS_31))
66 
67 
68 void OTP_PowerOn(uint32_t Time);
69 void OTP_PowerOff(void);
70 void OTP_WriteByte(uint8_t Addr,uint8_t Data);
71 void OTP_SetTime(uint16_t Time);
72 
73 #endif
74