Files
CHJ/user/MCU/lhl_systemclock.c

83 lines
2.2 KiB
C
Raw Normal View History

2026-03-20 21:16:58 +08:00
#include "../main/SystemInclude.h"
2026-03-20 21:19:53 +08:00
/**
* @brief ϵͳʱ<EFBFBD>ӳ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>(HSI) 16MHz <EFBFBD><EFBFBD>Ϊϵͳʱ<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>
* HCLK = 4MHz<EFBFBD><EFBFBD>APB1/APB2 ʱ<EFBFBD>Ӿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> HCLK<EFBFBD><EFBFBD>
* @param <EFBFBD><EFBFBD>
* @example SystemClockConfiguration();
*/
2026-03-20 21:16:58 +08:00
void SystemClockConfiguration(void)
2026-03-20 21:19:53 +08:00
{
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
}
2026-03-20 21:16:58 +08:00
}
2026-03-20 21:19:53 +08:00
/**
* @brief ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(MCO)<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @note <EFBFBD><EFBFBD><EFBFBD><EFBFBD> P0.4 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ ECLKOUT <EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡʱ<EFBFBD><EFBFBD>Դ<EFBFBD>źţ<EFBFBD>
* <EFBFBD><EFBFBD>ǰʹ<EFBFBD><EFBFBD> PCLK1 <EFBFBD><EFBFBD>Ϊ MCO <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD>
* @param <EFBFBD><EFBFBD>
* @example System_MCO_Config();
*/
2026-03-20 21:16:58 +08:00
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);//ѡ<><D1A1><EFBFBD><EFBFBD>ʼʱ<CABC><CAB1>Դ
}
void disable_interrupts(void)
{
2026-03-20 21:19:53 +08:00
// __disable_irq();
2026-03-20 21:16:58 +08:00
}
void enable_interrupts(void)
{
2026-03-20 21:19:53 +08:00
// __enable_irq();
2026-03-20 21:16:58 +08:00
}
void ResetSystem(void)
{
}