rt-thread-official/bsp/acm32/acm32f4xx-nucleo/libraries/Device/System_ACM32F4.h

672 lines
27 KiB
C

/*
******************************************************************************
* @file System_ACM32F4.h
* @version V1.0.0
* @date 2020
* @brief CMSIS Cortex-M33 Device Peripheral Access Layer System Headler File.
******************************************************************************
*/
#ifndef __SYSTEM_ACM32F4_H__
#define __SYSTEM_ACM32F4_H__
#include "ACM32Fxx_HAL.h"
/* ================================================================================ */
/* ======================= Use Uart to Debug print ======================== */
/* ================================================================================ */
#define UART_DEBUG_ENABLE
#ifdef UART_DEBUG_ENABLE
#define printfS printf
#else
#define printfS(format, ...) ((void)0)
#endif
/* ================================================================================ */
#define PLLCLK_SRC_RC4M (0x00)
#define PLLCLK_SRC_XTH (0x01)
#define DEFAULT_SYSTEM_CLOCK (180000000) // system clock frequency, 32M/64M/120M/180M
#define PLL_SOURCE_FROM (PLLCLK_SRC_RC4M)
/* CLK source Index */
#define SYS_CLK_SRC_RCH (0x00) // CLK source from RC64M
#define SYS_CLK_SRC_RC32K (0x01) // CLK source from RC32K
#define SYS_CLK_SRC_XTH (0x02) // CLK source from XTH
#define SYS_CLK_SRC_XTL (0x03) // CLK source from XTL
#define SYS_CLK_SRC_PLLCLK (0x04) // CLK source from PLLCLK
/* APB Frequencey Division */
#define APB_CLK_DIV_0 (0 << 8)
#define APB_CLK_DIV_2 (4 << 8)
#define APB_CLK_DIV_4 (5 << 8)
#define APB_CLK_DIV_8 (6 << 8)
#define APB_CLK_DIV_16 (7 << 8)
/* STOP WAKEUP Sorce */
#define STOP_WAKEUP_GPIO_PIN0 BIT0
#define STOP_WAKEUP_GPIO_PIN1 BIT1
#define STOP_WAKEUP_GPIO_PIN2 BIT2
#define STOP_WAKEUP_GPIO_PIN3 BIT3
#define STOP_WAKEUP_GPIO_PIN4 BIT4
#define STOP_WAKEUP_GPIO_PIN5 BIT5
#define STOP_WAKEUP_GPIO_PIN6 BIT6
#define STOP_WAKEUP_GPIO_PIN7 BIT7
#define STOP_WAKEUP_GPIO_PIN8 BIT8
#define STOP_WAKEUP_GPIO_PIN9 BIT9
#define STOP_WAKEUP_GPIO_PIN10 BIT10
#define STOP_WAKEUP_GPIO_PIN11 BIT11
#define STOP_WAKEUP_GPIO_PIN12 BIT12
#define STOP_WAKEUP_GPIO_PIN13 BIT13
#define STOP_WAKEUP_GPIO_PIN14 BIT14
#define STOP_WAKEUP_GPIO_PIN15 BIT15
#define STOP_WAKEUP_PERIPHERAL_LVD BIT16
#define STOP_WAKEUP_PERIPHERAL_RTC BIT17
#define STOP_WAKEUP_PERIPHERAL_LPUART BIT18
#define STOP_WAKEUP_PERIPHERAL_IWDT BIT19
#define STOP_WAKEUP_PERIPHERAL_COMP1 BIT20
#define STOP_WAKEUP_PERIPHERAL_COMP2 BIT21
#define STOP_WAKEUP_RESERVE BIT22
#define STOP_WAKEUP_PERIPHERAL_USB BIT23
#define STOP_WAKEUP_ALL (0xFFFFFFU)
#define STANDBY_WAKEUP_PINS 6
#define STANDBY_WAKEUP_SOURCE_IO1 BIT0
#define STANDBY_WAKEUP_SOURCE_IO2 BIT1
#define STANDBY_WAKEUP_SOURCE_IO3 BIT2
#define STANDBY_WAKEUP_SOURCE_IO4 BIT3
#define STANDBY_WAKEUP_SOURCE_IO5 BIT4
#define STANDBY_WAKEUP_SOURCE_IO6 BIT5
#define STANDBY_WAKEUP_SOURCE_RTC BIT6
#define STANDBY_WAKEUP_SOURCE_ALL 0x7FU
// sleep/low power mode definition
#define STOPENTRY_WFI 0
#define STOPENTRY_WFE 1
#define SLEEPENTRY_WFI 0
#define SLEEPENTRY_WFE 1
/*
* @brief STOP WAKEUP EDGE structures definition
*/
typedef enum
{
WAKEUP_RISING = 0,
WAKEUP_FALLING = 1,
WAKEUP_RISING_FALLING = 2, // 0:rising, 1:falling, 2: rising and falling
}STOP_WAKEUP_EDGE;
typedef enum
{
FUNC_DISABLE = 0x00U,
FUNC_ENABLE = 0x01U,
}FUNC_DISABLE_ENABLE;
typedef enum
{
RESET_ENABLE_SOURCE_LVD = 0x00U,
RESET_ENABLE_SOURCE_WDT = 0x01U,
RESET_ENABLE_SOURCE_IWDT = 0x02U,
RESET_ENABLE_SOURCE_LOCKUP = 0x03U,
}RESET_ENABLE_SOURCE;
typedef enum
{
RESET_SOURCE_EFC = 0x00U,
RESET_SOURCE_NVIC_RESET = 0x01U,
RESET_SOFT_RESET = 0x02U,
}RESET_SOURCE;
/*
* @brief Peripheral Reset structures definition
*/
typedef enum
{
RST_SPI4 = 38,
RST_GPIOEF = 37,
RST_SPI3 = 36,
RST_UART4 = 35,
RST_TIM4 = 34,
RST_CAN2 = 33,
RST_I2S1 = 32,
RST_CAN1 = 31,
RST_TIM2 = 30,
RST_USB = 29,
RST_UAC = 28,
RST_TIM17 = 27,
RST_TIM16 = 26,
RST_TIM15 = 25,
RST_TIM14 = 24,
RST_TIM7 = 23,
RST_TIM6 = 22,
RST_TIM3 = 21,
RST_TIM1 = 20,
RST_UART3 = 19,
RST_EXTI = 18,
RST_OPA = 17,
RST_COMP = 16,
RST_TKEY = 15,
RST_ADC = 14,
RST_DAC = 13,
RST_DMA = 12,
RST_CRC = 11,
RST_IWDT = 10,
RST_WDT = 9,
RST_LPUART = 8,
RST_I2C2 = 7,
RST_I2C1 = 6,
RST_SPI2 = 5,
RST_SPI1 = 4,
RST_UART2 = 3,
RST_UART1 = 2,
RST_GPIOCD = 1,
RST_GPIOAB = 0,
}enum_RST_ID_t;
/**************** Bit definition for SCU RCR register ***********************/
#define SCU_RCR_SOFT_RST BIT30
#define SCU_RCR_EFC_RST BIT29
#define SCU_RCR_REMAP_EN BIT16
#define SCU_RCR_LOCKRST_EN BIT3
#define SCU_RCR_IWDTRST_EN BIT2
#define SCU_RCR_WDTRST_EN BIT1
#define SCU_RCR_LVDRST_EN BIT0
/**************** Bit definition for SCU RSR register ***********************/
#define SCU_RSR_RSTFLAG_CLR BIT16
#define SCU_RSR_PWRRST_F BIT10
#define SCU_RSR_POR12RST_F BIT9
#define SCU_RSR_SRST_F BIT8
#define SCU_RSR_SRSTNM_F BIT7
#define SCU_RSR_EFC_RST_F BIT6
#define SCU_RSR_RSTN_F BIT5
#define SCU_RSR_SYSREQRST_F BIT4
#define SCU_RSR_LOCKRST_F BIT3
#define SCU_RSR_IWDTRST_F BIT2
#define SCU_RSR_WDTRST_F BIT1
#define SCU_RSR_VDLRST_F BIT0
/**************** Bit definition for SCU IPRST register **********************/
#define SCU_IPRST_UACRST BIT28
#define SCU_IPRST_TIM17RST BIT27
#define SCU_IPRST_TIM16RST BIT26
#define SCU_IPRST_TIM15RST BIT25
#define SCU_IPRST_TIM14RST BIT24
#define SCU_IPRST_TIM6RST BIT22
#define SCU_IPRST_TIM3RST BIT21
#define SCU_IPRST_TIM1RST BIT20
#define SCU_IPRST_UART3RST BIT19
#define SCU_IPRST_EXTIRST BIT18
#define SCU_IPRST_OPARST BIT17
#define SCU_IPRST_CMPRST BIT16
#define SCU_IPRST_TKEYRST BIT15
#define SCU_IPRST_ADCRST BIT14
#define SCU_IPRST_DMACRST BIT12
#define SCU_IPRST_CRCRST BIT11
#define SCU_IPRST_IWDTRST BIT10
#define SCU_IPRST_WDTRST BIT9
#define SCU_IPRST_LPUART BIT8
#define SCU_IPRST_I2C2RST BIT7
#define SCU_IPRST_I2C1RST BIT6
#define SCU_IPRST_SPI2RST BIT5
#define SCU_IPRST_SPI1RST BIT4
#define SCU_IPRST_UART2RST BIT3
#define SCU_IPRST_UART1RST BIT2
#define SCU_IPRST_GPIO2RST BIT1
#define SCU_IPRST_GPIO1RST BIT0
/**************** Bit definition for SCU CCR1 register ***********************/
#define SCU_CCR1_SYS_CLK_SEL (BIT2|BIT1|BIT0)
#define SCU_CCR1_SYS_PLL (BIT2)
/**************** Bit definition for SCU CCR2 register ***********************/
#define SCU_CCR2_DIVDONE BIT31
#define SCU_CCR2_TKSCLK_SEL BIT16
#define SCU_CCR2_FLTCLK_SEL BIT15
#define SCU_CCR2_LPUCLK_SEL (BIT14|BIT13)
#define SCU_CCR2_LPUARTDIV (BIT12|BIT11)
#define SCU_CCR2_PCLKDIV (BIT10|BIT9|BIT8)
#define SCU_CCR2_SYSDIV1 (BIT7|BIT6|BIT5|BIT4)
#define SCU_CCR2_SYSDIV0 (BIT3|BIT2|BIT1|BIT0)
/**************** Bit definition for SCU CIR register ***********************/
#define SCU_CIR_RC4MRDYIC BIT21
#define SCU_CIR_PLLLOCKIC BIT20
#define SCU_CIR_XTHRDYIC BIT19
#define SCU_CIR_RCHRDYIC BIT18
#define SCU_CIR_XTLRDYIC BIT17
#define SCU_CIR_RC32KRDYIC BIT16
#define SCU_CIR_RC4MRDYIE BIT13
#define SCU_CIR_PLLLOCKIE BIT12
#define SCU_CIR_XTHRDYIE BIT11
#define SCU_CIR_RCHRDYIE BIT10
#define SCU_CIR_XTLRDYIE BIT9
#define SCU_CIR_RC32KRDYIE BIT8
#define SCU_CIR_RC4MRDYIF BIT5
#define SCU_CIR_PLLLOCKIF BIT4
#define SCU_CIR_XTHRDYIF BIT3
#define SCU_CIR_RCHRDYIF BIT2
#define SCU_CIR_XTLRDYIF BIT1
#define SCU_CIR_RC32KRDYIF BIT0
/**************** Bit definition for SCU IPCKENR register ********************/
#define SCU_IPCKENR_ROMCLKEN BIT30
#define SCU_IPCKENR_HRNGCLKEN BIT29
#define SCU_IPCKENR_AESCLKEN BIT28
#define SCU_IPCKENR_TIM17CLKEN BIT27
#define SCU_IPCKENR_TIM16CLKEN BIT26
#define SCU_IPCKENR_TIM15CLKEN BIT25
#define SCU_IPCKENR_TIM14CLKEN BIT24
#define SCU_IPCKENR_TIM6CLKEN BIT22
#define SCU_IPCKENR_TIM3CLKEN BIT21
#define SCU_IPCKENR_TIM1CLKEN BIT20
#define SCU_IPCKENR_UART3CLKEN BIT19
#define SCU_IPCKENR_OPACLKEN BIT17
#define SCU_IPCKENR_CMPCLKEN BIT16
#define SCU_IPCKENR_TKEYCLKEN BIT15
#define SCU_IPCKENR_ADCCLKEN BIT14
#define SCU_IPCKENR_RTCCLKEN BIT13
#define SCU_IPCKENR_DMACCLKEN BIT12
#define SCU_IPCKENR_CRCCLKEN BIT11
#define SCU_IPCKENR_LPUARTCLKEN BIT8
#define SCU_IPCKENR_I2C2CLKEN BIT7
#define SCU_IPCKENR_I2C1CLKEN BIT6
#define SCU_IPCKENR_SPI2CLKEN BIT5
#define SCU_IPCKENR_SPI1CLKEN BIT4
#define SCU_IPCKENR_UART2CLKEN BIT3
#define SCU_IPCKENR_UART1CLKEN BIT2
/**************** Bit definition for SCU IPCKENR2 register ********************/
#define SCU_IPCKENR2_EFCCLKEN BIT6
#define SCU_IPCKENR2_SRAMCLKEN BIT5
#define SCU_IPCKENR2_EXTICLKEN BIT4
#define SCU_IPCKENR2_IWDTCLKEN BIT3
#define SCU_IPCKENR2_WDTCLKEN BIT2
#define SCU_IPCKENR2_GPIO2CLKEN BIT1
#define SCU_IPCKENR2_GPIO1CLKEN BIT0
/**************** Bit definition for SCU RCHCR register **********************/
#define SCU_RCHCR_RC4MRDY BIT22
#define SCU_RCHCR_RC4M_TRIM (BIT21|BIT20|BIT19|BIT18|BIT17)
#define SCU_RCHCR_RC4M_EN BIT16
#define SCU_RCHCR_RCHRDY BIT9
#define SCU_RCHCR_RCH_DIV BIT8
#define SCU_RCHCR_RCH_TRIM (BIT7|BIT6|BIT5|BIT4|BIT3|BIT2|BIT1)
#define SCU_RCHCR_RCH_EN BIT0
/**************** Bit definition for SCU RCHCR register **********************/
#define SCU_XTHCR_XTHRDY BIT4
#define SCU_XTHCR_XTH_RDYTIME (BIT3|BIT2)
#define SCU_XTHCR_XTH_BYP BIT1
#define SCU_XTHCR_XTH_EN BIT0
#define SCU_XTHCR_READYTIME_1024 0
#define SCU_XTHCR_READYTIME_4096 BIT2
#define SCU_XTHCR_READYTIME_16384 BIT3
#define SCU_XTHCR_READYTIME_32768 (BIT3|BIT2)
/**************** Bit definition for SCU PLLCR register **********************/
#define SCU_PLLCR_PLL_LOCK_SEL BIT31
#define SCU_PLLCR_PLL_FREE_RUN BIT30
#define SCU_PLLCR_PLL_LOCK BIT29
#define SCU_PLLCR_PLL_RUN_DLY (BIT28|BIT27|BIT26|BIT25|BIT24|BIT23)
#define SCU_PLLCR_PLL_UPDATE_EN BIT22
#define SCU_PLLCR_PLL_SLEEP BIT21
#define SCU_PLLCR_PLL_OD (BIT19|BIT18)
#define SCU_PLLCR_PLL_N (BIT15|BIT14)
#define SCU_PLLCR_PLL_M (BIT6|BIT5|BIT4|BIT3)
#define SCU_PLLCR_PLL_SRC_SEL (BIT2|BIT1)
#define SCU_PLLCR_PLL_EN (BIT0)
/**************** Bit definition for SCU LDOCR register **********************/
#define SCU_LDOCR_LPLDO12_TRIM (BIT28|BIT27|BIT26)
#define SCU_LDOCR_LPSTP_SFT BIT25
#define SCU_LDOCR_LPLDO12_EN_SFT BIT24
#define SCU_LDOCR_MLDO12_LOWP_SFT BIT22
#define SCU_LDOCR_MLDO12_LV_SFT (BIT21|BIT20)
#define SCU_LDOCR_LDO18A_EN BIT19
#define SCU_LDOCR_ANATEST_SEL (BIT18|BIT17|BIT16)
#define SCU_LDOCR_LDO18A_TRIM (BIT15|BIT14|BIT13)
#define SCU_LDOCR_LDO18_TRIM (BIT12|BIT11|BIT10)
#define SCU_LDOCR_LDO18_EN BIT9
#define SCU_LDOCR_LDOCTL_SEL BIT8
#define SCU_LDOCR_LDO12_TRIM (BIT7|BIT6|BIT5|BIT4)
#define SCU_LDOCR_VREF_TRIM (BIT2|BIT1|BIT0)
/**************** Bit definition for SCU WMR register ***********************/
#define SCU_WMR_RTC_READY BIT6
#define SCU_WMR_REMAP_FLAG BIT4
#define SCU_WMR_BOOTPIN BIT3
/**************** Bit definition for SCU CLKOCR register ********************/
#define SCU_CLKOCR_BUZZER2_EN BIT31
#define SCU_CLKOCR_BUZZER2_POL BIT30
#define SCU_CLKOCR_BUZZER2_DIV (BIT29|BIT28|BIT27|BIT26|BIT25|BIT24)
#define SCU_CLKOCR_BUZZER_EN BIT23
#define SCU_CLKOCR_BUZZER_POL BIT22
#define SCU_CLKOCR_BUZZER_DIV (0x3FFFE0)
#define SCU_CLKOCR_CLKOUT_SEL BIT4
#define SCU_CLKOCR_CLKTEST_SEL (BIT3|BIT2|BIT1|BIT0)
/**************** Bit definition for SCU SYSCFG1 register ********************/
#define SCU_SYSCFG1_TIM15_CH2_SEL (BIT25|BIT24)
#define SCU_SYSCFG1_TIM15_CH1_SEL (BIT23|BIT22)
#define SCU_SYSCFG1_TIM14_CH1_SEL BIT20
#define SCU_SYSCFG1_IR_MODE (BIT18|BIT17)
#define SCU_SYSCFG1_IR_POL BIT16
#define SCU_SYSCFG1_SRAM_PEF BIT8
#define SCU_SYSCFG1_LVD_LOCK BIT2
#define SCU_SYSCFG1_SRAM_PARITY_LOCK BIT1
#define SCU_SYSCFG1_LOCKUP_LOCK BIT0
/**************** Bit definition for SCU LVDCFG register ********************/
#define SCU_LVDCFG_LVD_VALUE BIT15
#define SCU_LVDCFG_LVD_FILTER BIT14
#define SCU_LVDCFG_FLT_TIME (BIT11|BIT10|BIT9)
#define SCU_LVDCFG_LVD_FLTEN BIT8
#define SCU_LVDCFG_LVD_TRIM (BIT4|BIT3|BIT2|BIT1)
#define SCU_LVDCFG_LVDEN BIT0
/**************** Bit definition for SCU STOPCFG register ********************/
#define SCU_STOPCFG_LPLDO12_LV (BIT15|BIT14|BIT13)
#define SCU_STOPCFG_TKPCLK_SEL BIT12
#define SCU_STOPCFG_PDDS BIT11
#define SCU_STOPCFG_TK_LPLDOLV BIT10
#define SCU_STOPCFG_LPSTOP BIT9
#define SCU_STOPCFG_RCH_DIV_EN BIT8
#define SCU_STOPCFG_MLDO12_LOWP BIT6
#define SCU_STOPCFG_MLDO12_LV (BIT5|BIT4)
#define SCU_STOPCFG_RC64MPDEN BIT3
#define SCU_STOPCFG_RTC_WE BIT0
/************** Bit definition for SCU VECTOROFFSET register *****************/
#define SCU_VECTOROFFSET_VOFFSETEN BIT0
/**************** Bit definition for SCU PASEL1 register *********************/
#define SCU_PASEL1_PA7_SEL (BIT31|BIT30|BIT29|BIT28)
#define SCU_PASEL1_PA6_SEL (BIT27|BIT26|BIT25|BIT24)
#define SCU_PASEL1_PA5_SEL (BIT23|BIT22|BIT21|BIT20)
#define SCU_PASEL1_PA4_SEL (BIT19|BIT18|BIT17|BIT16)
#define SCU_PASEL1_PA3_SEL (BIT15|BIT14|BIT13|BIT12)
#define SCU_PASEL1_PA2_SEL (BIT11|BIT10|BIT9|BIT8)
#define SCU_PASEL1_PA1_SEL (BIT7|BIT6|BIT5|BIT4)
#define SCU_PASEL1_PA0_SEL (BIT3|BIT2|BIT1|BIT0)
/**************** Bit definition for SCU PASEL2 register *********************/
#define SCU_PASEL2_PA15_SEL (BIT31|BIT30|BIT29|BIT28)
#define SCU_PASEL2_PA14_SEL (BIT27|BIT26|BIT25|BIT24)
#define SCU_PASEL2_PA13_SEL (BIT23|BIT22|BIT21|BIT20)
#define SCU_PASEL2_PA12_SEL (BIT19|BIT18|BIT17|BIT16)
#define SCU_PASEL2_PA11_SEL (BIT15|BIT14|BIT13|BIT12)
#define SCU_PASEL2_PA10_SEL (BIT11|BIT10|BIT9|BIT8)
#define SCU_PASEL2_PA9_SEL (BIT7|BIT6|BIT5|BIT4)
#define SCU_PASEL2_PA8_SEL (BIT3|BIT2|BIT1|BIT0)
/**************** Bit definition for SCU PBSEL1 register *********************/
#define SCU_PBSEL1_PB7_SEL (BIT31|BIT30|BIT29|BIT28)
#define SCU_PBSEL1_PB6_SEL (BIT27|BIT26|BIT25|BIT24)
#define SCU_PBSEL1_PB5_SEL (BIT23|BIT22|BIT21|BIT20)
#define SCU_PBSEL1_PB4_SEL (BIT19|BIT18|BIT17|BIT16)
#define SCU_PBSEL1_PB3_SEL (BIT15|BIT14|BIT13|BIT12)
#define SCU_PBSEL1_PB2_SEL (BIT11|BIT10|BIT9|BIT8)
#define SCU_PBSEL1_PB1_SEL (BIT7|BIT6|BIT5|BIT4)
#define SCU_PBSEL1_PB0_SEL (BIT3|BIT2|BIT1|BIT0)
/**************** Bit definition for SCU PBSEL2 register *********************/
#define SCU_PBSEL2_PB15_SEL (BIT31|BIT30|BIT29|BIT28)
#define SCU_PBSEL2_PB14_SEL (BIT27|BIT26|BIT25|BIT24)
#define SCU_PBSEL2_PB13_SEL (BIT23|BIT22|BIT21|BIT20)
#define SCU_PBSEL2_PB12_SEL (BIT19|BIT18|BIT17|BIT16)
#define SCU_PBSEL2_PB11_SEL (BIT15|BIT14|BIT13|BIT12)
#define SCU_PBSEL2_PB10_SEL (BIT11|BIT10|BIT9|BIT8)
#define SCU_PBSEL2_PB9_SEL (BIT7|BIT6|BIT5|BIT4)
#define SCU_PBSEL2_PB8_SEL (BIT3|BIT2|BIT1|BIT0)
/**************** Bit definition for SCU PASTR register **********************/
#define SCU_PASTR_PA15_STH (BIT31|BIT30)
#define SCU_PASTR_PA14_STH (BIT29|BIT28)
#define SCU_PASTR_PA13_STH (BIT27|BIT26)
#define SCU_PASTR_PA12_STH (BIT25|BIT24)
#define SCU_PASTR_PA11_STH (BIT23|BIT22)
#define SCU_PASTR_PA10_STH (BIT21|BIT20)
#define SCU_PASTR_PA9_STH (BIT19|BIT18)
#define SCU_PASTR_PA8_STH (BIT17|BIT16)
#define SCU_PASTR_PA7_STH (BIT15|BIT14)
#define SCU_PASTR_PA6_STH (BIT13|BIT12)
#define SCU_PASTR_PA5_STH (BIT11|BIT10)
#define SCU_PASTR_PA4_STH (BIT9|BIT8)
#define SCU_PASTR_PA3_STH (BIT7|BIT6)
#define SCU_PASTR_PA2_STH (BIT5|BIT4)
#define SCU_PASTR_PA1_STH (BIT3|BIT2)
#define SCU_PASTR_PA0_STH (BIT1|BIT0)
/**************** Bit definition for SCU PBSTR register **********************/
#define SCU_PBSTR_PB15_STH (BIT31|BIT30)
#define SCU_PBSTR_PB14_STH (BIT29|BIT28)
#define SCU_PBSTR_PB13_STH (BIT27|BIT26)
#define SCU_PBSTR_PB12_STH (BIT25|BIT24)
#define SCU_PBSTR_PB11_STH (BIT23|BIT22)
#define SCU_PBSTR_PB10_STH (BIT21|BIT20)
#define SCU_PBSTR_PB9_STH (BIT19|BIT18)
#define SCU_PBSTR_PB8_STH (BIT17|BIT16)
#define SCU_PBSTR_PB7_STH (BIT15|BIT14)
#define SCU_PBSTR_PB6_STH (BIT13|BIT12)
#define SCU_PBSTR_PB5_STH (BIT11|BIT10)
#define SCU_PBSTR_PB4_STH (BIT9|BIT8)
#define SCU_PBSTR_PB3_STH (BIT7|BIT6)
#define SCU_PBSTR_PB2_STH (BIT5|BIT4)
#define SCU_PBSTR_PB1_STH (BIT3|BIT2)
#define SCU_PBSTR_PB0_STH (BIT1|BIT0)
/**************** Bit definition for SCU PCSEL1 register *********************/
#define SCU_PCSEL1_PC7_SEL (BIT31|BIT30|BIT29|BIT28)
#define SCU_PCSEL1_PC6_SEL (BIT27|BIT26|BIT25|BIT24)
#define SCU_PCSEL1_PC5_SEL (BIT23|BIT22|BIT21|BIT20)
#define SCU_PCSEL1_PC4_SEL (BIT19|BIT18|BIT17|BIT16)
#define SCU_PCSEL1_PC3_SEL (BIT15|BIT14|BIT13|BIT12)
#define SCU_PCSEL1_PC2_SEL (BIT11|BIT10|BIT9|BIT8)
#define SCU_PCSEL1_PC1_SEL (BIT7|BIT6|BIT5|BIT4)
#define SCU_PCSEL1_PC0_SEL (BIT3|BIT2|BIT1|BIT0)
/**************** Bit definition for SCU PCSEL2 register *********************/
#define SCU_PCSEL2_PC15_SEL (BIT31|BIT30|BIT29|BIT28)
#define SCU_PCSEL2_PC14_SEL (BIT27|BIT26|BIT25|BIT24)
#define SCU_PCSEL2_PC13_SEL (BIT23|BIT22|BIT21|BIT20)
#define SCU_PCSEL2_PC12_SEL (BIT19|BIT18|BIT17|BIT16)
#define SCU_PCSEL2_PC11_SEL (BIT15|BIT14|BIT13|BIT12)
#define SCU_PCSEL2_PC10_SEL (BIT11|BIT10|BIT9|BIT8)
#define SCU_PCSEL2_PC9_SEL (BIT7|BIT6|BIT5|BIT4)
#define SCU_PCSEL2_PC8_SEL (BIT3|BIT2|BIT1|BIT0)
/**************** Bit definition for SCU PDSEL1 register *********************/
#define SCU_PDSEL1_PD7_SEL (BIT31|BIT30|BIT29|BIT28)
#define SCU_PDSEL1_PD6_SEL (BIT27|BIT26|BIT25|BIT24)
#define SCU_PDSEL1_PD5_SEL (BIT23|BIT22|BIT21|BIT20)
#define SCU_PDSEL1_PD4_SEL (BIT19|BIT18|BIT17|BIT16)
#define SCU_PDSEL1_PD3_SEL (BIT15|BIT14|BIT13|BIT12)
#define SCU_PDSEL1_PD2_SEL (BIT11|BIT10|BIT9|BIT8)
#define SCU_PDSEL1_PD1_SEL (BIT7|BIT6|BIT5|BIT4)
#define SCU_PDSEL1_PD0_SEL (BIT3|BIT2|BIT1|BIT0)
/**************** Bit definition for SCU PCSTR register **********************/
#define SCU_PCSTR_PC12_STH (BIT25|BIT24)
#define SCU_PCSTR_PC11_STH (BIT23|BIT22)
#define SCU_PCSTR_PC10_STH (BIT21|BIT20)
#define SCU_PCSTR_PC9_STH (BIT19|BIT18)
#define SCU_PCSTR_PC8_STH (BIT17|BIT16)
#define SCU_PCSTR_PC7_STH (BIT15|BIT14)
#define SCU_PCSTR_PC6_STH (BIT13|BIT12)
#define SCU_PCSTR_PC5_STH (BIT11|BIT10)
#define SCU_PCSTR_PC4_STH (BIT9|BIT8)
#define SCU_PCSTR_PC3_STH (BIT7|BIT6)
#define SCU_PCSTR_PC2_STH (BIT5|BIT4)
#define SCU_PCSTR_PC1_STH (BIT3|BIT2)
#define SCU_PCSTR_PC0_STH (BIT1|BIT0)
/**************** Bit definition for SCU PDSTR register **********************/
#define SCU_PDSTR_PD7_STH (BIT15|BIT14)
#define SCU_PDSTR_PD6_STH (BIT13|BIT12)
#define SCU_PDSTR_PD5_STH (BIT11|BIT10)
#define SCU_PDSTR_PD4_STH (BIT9|BIT8)
#define SCU_PDSTR_PD3_STH (BIT7|BIT6)
#define SCU_PDSTR_PD2_STH (BIT5|BIT4)
#define SCU_PDSTR_PD1_STH (BIT3|BIT2)
#define SCU_PDSTR_PD0_STH (BIT1|BIT0)
/*
* @brief Peripheral Enable structures definition
*/
typedef enum
{
EN_CAN1 = 45,
EN_ROM = 44,
EN_HRNG = 43,
EN_AES = 42,
EN_TIM17 = 41,
EN_TIM16 = 40,
EN_TIM15 = 39,
EN_TIM14 = 38,
EN_TIM7 = 37,
EN_TIM6 = 36,
EN_TIM3 = 35,
EN_TIM1 = 34,
EN_UART3 = 33,
EN_TIM2 = 32,
EN_OPA = 31,
EN_COMP = 30,
EN_TKEY = 29,
EN_ADC = 28,
EN_RTC = 27,
EN_DMA = 26,
EN_CRC = 25,
EN_DAC = 24,
EN_USB = 23,
EN_LPUART = 22,
EN_I2C2 = 21,
EN_I2C1 = 20,
EN_SPI2 = 19,
EN_SPI1 = 18,
EN_UART2 = 17,
EN_UART1 = 16,
EN_CAN2 = 15,
EN_I2S1 = 14,
EN_SPI4 = 13,
EN_GPIOEF = 12,
EN_SPI3 = 11,
EN_UART4 = 10,
EN_TIM4 = 9,
EN_FAU = 8,
EN_EFC = 6,
EN_SRAM = 5,
EN_EXTI = 4,
EN_IWDT = 3,
EN_WDT = 2,
EN_GPIOCD = 1,
EN_GPIOAB = 0,
}enum_Enable_ID_t;
typedef enum
{
RESET_REASON_LOW_VOLTAGE = 0x00U, // low voltage detected, leads to reset
RESET_REASON_WDT = 0x01U, // System WDT reset
RESET_REASON_IWDT = 0x02U, // IWDT reset
RESET_REASON_LOCKUP = 0x03U, // cortex-m0 lockup leads to reset
RESET_REASON_SYSREQ = 0x04U, // system reset
RESET_REASON_RSTN = 0x05U, // RSTN negative pulse leads to reset
RESET_REASON_EFC = 0x06U, // efc reset leads to reset
RESET_REASON_SOFT = 0x07U, // soft reset
RESET_REASON_POR12 = 0x09U, // core power on reset, rtc not reset, eg:wakeup from standby
RESET_REASON_POR = 0x0AU, // chip power on reset
RESET_REASON_INVALID,
}RESET_REASON;
#define NVIC_PRIORITY_GROUP_3 0x00000004U // 3 bits for pre-emption priority, 0 bit for subpriority
#define NVIC_PRIORITY_GROUP_2 0x00000005U // 2 bits for pre-emption priority, 1 bit for subpriority
#define NVIC_PRIORITY_GROUP_1 0x00000006U // 1 bits for pre-emption priority, 2 bit for subpriority
#define NVIC_PRIORITY_GROUP_0 0x00000007U // 0 bits for pre-emption priority, 3 bit for subpriority
#define SYSTEM_TIMEOUT (1000000)
/* System_Init */
void System_Init(void);
/* System_Core_Config */
void System_Core_Config(void);
/* System_Clock_Init */
bool System_Clock_Init(uint32_t fu32_Clock);
/* System_SysTick_Init */
void System_SysTick_Init(void);
/* System_Get_SystemClock */
uint32_t System_Get_SystemClock(void);
/* System_Get_APBClock */
uint32_t System_Get_APBClock(void);
/* System_Module_Reset */
void System_Module_Reset(enum_RST_ID_t fe_ID_Index);
/* System_Module_Enable */
void System_Module_Enable(enum_Enable_ID_t fe_ID_Index);
/* System_Module_Disable */
void System_Module_Disable(enum_Enable_ID_t fe_ID_Index);
/* System_Delay */
void System_Delay(volatile uint32_t fu32_Delay);
/* System_Delay_MS */
void System_Delay_MS(volatile uint32_t fu32_Delay);
/* System_Enable_RC32K */
void System_Enable_RC32K(void);
/* System_Disable_RC32K */
void System_Disable_RC32K(void);
/* System_Enable_XTAL */
void System_Enable_XTAL(void);
/* System_Disable_XTAL */
void System_Disable_XTAL(void);
/* System_Clear_Stop_Wakeup */
void System_Clear_Stop_Wakeup(void);
/* System_Enter_Standby_Mode */
void System_Enter_Standby_Mode(void);
/* System_Enter_Stop_Mode */
void System_Enter_Stop_Mode(uint8_t STOPEntry);
/* System_Enter_Sleep_Mode */
void System_Enter_Sleep_Mode(uint8_t SleepEntry);
/* System_Enable_Disable_Reset */
void System_Enable_Disable_Reset(RESET_ENABLE_SOURCE source, FUNC_DISABLE_ENABLE enable_disable);
/* System_Reset_MCU */
void System_Reset_MCU(RESET_SOURCE source);
/* System_Enable_Disable_RTC_Domain_Access */
void System_Enable_Disable_RTC_Domain_Access(FUNC_DISABLE_ENABLE enable_disable);
/* System_Return_Last_Reset_Reason */
RESET_REASON System_Return_Last_Reset_Reason(void) ;
/* System_Set_Buzzer_Divider */
void System_Set_Buzzer_Divider(uint32_t div, FUNC_DISABLE_ENABLE enable);
/* System_USB_PHY_Config */
uint32_t System_USB_PHY_Config(void);
#endif