#include "../main/SystemInclude.h" /** * @brief 系统时钟初始化函数 * @note 配置芯片时钟树,使用内部高速时钟(HSI) 16MHz 作为系统时钟源, * HCLK = 4MHz,APB1/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) { }