rt-thread-official/bsp/nuvoton/numaker-m032ki/board/NuClockConfig/nutool_modclkcfg.c

507 lines
11 KiB
C

/****************************************************************************
* @file nutool_modclkcfg.c
* @version V1.05
* @Date 2020/09/30-13:56:58
* @brief NuMicro generated code file
*
* SPDX-License-Identifier: Apache-2.0
*
* Copyright (C) 2013-2020 Nuvoton Technology Corp. All rights reserved.
*****************************************************************************/
/********************
MCU:M032SE3AE(ULQFP64)
Base Clocks:
LIRC:38.4000kHz
HIRC:48MHz
LXT:32.7680kHz
HXT:12MHz
PLL:72MHz
HCLK:48MHz
PCLK0:48MHz
PCLK1:48MHz
Enabled-Module Frequencies:
ACMP01=Bus Clock(PCLK1):48MHz
ADC=Bus Clock(PCLK1):48MHz/Engine Clock:48MHz
CRC=Bus Clock(HCLK):48MHz
EBI=Bus Clock(HCLK):48MHz
HDIV=Bus Clock(HCLK):48MHz
I2C0=Bus Clock(PCLK0):48MHz
I2C1=Bus Clock(PCLK1):48MHz
ISP=Bus Clock(HCLK):48MHz/Engine Clock:48MHz
PDMA=Bus Clock(HCLK):48MHz
PWM0=Bus Clock(PCLK0):48MHz/Engine Clock:48MHz
PWM1=Bus Clock(PCLK1):48MHz/Engine Clock:48MHz
SPI0=Bus Clock(PCLK1):48MHz/Engine Clock:48MHz
SYSTICK=Bus Clock(HCLK):48MHz/Engine Clock:24MHz
TMR0=Bus Clock(PCLK0):48MHz/Engine Clock:48MHz
TMR1=Bus Clock(PCLK0):48MHz/Engine Clock:48MHz
TMR2=Bus Clock(PCLK1):48MHz/Engine Clock:48MHz
TMR3=Bus Clock(PCLK1):48MHz/Engine Clock:48MHz
UART0=Bus Clock(PCLK0):48MHz/Engine Clock:48MHz
UART1=Bus Clock(PCLK1):48MHz/Engine Clock:48MHz
UART2=Bus Clock(PCLK0):48MHz/Engine Clock:48MHz
USBD=Bus Clock(PCLK0):48MHz/Engine Clock:48MHz
USCI0=Bus Clock(PCLK0):48MHz
WDT=Bus Clock(PCLK0):48MHz/Engine Clock:38.4000kHz
WWDT=Bus Clock(PCLK0):48MHz/Engine Clock:23.4375kHz
********************/
#include "M031Series.h"
void nutool_modclkcfg_init_acmp01(void)
{
CLK_EnableModuleClock(ACMP01_MODULE);
return;
}
void nutool_modclkcfg_deinit_acmp01(void)
{
CLK_DisableModuleClock(ACMP01_MODULE);
return;
}
void nutool_modclkcfg_init_adc(void)
{
CLK_EnableModuleClock(ADC_MODULE);
CLK_SetModuleClock(ADC_MODULE, CLK_CLKSEL2_ADCSEL_PCLK1, CLK_CLKDIV0_ADC(1));
return;
}
void nutool_modclkcfg_deinit_adc(void)
{
CLK_DisableModuleClock(ADC_MODULE);
return;
}
void nutool_modclkcfg_init_crc(void)
{
CLK_EnableModuleClock(CRC_MODULE);
return;
}
void nutool_modclkcfg_deinit_crc(void)
{
CLK_DisableModuleClock(CRC_MODULE);
return;
}
void nutool_modclkcfg_init_ebi(void)
{
CLK_EnableModuleClock(EBI_MODULE);
return;
}
void nutool_modclkcfg_deinit_ebi(void)
{
CLK_DisableModuleClock(EBI_MODULE);
return;
}
void nutool_modclkcfg_init_hdiv(void)
{
CLK_EnableModuleClock(HDIV_MODULE);
return;
}
void nutool_modclkcfg_deinit_hdiv(void)
{
CLK_DisableModuleClock(HDIV_MODULE);
return;
}
void nutool_modclkcfg_init_i2c0(void)
{
CLK_EnableModuleClock(I2C0_MODULE);
return;
}
void nutool_modclkcfg_deinit_i2c0(void)
{
CLK_DisableModuleClock(I2C0_MODULE);
return;
}
void nutool_modclkcfg_init_i2c1(void)
{
CLK_EnableModuleClock(I2C1_MODULE);
return;
}
void nutool_modclkcfg_deinit_i2c1(void)
{
CLK_DisableModuleClock(I2C1_MODULE);
return;
}
void nutool_modclkcfg_init_isp(void)
{
CLK_EnableModuleClock(ISP_MODULE);
return;
}
void nutool_modclkcfg_deinit_isp(void)
{
CLK_DisableModuleClock(ISP_MODULE);
return;
}
void nutool_modclkcfg_init_pdma(void)
{
CLK_EnableModuleClock(PDMA_MODULE);
return;
}
void nutool_modclkcfg_deinit_pdma(void)
{
CLK_DisableModuleClock(PDMA_MODULE);
return;
}
void nutool_modclkcfg_init_pwm0(void)
{
CLK_EnableModuleClock(PWM0_MODULE);
CLK_SetModuleClock(PWM0_MODULE, CLK_CLKSEL2_PWM0SEL_PCLK0, MODULE_NoMsk);
return;
}
void nutool_modclkcfg_deinit_pwm0(void)
{
CLK_DisableModuleClock(PWM0_MODULE);
return;
}
void nutool_modclkcfg_init_pwm1(void)
{
CLK_EnableModuleClock(PWM1_MODULE);
CLK_SetModuleClock(PWM1_MODULE, CLK_CLKSEL2_PWM1SEL_PCLK1, MODULE_NoMsk);
return;
}
void nutool_modclkcfg_deinit_pwm1(void)
{
CLK_DisableModuleClock(PWM1_MODULE);
return;
}
void nutool_modclkcfg_init_spi0(void)
{
CLK_EnableModuleClock(SPI0_MODULE);
CLK_SetModuleClock(SPI0_MODULE, CLK_CLKSEL2_SPI0SEL_PCLK1, MODULE_NoMsk);
return;
}
void nutool_modclkcfg_deinit_spi0(void)
{
CLK_DisableModuleClock(SPI0_MODULE);
return;
}
void nutool_modclkcfg_init_systick(void)
{
CLK_EnableSysTick(CLK_CLKSEL0_STCLKSEL_HIRC_DIV2, 0);
return;
}
void nutool_modclkcfg_deinit_systick(void)
{
CLK_DisableSysTick();
return;
}
void nutool_modclkcfg_init_tmr0(void)
{
CLK_EnableModuleClock(TMR0_MODULE);
CLK_SetModuleClock(TMR0_MODULE, CLK_CLKSEL1_TMR0SEL_HIRC, MODULE_NoMsk);
return;
}
void nutool_modclkcfg_deinit_tmr0(void)
{
CLK_DisableModuleClock(TMR0_MODULE);
return;
}
void nutool_modclkcfg_init_tmr1(void)
{
CLK_EnableModuleClock(TMR1_MODULE);
CLK_SetModuleClock(TMR1_MODULE, CLK_CLKSEL1_TMR1SEL_HIRC, MODULE_NoMsk);
return;
}
void nutool_modclkcfg_deinit_tmr1(void)
{
CLK_DisableModuleClock(TMR1_MODULE);
return;
}
void nutool_modclkcfg_init_tmr2(void)
{
CLK_EnableModuleClock(TMR2_MODULE);
CLK_SetModuleClock(TMR2_MODULE, CLK_CLKSEL1_TMR2SEL_HIRC, MODULE_NoMsk);
return;
}
void nutool_modclkcfg_deinit_tmr2(void)
{
CLK_DisableModuleClock(TMR2_MODULE);
return;
}
void nutool_modclkcfg_init_tmr3(void)
{
CLK_EnableModuleClock(TMR3_MODULE);
CLK_SetModuleClock(TMR3_MODULE, CLK_CLKSEL1_TMR3SEL_HIRC, MODULE_NoMsk);
return;
}
void nutool_modclkcfg_deinit_tmr3(void)
{
CLK_DisableModuleClock(TMR3_MODULE);
return;
}
void nutool_modclkcfg_init_uart0(void)
{
CLK_EnableModuleClock(UART0_MODULE);
CLK_SetModuleClock(UART0_MODULE, CLK_CLKSEL1_UART0SEL_HXT, CLK_CLKDIV0_UART0(1));
return;
}
void nutool_modclkcfg_deinit_uart0(void)
{
CLK_DisableModuleClock(UART0_MODULE);
return;
}
void nutool_modclkcfg_init_uart1(void)
{
CLK_EnableModuleClock(UART1_MODULE);
CLK_SetModuleClock(UART1_MODULE, CLK_CLKSEL1_UART1SEL_PCLK1, CLK_CLKDIV0_UART1(1));
return;
}
void nutool_modclkcfg_deinit_uart1(void)
{
CLK_DisableModuleClock(UART1_MODULE);
return;
}
void nutool_modclkcfg_init_uart2(void)
{
CLK_EnableModuleClock(UART2_MODULE);
CLK_SetModuleClock(UART2_MODULE, CLK_CLKSEL3_UART2SEL_PCLK0, CLK_CLKDIV4_UART2(1));
return;
}
void nutool_modclkcfg_deinit_uart2(void)
{
CLK_DisableModuleClock(UART2_MODULE);
return;
}
void nutool_modclkcfg_init_usbd(void)
{
CLK_EnableModuleClock(USBD_MODULE);
CLK_SetModuleClock(USBD_MODULE, CLK_CLKSEL0_USBDSEL_HIRC, MODULE_NoMsk);
return;
}
void nutool_modclkcfg_deinit_usbd(void)
{
CLK_DisableModuleClock(USBD_MODULE);
return;
}
void nutool_modclkcfg_init_usci0(void)
{
CLK_EnableModuleClock(USCI0_MODULE);
return;
}
void nutool_modclkcfg_deinit_usci0(void)
{
CLK_DisableModuleClock(USCI0_MODULE);
return;
}
void nutool_modclkcfg_init_wdt(void)
{
CLK_EnableModuleClock(WDT_MODULE);
CLK_SetModuleClock(WDT_MODULE, CLK_CLKSEL1_WDTSEL_LIRC, MODULE_NoMsk);
return;
}
void nutool_modclkcfg_deinit_wdt(void)
{
CLK_DisableModuleClock(WDT_MODULE);
return;
}
void nutool_modclkcfg_init_wwdt(void)
{
CLK_EnableModuleClock(WWDT_MODULE);
CLK_SetModuleClock(WWDT_MODULE, CLK_CLKSEL1_WWDTSEL_HCLK_DIV2048, MODULE_NoMsk);
return;
}
void nutool_modclkcfg_deinit_wwdt(void)
{
CLK_DisableModuleClock(WWDT_MODULE);
return;
}
void nutool_modclkcfg_init_rtc(void)
{
CLK_EnableModuleClock(RTC_MODULE);
return;
}
void nutool_modclkcfg_deinit_rtc(void)
{
CLK_DisableModuleClock(RTC_MODULE);
return;
}
void nutool_modclkcfg_init_base(void)
{
/* Enable clock source */
CLK_EnableXtalRC(CLK_PWRCTL_LIRCEN_Msk | CLK_PWRCTL_HIRCEN_Msk | CLK_PWRCTL_LXTEN_Msk | CLK_PWRCTL_HXTEN_Msk);
/* Waiting for clock source ready */
CLK_WaitClockReady(CLK_STATUS_LIRCSTB_Msk | CLK_STATUS_HIRCSTB_Msk | CLK_STATUS_LXTSTB_Msk | CLK_STATUS_HXTSTB_Msk);
/* Disable PLL first to avoid unstable when setting PLL */
CLK_DisablePLL();
/* Set PLL frequency */
CLK->PLLCTL = (CLK->PLLCTL & ~(0x000FFFFFul)) | 0x0008C02Eul;
/* Waiting for PLL ready */
CLK_WaitClockReady(CLK_STATUS_PLLSTB_Msk);
/* If the defines do not exist in your project, please refer to the related clk.h in the Header folder appended to the tool package. */
/* Set HCLK clock */
CLK_SetHCLK(CLK_CLKSEL0_HCLKSEL_HIRC, CLK_CLKDIV0_HCLK(1));
/* Set PCLK-related clock */
CLK->PCLKDIV = (CLK_PCLKDIV_APB0DIV_DIV1 | CLK_PCLKDIV_APB1DIV_DIV1);
return;
}
void nutool_modclkcfg_init(void)
{
/*---------------------------------------------------------------------------------------------------------*/
/* Init System Clock */
/*---------------------------------------------------------------------------------------------------------*/
//CLK->PWRCTL = (CLK->PWRCTL & ~(0x0000000Ful)) | 0x0231001Ful;
//CLK->PLLCTL = (CLK->PLLCTL & ~(0x000FFFFFul)) | 0x0008C02Eul;
//CLK->CLKDIV0 = (CLK->CLKDIV0 & ~(0x00FFFFFFul)) | 0x00000000ul;
//CLK->CLKDIV4 = (CLK->CLKDIV4 & ~(0x0000000Ful)) | 0x00000000ul;
//CLK->PCLKDIV = (CLK->PCLKDIV & ~(0x00000077ul)) | 0x00000000ul;
//CLK->CLKSEL0 = (CLK->CLKSEL0 & ~(0x0000013Ful)) | 0x0000003Ful;
//CLK->CLKSEL1 = (CLK->CLKSEL1 & ~(0x7777777Ful)) | 0x4477773Bul;
//CLK->CLKSEL2 = (CLK->CLKSEL2 & ~(0x00300033ul)) | 0x00200023ul;
//CLK->CLKSEL3 = (CLK->CLKSEL3 & ~(0x07000000ul)) | 0x04000000ul;
//CLK->AHBCLK = (CLK->AHBCLK & ~(0x0000009Eul)) | 0x0000009Eul;
//CLK->APBCLK0 = (CLK->APBCLK0 & ~(0x180723FDul)) | 0x180723BDul;
//CLK->APBCLK1 = (CLK->APBCLK1 & ~(0x00030100ul)) | 0x00030100ul;
//CLK->CLKOCTL = (CLK->CLKOCTL & ~(0x0000003Ful)) | 0x00000000ul;
//SysTick->CTRL = (SysTick->CTRL & ~(0x00000005ul)) | 0x00000001ul;
/* Unlock protected registers */
SYS_UnlockReg();
/* Enable base clock */
nutool_modclkcfg_init_base();
/* Enable module clock and set clock source */
nutool_modclkcfg_init_acmp01();
nutool_modclkcfg_init_adc();
nutool_modclkcfg_init_crc();
nutool_modclkcfg_init_ebi();
nutool_modclkcfg_init_hdiv();
nutool_modclkcfg_init_i2c0();
nutool_modclkcfg_init_i2c1();
nutool_modclkcfg_init_isp();
nutool_modclkcfg_init_pdma();
nutool_modclkcfg_init_pwm0();
nutool_modclkcfg_init_pwm1();
nutool_modclkcfg_init_spi0();
nutool_modclkcfg_init_systick();
nutool_modclkcfg_init_tmr0();
nutool_modclkcfg_init_tmr1();
nutool_modclkcfg_init_tmr2();
nutool_modclkcfg_init_tmr3();
nutool_modclkcfg_init_uart0();
nutool_modclkcfg_init_uart1();
nutool_modclkcfg_init_uart2();
nutool_modclkcfg_init_usbd();
nutool_modclkcfg_init_usci0();
nutool_modclkcfg_init_wdt();
nutool_modclkcfg_init_wwdt();
nutool_modclkcfg_init_rtc();
/* Update System Core Clock */
/* User can use SystemCoreClockUpdate() to calculate SystemCoreClock. */
SystemCoreClockUpdate();
/* Lock protected registers */
SYS_LockReg();
return;
}
/*** (C) COPYRIGHT 2013-2020 Nuvoton Technology Corp. ***/