STM32的时钟到底如何配置?

我看到有的例程用SystemInit函数,有的没用,到底哪种方法比较好啊?... 我看到有的例程用SystemInit函数,有的没用,到底哪种方法比较好啊? 展开
 我来答
08yjxian
推荐于2017-10-06 · TA获得超过100个赞
知道答主
回答量:119
采纳率:0%
帮助的人:44.8万
展开全部
时钟配置的话,你可以先想好自己的程序里面需要用到哪些外设,然后根据时钟树打开相应的外设时钟就行了。我这里给你一个一般的时钟配置的子程序吧:
void rcc_configuration(void)
{
ErrorStatus HSEStartUpStatus; //定义变量HSEStartUpStatus
RCC_DeInit(); //RCC重新配置
RCC_HSEConfig(RCC_HSE_ON); //打开HSE时钟
HSEStartUpStatus = RCC_WaitForHSEStartUp(); //读入RCC状态
if(HSEStartUpStatus == SUCCESS) //HSE时钟稳定
{
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //Flash预取缓冲使能;
FLASH_SetLatency(FLASH_Latency_2); //72MHz运行时,Flash需要等到2个周期;
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); //使用外部时钟的9倍作为PLL时钟;
RCC_PLLCmd(ENABLE); //使能PLL;

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) //等待PLL时钟稳定;
{
}

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //把系统时钟切换到PLL时钟;

while(RCC_GetSYSCLKSource() != 0x08) //判断PLL是否是系统时钟
{
}
}

下面这个是总线上的时钟配置:
RCC_HCLKConfig(RCC_SYSCLK_Div1); //主时钟为72MHz
RCC_PCLK2Config(RCC_HCLK_Div1); //APB2时钟为72MHz
RCC_PCLK1Config(RCC_HCLK_Div2); //APB1时钟为36MHz
RCC_ADCCLKConfig(RCC_PCLK2_Div4); //ADC时钟为18MHz

你也可以去看一下ST官方介绍库函数的文档,在官网上面有的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式