温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何用HSE来控制系统时钟

发布时间:2022-01-06 16:14:42 来源:亿速云 阅读:258 作者:柒染 栏目:互联网科技

如何用HSE来控制系统时钟,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

如何用HSE来控制系统时钟

这个控制系统时钟(SYSCLK)利用的是的HSE(外部高速时钟8M)来作为时钟源

首先HSE经过PLLXTPRE(选择分频)时选择不分频

到了PLLSRC(选择锁相环时钟源)时选择HSE

在经过PLLMUL(选择倍频数)选择9倍频 8*9=72M

注意:这里可以选择16倍频,达到816=144但是不够稳定*

代码实现

bsp_rccclkconfig.c

void HSE_SetSysClk(uint32_t RCC_PLLMul_x)//这里的入口参数是选择倍频的数目(2-16) { ErrorStatus HSEStatus;//创建时钟状态变量

//使能外部高速时钟
RCC_HSEConfig(RCC_HSE_ON);

 HSEStatus = RCC_WaitForHSEStartUp();//等待外部时钟的开启

if( HSEStatus = SUCCESS)
{
	//使能预取址 **注意**这是flash里面的操作
	FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
	FLASH_SetLatency(FLASH_Latency_2);
		
	//配置分频因子
	RCC_HCLKConfig(RCC_SYSCLK_Div1);//AHB和系统时钟(72M)相等
	RCC_PCLK1Config(RCC_HCLK_Div2);//APB1为系统时钟(72M)的一半36M	注意当APB1为ADC模式时系统时钟比36M大
	RCC_PCLK2Config(RCC_HCLK_Div1);//APB2和系统时钟(72M)相等
	
	//设置锁相环的参数设置 外部高速时钟 选择9倍频	8*9=72M
	RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_x);
	
	//使能PLL
	RCC_PLLCmd(ENABLE);
	//等待PLL时钟稳定
	while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
		
	//选择系统时钟
	RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
	//查看是否系统时钟源是否为PLL锁相环时钟
	//- 0x00: HSI used as system clock
	//- 0x04: HSE used as system clock
	//- 0x08: PLL used as system clock
	while( RCC_GetSYSCLKSource() != 0x08 );
}
else
{
	//外部时钟开启失败操作
}

}

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI