mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-01-15 17:02:53 +08:00
137 lines
4.0 KiB
C
137 lines
4.0 KiB
C
/*
|
|
* Copyright 2022 MindMotion Microelectronics Co., Ltd.
|
|
* All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
|
|
#include "hal_syscfg.h"
|
|
|
|
#define SYSCFG_EXTICR_MASK(x) ( (0x0Fu) << ( ( (uint32_t)(x) & 0x3u ) << 2u ) ) /* mask bit for clear exti line. */
|
|
#define SYSCFG_EXTICR(x, y) ( (uint32_t)( (uint32_t)(x) << ( ( (uint32_t)(y) & 0x3u ) << 2u ) ) ) /* set the data for indicated exti port and line. */
|
|
|
|
// void SYSCFG_SetBootMemMode(SYSCFG_BootMemMode_Type mode)
|
|
// {
|
|
// SYSCFG->CFGR = ( SYSCFG->CFGR & ~ SYSCFG_CFGR_MEMMODE_MASK )
|
|
// | SYSCFG_CFGR_MEMMODE(mode);
|
|
// }
|
|
|
|
void SYSCFG_SetFSMCPinUseMode(SYSCFG_FSMCPinUseMode_Type mode)
|
|
{
|
|
SYSCFG->CFGR = ( SYSCFG->CFGR & ~ SYSCFG_CFGR_FCODATAEN_MASK )
|
|
| SYSCFG_CFGR_FCODATAEN(mode);
|
|
}
|
|
|
|
void SYSCFG_SetFSMCMode(SYSCFG_FSMCMode_Type mode)
|
|
{
|
|
SYSCFG->CFGR = ( SYSCFG->CFGR & ~ SYSCFG_CFGR_FCMODESEL_MASK )
|
|
| SYSCFG_CFGR_FCMODESEL(mode);
|
|
}
|
|
|
|
void SYSCFG_SetExtIntMux(SYSCFG_EXTIPort_Type port, SYSCFG_EXTILine_Type line)
|
|
{
|
|
if ( line < SYSCFG_EXTILine_4)
|
|
{
|
|
SYSCFG->EXTICR1 = ( SYSCFG->EXTICR1 & ~ SYSCFG_EXTICR_MASK(line) )
|
|
| ( SYSCFG_EXTICR(port, line) );
|
|
}
|
|
else if ( line < SYSCFG_EXTILine_8 )
|
|
{
|
|
SYSCFG->EXTICR2 = ( SYSCFG->EXTICR1 & ~ SYSCFG_EXTICR_MASK(line) )
|
|
| ( SYSCFG_EXTICR(port, line) );
|
|
}
|
|
else if ( line < SYSCFG_EXTILine_12 )
|
|
{
|
|
SYSCFG->EXTICR3 = ( SYSCFG->EXTICR1 & ~ SYSCFG_EXTICR_MASK(line) )
|
|
| ( SYSCFG_EXTICR(port, line) );
|
|
}
|
|
else
|
|
{
|
|
SYSCFG->EXTICR4 = ( SYSCFG->EXTICR1 & ~ SYSCFG_EXTICR_MASK(line) )
|
|
| ( SYSCFG_EXTICR(port, line) );
|
|
}
|
|
}
|
|
|
|
void SYSCFG_SetI2C0PortMode(SYSCFG_I2CPortMode_Type mode)
|
|
{
|
|
SYSCFG->CFGR2 = ( SYSCFG->CFGR2 & ~ SYSCFG_CFGR2_I2C1MODESEL_MASK )
|
|
| SYSCFG_CFGR2_I2C1MODESEL(mode);
|
|
}
|
|
|
|
void SYSCFG_SetI2C1PortMode(SYSCFG_I2CPortMode_Type mode)
|
|
{
|
|
SYSCFG->CFGR2 = ( SYSCFG->CFGR2 & ~ SYSCFG_CFGR2_I2C2MODESEL_MASK )
|
|
| SYSCFG_CFGR2_I2C2MODESEL(mode);
|
|
}
|
|
|
|
void SYSCFG_SetENETPortMode(SYSCFG_ENETPortMode_Type mode)
|
|
{
|
|
SYSCFG->CFGR2 = ( SYSCFG->CFGR2 & ~ SYSCFG_CFGR2_ENETMIIRMIISEL_MASK )
|
|
| SYSCFG_CFGR2_ENETMIIRMIISEL(mode);
|
|
}
|
|
|
|
void SYSCFG_SetENETSpeedMode(SYSCFG_ENETSpeedMode_Type mode)
|
|
{
|
|
SYSCFG->CFGR2 = ( SYSCFG->CFGR2 & ~ SYSCFG_CFGR2_ENETSPDSEL_MASK )
|
|
| SYSCFG_CFGR2_ENETSPDSEL(mode);
|
|
}
|
|
|
|
void SYSCFG_EnablePVD(SYSCFG_PVDConf_Type * conf)
|
|
{
|
|
if (conf == NULL)
|
|
{
|
|
SYSCFG->PDETCSR &= ~ SYSCFG_PDETCSR_PVDE_MASK;
|
|
}
|
|
else
|
|
{
|
|
SYSCFG->PDETCSR = ( ( SYSCFG->PDETCSR & ~ ( SYSCFG_PDETCSR_PVDE_MASK
|
|
| SYSCFG_PDETCSR_PLS_MASK
|
|
| SYSCFG_PDETCSR_PVDO_MASK
|
|
) )
|
|
| SYSCFG_PDETCSR_PLS(conf->Thold)
|
|
| SYSCFG_PDETCSR_PVDO(conf->Output)
|
|
| SYSCFG_PDETCSR_PVDE_MASK
|
|
);
|
|
|
|
}
|
|
}
|
|
|
|
void SYSCFG_EnableVDT(SYSCFG_VDTConf_Type * conf)
|
|
{
|
|
if (conf == NULL)
|
|
{
|
|
SYSCFG->PDETCSR &= ~ SYSCFG_PDETCSR_VDTE_MASK;
|
|
}
|
|
else
|
|
{
|
|
SYSCFG->PDETCSR = ( ( SYSCFG->PDETCSR & ~ ( SYSCFG_PDETCSR_VDTE_MASK
|
|
| SYSCFG_PDETCSR_VDTLS_MASK
|
|
| SYSCFG_PDETCSR_VDTO_MASK
|
|
) )
|
|
| SYSCFG_PDETCSR_VDTLS(conf->Thold)
|
|
| SYSCFG_PDETCSR_VDTO(conf->Output)
|
|
| SYSCFG_PDETCSR_VDTE_MASK
|
|
);
|
|
}
|
|
}
|
|
|
|
void SYSCFG_EnableADCCheckVBatDiv3(bool enable)
|
|
{
|
|
if (enable)
|
|
{
|
|
SYSCFG->PDETCSR |= SYSCFG_PDETCSR_VBATDIV3EN_MASK;
|
|
}
|
|
else
|
|
{
|
|
SYSCFG->PDETCSR &= ~ SYSCFG_PDETCSR_VBATDIV3EN_MASK;
|
|
}
|
|
}
|
|
|
|
void SYSCFG_SetVOSDelayValue(uint32_t val)
|
|
{
|
|
SYSCFG->VOSDLY = val;
|
|
}
|
|
|
|
/* EOF. */
|