Files
CHJ/user/MCU/lhl_systemclock.c
2026-03-20 21:19:04 +08:00

81 lines
2.0 KiB
C

#include "../main/SystemInclude.h"
/**
* @brief 系统时钟初始化函数
* @note 配置芯片时钟树,使用内部高速时钟(HSI)作为系统时钟源
*/
void SystemClockConfiguration(void)
{
RCC_ClockInitTypeDef Clock_InitStructure;
Clock_InitStructure.SYSCLKSource = RCC_SYSCLK_SRC_HSI_DIV2; // SYSCLK = 32M/2 = 16MHz
Clock_InitStructure.AHBCLKDivider = RCC_SYSCLK_DIV2; // PCLK = SYSCLK/4 = 4MHz
Clock_InitStructure.APB1CLKDivider = RCC_HCLK_DIV1; // PCLK1 = HCLK
Clock_InitStructure.APB2CLKDivider = RCC_HCLK_DIV1; // PCKL2 = HCLK
if (LHL_RCC_ClockConfig(&Clock_InitStructure, LHL_NRM_TIMEOUT) != LHL_OK)
{
while(1); // Error Handler
}
}
void System_MCO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
#if 0 //set p2.2 is MCO
GPIO_InitStruct.Pin = GPIO_PIN_2;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Current = GPIO_CURRENT_16mA;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.SchmittTrigger = ENABLE;
GPIO_InitStruct.Alternate = GPIO2_2_AF_ECLKOUT; // AF为
LHL_GPIO_Init(pGPIO2, &GPIO_InitStruct);
#endif
#if 1 //set p0.4 is ECLKOUT
GPIO_InitStruct.Pin = GPIO_PIN_4;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Current = GPIO_CURRENT_16mA;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.SchmittTrigger = ENABLE;
GPIO_InitStruct.Alternate = GPIO0_4_AF_ECLKOUT; // AF为
LHL_GPIO_Init(pGPIO0, &GPIO_InitStruct);
#endif
/** RCC_MCOSOURCE_LSI
* RCC_MCOSOURCE_SYSCLK
* RCC_MCOSOURCE_HSI
* RCC_MCOSOURCE_HSE
* RCC_MCOSOURCE_PLL_DIV2
* RCC_MCOSOURCE_PCLK1
* RCC_MCOSOURCE_PCLK2
* RCC_MCOSOURCE_HCLK */
LHL_RCC_MCOConfig(RCC_MCOSOURCE_PCLK1);//选择起始时钟源
}
void disable_interrupts(void)
{
__disable_irq();
}
void enable_interrupts(void)
{
__enable_irq();
}
void ResetSystem(void)
{
}