1 /** 2 ****************************************************************************** 3 * @file lib_misc.c 4 * @author Application Team 5 * @version V4.4.0 6 * @date 2018-09-27 7 * @brief MISC library. 8 ****************************************************************************** 9 * @attention 10 * 11 ****************************************************************************** 12 */ 13 #include "lib_misc.h" 14 15 /** 16 * @brief Get flag status. 17 * @param FlagMask: 18 MISC_FLAG_LOCKUP 19 MISC_FLAG_PIAC 20 MISC_FLAG_HIAC 21 MISC_FLAG_PERR 22 * @retval Flag status. 23 */ MISC_GetFlag(uint32_t FlagMask)24uint8_t MISC_GetFlag(uint32_t FlagMask) 25 { 26 /* Check parameters */ 27 assert_parameters(IS_MISC_FLAGR(FlagMask)); 28 29 if (MISC->SRAMINT&FlagMask) 30 { 31 return 1; 32 } 33 else 34 { 35 return 0; 36 } 37 } 38 39 /** 40 * @brief Clear flag status. 41 * @param FlagMask: can use the ��|�� operator 42 MISC_FLAG_LOCKUP 43 MISC_FLAG_PIAC 44 MISC_FLAG_HIAC 45 MISC_FLAG_PERR 46 * @retval None 47 */ MISC_ClearFlag(uint32_t FlagMask)48void MISC_ClearFlag(uint32_t FlagMask) 49 { 50 /* Check parameters */ 51 assert_parameters(IS_MISC_FLAGC(FlagMask)); 52 53 MISC->SRAMINT = FlagMask; 54 } 55 56 /** 57 * @brief Interrupt configure. 58 * @param INTMask: can use the ��|�� operator 59 MISC_INT_LOCK 60 MISC_INT_PIAC 61 MISC_INT_HIAC 62 MISC_INT_PERR 63 NewState: 64 ENABLE 65 DISABLE 66 * @retval None 67 */ MISC_INTConfig(uint32_t INTMask,uint32_t NewState)68void MISC_INTConfig(uint32_t INTMask, uint32_t NewState) 69 { 70 uint32_t tmp; 71 72 /* Check parameters */ 73 assert_parameters(IS_MISC_INT(INTMask)); 74 assert_parameters(IS_FUNCTIONAL_STATE(NewState)); 75 76 tmp = MISC->SRAMINIT; 77 if (NewState == ENABLE) 78 { 79 tmp |= INTMask; 80 } 81 else 82 { 83 tmp &= ~INTMask; 84 } 85 MISC->SRAMINIT = tmp; 86 } 87 88 /** 89 * @brief sram parity contrl. 90 * @param NewState: 91 ENABLE 92 DISABLE 93 * @retval None 94 */ MISC_SRAMParityCmd(uint32_t NewState)95void MISC_SRAMParityCmd(uint32_t NewState) 96 { 97 /* Check parameters */ 98 assert_parameters(IS_FUNCTIONAL_STATE(NewState)); 99 100 if (NewState == ENABLE) 101 { 102 MISC->SRAMINIT |= MISC_SRAMINIT_PEN; 103 } 104 else 105 { 106 MISC->SRAMINIT &= ~MISC_SRAMINIT_PEN; 107 } 108 } 109 110 /** 111 * @brief Get sram parity error address. 112 * @param None 113 * @retval parity error address. 114 */ MISC_GetSRAMPEAddr(void)115uint32_t MISC_GetSRAMPEAddr(void) 116 { 117 uint32_t tmp; 118 119 tmp = MISC->PARERR; 120 tmp = tmp*4 + 0x20000000; 121 return tmp; 122 } 123 124 /** 125 * @brief Get APB error address. 126 * @param None 127 * @retval APB error address. 128 */ MISC_GetAPBErrAddr(void)129uint32_t MISC_GetAPBErrAddr(void) 130 { 131 uint32_t tmp; 132 133 tmp = MISC->PIADDR; 134 tmp = tmp + 0x40010000; 135 return tmp; 136 } 137 138 /** 139 * @brief Get AHB error address. 140 * @param None 141 * @retval AHB error address. 142 */ MISC_GetAHBErrAddr(void)143uint32_t MISC_GetAHBErrAddr(void) 144 { 145 uint32_t tmp; 146 147 tmp = MISC->HIADDR; 148 tmp = tmp + 0x40000000; 149 return tmp; 150 } 151 152 /** 153 * @brief IR control. 154 * @param IRx: 155 MISC_IREN_TX0 156 MISC_IREN_TX1 157 MISC_IREN_TX2 158 MISC_IREN_TX3 159 MISC_IREN_TX4 160 MISC_IREN_TX5 161 NewState: 162 ENABLE 163 DISABLE 164 * @retval None 165 */ MISC_IRCmd(uint32_t IRx,uint32_t NewState)166void MISC_IRCmd(uint32_t IRx, uint32_t NewState) 167 { 168 uint32_t tmp; 169 170 /* Check parameters */ 171 assert_parameters(IS_FUNCTIONAL_STATE(NewState)); 172 assert_parameters(IS_MISC_IREN(IRx)); 173 174 tmp = MISC->IREN; 175 if (NewState == ENABLE) 176 { 177 tmp |= IRx; 178 } 179 else 180 { 181 tmp &= ~IRx; 182 } 183 MISC->IREN = tmp; 184 } 185 186 /** 187 * @brief IR duty configure. 188 * @param DutyHigh 189 The high pulse width will be (DUTYH + 1)*APBCLK period. 190 DutyLow 191 The low pulse width will be (DUTYL + 1)*APBCLK period. 192 * @retval None 193 */ MISC_IRDutyConfig(uint16_t DutyHigh,uint16_t DutyLow)194void MISC_IRDutyConfig(uint16_t DutyHigh, uint16_t DutyLow) 195 { 196 MISC->DUTYH = DutyHigh; 197 MISC->DUTYL = DutyLow; 198 } 199 200 /** 201 * @brief Hardfault generation configure. 202 * @param NewState: 203 ENABLE 204 DISABLE 205 * @retval None 206 */ MISC_HardFaultCmd(uint32_t NewState)207void MISC_HardFaultCmd(uint32_t NewState) 208 { 209 /* Check parameters */ 210 assert_parameters(IS_FUNCTIONAL_STATE(NewState)); 211 212 if (NewState == ENABLE) 213 { 214 MISC->IRQLAT &= ~MISC_IRQLAT_NOHARDFAULT; 215 } 216 else 217 { 218 MISC->IRQLAT |= MISC_IRQLAT_NOHARDFAULT; 219 } 220 } 221 222 /** 223 * @brief Control if the lockup will issue a system reset. 224 * @param NewState: 225 ENABLE 226 DISABLE 227 * @retval None 228 */ MISC_LockResetCmd(uint32_t NewState)229void MISC_LockResetCmd(uint32_t NewState) 230 { 231 /* Check parameters */ 232 assert_parameters(IS_FUNCTIONAL_STATE(NewState)); 233 234 if (NewState == ENABLE) 235 { 236 MISC->IRQLAT |= MISC_IRQLAT_LOCKRESET; 237 } 238 else 239 { 240 MISC->IRQLAT &= ~MISC_IRQLAT_LOCKRESET; 241 } 242 } 243 244 /** 245 * @brief IRQLAT configure. 246 * @param Latency:0~255 247 * @retval None 248 */ MISC_IRQLATConfig(uint8_t Latency)249void MISC_IRQLATConfig(uint8_t Latency) 250 { 251 uint32_t tmp; 252 253 tmp = MISC->IRQLAT; 254 tmp &= ~MISC_IRQLAT_IRQLAT; 255 tmp |= Latency; 256 MISC->IRQLAT = tmp; 257 } 258 259 /*********************************** END OF FILE ******************************/ 260