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

83 lines
2.2 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "../main/SystemInclude.h"
/**
* @brief 系统时钟初始化函数
* @note 配置芯片时钟树,使用内部高速时钟(HSI) 16MHz 作为系统时钟源,
* HCLK = 4MHzAPB1/APB2 时钟均等于 HCLK。
* @param 无
* @example SystemClockConfiguration();
*/
void SystemClockConfiguration(void)
{
RCC_ClockInitTypeDef Clock_InitStructure;
Clock_InitStructure.SYSCLKSource = RCC_SYSCLK_SRC_HSI_DIV2; // SYSCLK = 32M/2 = 16MHz
Clock_InitStructure.AHBCLKDivider = RCC_SYSCLK_DIV4; // 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
}
}
/**
* @brief 时钟输出(MCO)初始化函数
* @note 配置 P0.4 引脚为 ECLKOUT 功能,输出所选时钟源信号,
* 当前使用 PCLK1 作为 MCO 输出时钟源。
* @param 无
* @example System_MCO_Config();
*/
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)
{
}