配置HSE时钟

配置HSE时钟步骤详解
本文详细介绍了配置HSE时钟的过程,包括使能HSE、执行FALSH预指令、设定AHB/APB时钟比例、配置锁相环为HSE 1分频、等待PLL稳定以及切换系统时钟至PLL。示例代码展示了如何在main函数中根据参数调整频率。

我们来写一个配置HSE时钟的函数
1.使能HSE,等待HSE使能成功
2.进行FALSH的预指令操作
3.设置HCLK,PCLK2,PCLK1比例
4.配置锁相环,选择HSE 1分频
5.使能锁相环,等待PLL稳定
6.选择PLL作为系统时钟
代码:

void HseConfig(uint32_t RCC_PLLMul_x)
{  
	 
	 ErrorStatus result;
	// 把RCC 寄存器复位成复位值
	RCC_DeInit();	
   /*使能HSE*/
   RCC_HSEConfig(RCC_HSE_ON);
	/*等待HSE使能成功*/
	result = RCC_WaitForHSEStartUp();
	/*如果HSE使能成功*/
	if(result == SUCCESS)
	{
	  /*进行FLASH的预指令操作*/
		FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
		FLASH_SetLatency(FLASH_Latency_2);
		/*设置HCLK,PCLK2,PCLK1比例*/
		RCC_HCLKConfig(RCC_SYSCLK_Div1);
		RCC_PCLK1Config(RCC_HCLK_Div2);
		RCC_PCLK2Config(RCC_HCLK_Div1);
		/*配置锁相环*/
		 RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_x);
		/*使能锁相环*/
		RCC_PLLCmd(ENABLE);
		
		// 等待PLL稳定
		while( RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET );
		
    // 选择系统时钟
		RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
		
    while( RCC_GetSYSCLKSource() != 0x08 );
	}
	else
  {
		/* 如果HSE 启动失败,用户可以在这里添加处理错误的代码 */
	}
	
}

在main函数通过传入参数改变频率

int main(void)
{
	// 来到这里的时候,系统的时钟已经被配置成72M。
	
	 HseConfig(RCC_PLLMul_9);
	//HSI_SetSysClk( RCC_PLLMul_16 );
	
	//MCO_GPIO_Config();
	//RCC_MCOConfig(RCC_MCO_SYSCLK);
	//RCC_MCOConfig(RCC_MCO_HSI);
	
	LED_GPIO_Config();
	
	while(1)
	{
		
		LED_G(OFF);
		Delay(0xFFFFF);
		
		LED_G(ON);
		Delay(0xFFFFF);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值