1 /**
2   ******************************************************************************
3   * @file    lib_misc.h
4   * @author  Application Team
5   * @version V1.1.0
6   * @date    2019-10-28
7   * @brief   MISC library.
8   ******************************************************************************
9   * @attention
10   *
11   ******************************************************************************
12   */
13 #ifndef __LIB_MISC_H
14 #define __LIB_MISC_H
15 
16 #ifdef __cplusplus
17  extern "C" {
18 #endif
19 
20 #include "target.h"
21 
22 //FlagMask
23 #define MISC_FLAG_LOCKUP    MISC1_SRAMINT_LOCKUP
24 #define MISC_FLAG_PIAC      MISC1_SRAMINT_PIAC
25 #define MISC_FLAG_HIAC      MISC1_SRAMINT_HIAC
26 #define MISC_FLAG_PERR      MISC1_SRAMINT_PERR
27 #define MISC_FLAG_Msk      (MISC_FLAG_LOCKUP | MISC_FLAG_PIAC | MISC_FLAG_HIAC | MISC_FLAG_PERR)
28 
29 //MISC interrupt
30 #define MISC_INT_LOCK       MISC1_SRAMINIT_LOCKIE
31 #define MISC_INT_PIAC       MISC1_SRAMINIT_PIACIE
32 #define MISC_INT_HIAC       MISC1_SRAMINIT_HIACIE
33 #define MISC_INT_PERR       MISC1_SRAMINIT_PERRIE
34 #define MISC_INT_Msk       (MISC_INT_LOCK | MISC_INT_PIAC | MISC_INT_HIAC | MISC_INT_PERR)
35 
36 //IR
37 #define MISC_IREN_TX0       (0x1U << MISC1_IREN_IREN_Pos)
38 #define MISC_IREN_TX1       (0x1U << MISC1_IREN_IREN_Pos)
39 #define MISC_IREN_TX2       (0x1U << MISC1_IREN_IREN_Pos)
40 #define MISC_IREN_TX3       (0x1U << MISC1_IREN_IREN_Pos)
41 #define MISC_IREN_TX4       (0x1U << MISC1_IREN_IREN_Pos)
42 #define MISC_IREN_TX5       (0x1U << MISC1_IREN_IREN_Pos)
43 #define MISC_IREN_Msk      (0x3FUL)
44 
45 /* Private macros ------------------------------------------------------------*/
46 #define IS_MISC_FLAGR(__FLAGR__) (((__FLAGR__) == MISC_FLAG_LOCKUP) ||\
47                                   ((__FLAGR__) == MISC_FLAG_PIAC)   ||\
48                                   ((__FLAGR__) == MISC_FLAG_HIAC)   ||\
49                                   ((__FLAGR__) == MISC_FLAG_PERR))
50 
51 #define IS_MISC_FLAGC(__FLAGC__)  ((((__FLAGC__) & MISC_FLAG_Msk) != 0U) &&\
52                                    (((__FLAGC__) & ~MISC_FLAG_Msk) == 0U))
53 
54 #define IS_MISC_INT(__INT__)  ((((__INT__) & MISC_INT_Msk) != 0U) &&\
55                                (((__INT__) &~MISC_INT_Msk) == 0U))
56 
57 #define IS_MISC_IREN(__IREN__)  ((((__IREN__) & MISC_IREN_Msk) != 0U) &&\
58                                  (((__IREN__) & ~MISC_IREN_Msk) == 0U))
59 
60 /****************************** MISC Instances ********************************/
61 #define IS_MISC_ALL_INSTANCE(INSTANCE) ((INSTANCE) == MISC1)
62 
63 #define IS_MISC2_ALL_INSTANCE(INSTANCE) ((INSTANCE) == MISC2)
64 
65 /* Exported Functions ------------------------------------------------------- */
66 uint8_t MISC_GetFlag(uint32_t FlagMask);
67 void MISC_ClearFlag(uint32_t FlagMask);
68 void MISC_INTConfig(uint32_t INTMask, uint32_t NewState);
69 void MISC_SRAMParityCmd(uint32_t NewState);
70 uint32_t MISC_GetSRAMPEAddr(void);
71 uint32_t MISC_GetAPBErrAddr(void);
72 uint32_t MISC_GetAHBErrAddr(void);
73 void MISC_IRCmd(uint32_t IRx, uint32_t NewState);
74 void MISC_IRDutyConfig(uint16_t DutyHigh, uint16_t DutyLow);
75 void MISC_HardFaultCmd(uint32_t NewState);
76 void MISC_LockResetCmd(uint32_t NewState);
77 void MISC_IRQLATConfig(uint8_t Latency);
78 
79 #ifdef __cplusplus
80 }
81 #endif
82 
83 #endif  /* __LIB_MISC_H */
84 
85 /*********************************** END OF FILE ******************************/
86