1个回答
展开全部
时钟配置的话,你可以先想好自己的程序里面需要用到哪些外设,然后根据时钟树打开相应的外设时钟就行了。我这里给你一个一般的时钟配置的子程序吧:
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官方介绍库函数的文档,在官网上面有的。
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官方介绍库函数的文档,在官网上面有的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询