#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) { }