1 /* 2 * Copyright 2021 MindMotion Microelectronics Co., Ltd. 3 * All rights reserved. 4 * 5 * SPDX-License-Identifier: BSD-3-Clause 6 */ 7 8 9 #include "hal_syscfg.h" 10 11 #define SYSCFG_EXTICR_MASK(x) ( (0x0Fu) << ( ( (uint32_t)(x) & 0x3u ) << 2u ) ) /* mask bit for clear exti line. */ 12 #define SYSCFG_EXTICR(x, y) ( (uint32_t)( (uint32_t)(x) << ( ( (uint32_t)(y) & 0x3u ) << 2u ) ) ) /* set the data for indicated exti port and line. */ 13 SYSCFG_SetBootMemMode(SYSCFG_BootMemMode_Type mode)14void SYSCFG_SetBootMemMode(SYSCFG_BootMemMode_Type mode) 15 { 16 SYSCFG->CFGR = ( SYSCFG->CFGR & ~ SYSCFG_CFGR_MEMMODE_MASK ) 17 | SYSCFG_CFGR_MEMMODE(mode); 18 } 19 SYSCFG_SetFSMCPinUseMode(SYSCFG_FSMCPinUseMode_Type mode)20void SYSCFG_SetFSMCPinUseMode(SYSCFG_FSMCPinUseMode_Type mode) 21 { 22 SYSCFG->CFGR = ( SYSCFG->CFGR & ~ SYSCFG_CFGR_FCODATAEN_MASK ) 23 | SYSCFG_CFGR_FCODATAEN(mode); 24 } 25 SYSCFG_SetFSMCMode(SYSCFG_FSMCMode_Type mode)26void SYSCFG_SetFSMCMode(SYSCFG_FSMCMode_Type mode) 27 { 28 SYSCFG->CFGR = ( SYSCFG->CFGR & ~ SYSCFG_CFGR_MODESEL_MASK ) 29 | SYSCFG_CFGR_MODESEL(mode); 30 } 31 SYSCFG_SetExtIntMux(SYSCFG_EXTIPort_Type port,SYSCFG_EXTILine_Type line)32void SYSCFG_SetExtIntMux(SYSCFG_EXTIPort_Type port, SYSCFG_EXTILine_Type line) 33 { 34 if ( line < SYSCFG_EXTILine_4) 35 { 36 SYSCFG->EXTICR1 = ( SYSCFG->EXTICR1 & ~ SYSCFG_EXTICR_MASK(line) ) 37 | ( SYSCFG_EXTICR(port, line) ); 38 } 39 else if ( line < SYSCFG_EXTILine_8 ) 40 { 41 SYSCFG->EXTICR2 = ( SYSCFG->EXTICR1 & ~ SYSCFG_EXTICR_MASK(line) ) 42 | ( SYSCFG_EXTICR(port, line) ); 43 } 44 else if ( line < SYSCFG_EXTILine_12 ) 45 { 46 SYSCFG->EXTICR3 = ( SYSCFG->EXTICR1 & ~ SYSCFG_EXTICR_MASK(line) ) 47 | ( SYSCFG_EXTICR(port, line) ); 48 } 49 else 50 { 51 SYSCFG->EXTICR4 = ( SYSCFG->EXTICR1 & ~ SYSCFG_EXTICR_MASK(line) ) 52 | ( SYSCFG_EXTICR(port, line) ); 53 } 54 } 55 SYSCFG_SetI2C0PortMode(SYSCFG_I2CPortMode_Type mode)56void SYSCFG_SetI2C0PortMode(SYSCFG_I2CPortMode_Type mode) 57 { 58 SYSCFG->CFGR2 = ( SYSCFG->CFGR2 & ~ SYSCFG_CFGR2_I2C1MODESEL_MASK ) 59 | SYSCFG_CFGR2_I2C1MODESEL(mode); 60 } 61 SYSCFG_SetI2C1PortMode(SYSCFG_I2CPortMode_Type mode)62void SYSCFG_SetI2C1PortMode(SYSCFG_I2CPortMode_Type mode) 63 { 64 SYSCFG->CFGR2 = ( SYSCFG->CFGR2 & ~ SYSCFG_CFGR2_I2C2MODESEL_MASK ) 65 | SYSCFG_CFGR2_I2C2MODESEL(mode); 66 } 67 SYSCFG_SetENETPortMode(SYSCFG_ENETPortMode_Type mode)68void SYSCFG_SetENETPortMode(SYSCFG_ENETPortMode_Type mode) 69 { 70 SYSCFG->CFGR2 = ( SYSCFG->CFGR2 & ~ SYSCFG_CFGR2_MIIRMIISEL_MASK ) 71 | SYSCFG_CFGR2_MIIRMIISEL(mode); 72 } 73 SYSCFG_SetENETSpeedMode(SYSCFG_ENETSpeedMode_Type mode)74void SYSCFG_SetENETSpeedMode(SYSCFG_ENETSpeedMode_Type mode) 75 { 76 SYSCFG->CFGR2 = ( SYSCFG->CFGR2 & ~ SYSCFG_CFGR2_MACSPDSEL_MASK ) 77 | SYSCFG_CFGR2_MACSPDSEL(mode); 78 } 79 SYSCFG_EnablePVD(SYSCFG_PVDConf_Type * conf)80void SYSCFG_EnablePVD(SYSCFG_PVDConf_Type * conf) 81 { 82 if (conf == NULL) 83 { 84 SYSCFG->PDETCSR &= ~ SYSCFG_PDETCSR_PVDE_MASK; 85 } 86 else 87 { 88 SYSCFG->PDETCSR = ( ( SYSCFG->PDETCSR & ~ ( SYSCFG_PDETCSR_PVDE_MASK 89 | SYSCFG_PDETCSR_PLS_MASK 90 | SYSCFG_PDETCSR_PVDO_MASK 91 ) ) 92 | SYSCFG_PDETCSR_PLS(conf->Thold) 93 | SYSCFG_PDETCSR_PVDO(conf->Output) 94 | SYSCFG_PDETCSR_PVDE_MASK 95 ); 96 97 } 98 } 99 SYSCFG_EnableVDT(SYSCFG_VDTConf_Type * conf)100void SYSCFG_EnableVDT(SYSCFG_VDTConf_Type * conf) 101 { 102 if (conf == NULL) 103 { 104 SYSCFG->PDETCSR &= ~ SYSCFG_PDETCSR_VDTE_MASK; 105 } 106 else 107 { 108 SYSCFG->PDETCSR = ( ( SYSCFG->PDETCSR & ~ ( SYSCFG_PDETCSR_VDTE_MASK 109 | SYSCFG_PDETCSR_VDTLS_MASK 110 | SYSCFG_PDETCSR_VDTO_MASK 111 ) ) 112 | SYSCFG_PDETCSR_VDTLS(conf->Thold) 113 | SYSCFG_PDETCSR_VDTO(conf->Output) 114 | SYSCFG_PDETCSR_VDTE_MASK 115 ); 116 } 117 } 118 SYSCFG_EnableADCCheckVBatDiv3(bool enable)119void SYSCFG_EnableADCCheckVBatDiv3(bool enable) 120 { 121 if (enable) 122 { 123 SYSCFG->PDETCSR |= SYSCFG_PDETCSR_VBATDIV3EN_MASK; 124 } 125 else 126 { 127 SYSCFG->PDETCSR &= ~ SYSCFG_PDETCSR_VBATDIV3EN_MASK; 128 } 129 } 130 SYSCFG_SetVOSDelayValue(uint32_t val)131void SYSCFG_SetVOSDelayValue(uint32_t val) 132 { 133 SYSCFG->VOSDLY = val; 134 } 135 136 /* EOF. */ 137