打印
[应用相关]

STM32 HSI RCC时钟配置

[复制链接]
416|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
玛尼玛尼哄|  楼主 | 2016-12-17 22:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
因为不用精确的定时,因此想不用外部晶振,直接使用内部的8MHz RC振荡器作为主振,倍频后系统时钟为36MHz
现将源代码贴在此处。


沙发
玛尼玛尼哄|  楼主 | 2016-12-17 22:38 | 只看该作者
/**********************************************************************
* 名    称:void RCC_HSEConfiguration(void)
* 功    能:使用HSI作为主时钟,然后经过倍频PLL=36MHz
* 入口参数:无
* 出口参数:
-----------------------------------------------------------------------
* 说    明:
***********************************************************************/
void RCC_HSIConfiguration(void)
{
  RCC_DeInit();
   
  RCC_HSICmd(ENABLE);
  while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);
  
  RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
  
  RCC_HSEConfig(RCC_HSE_OFF);
  RCC_LSEConfig(RCC_LSE_OFF);
  RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //  PLL为 36HMz
  RCC_PLLCmd(ENABLE);
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
  RCC_ADCCLKConfig(RCC_PCLK2_Div4);
  RCC_PCLK2Config(RCC_HCLK_Div1);
  RCC_PCLK1Config(RCC_HCLK_Div2);
  RCC_HCLKConfig(RCC_SYSCLK_Div1);
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
  while(RCC_GetSYSCLKSource() != 0x08);
//   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB
//                          | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD
//                          | RCC_APB2Periph_AFIO, ENABLE);
//   RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 |RCC_APB2Periph_ADC1 , ENABLE);
//   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
}


使用特权

评论回复
板凳
天灵灵地灵灵| | 2016-12-18 11:50 | 只看该作者
如果用外部晶振的话,哪天晶振坏了就不好办了。

使用特权

评论回复
地板
玛尼玛尼哄|  楼主 | 2016-12-25 23:07 | 只看该作者
楼上说的很对,所以如果不是要求特别高的可以用内部的定时器,比如看门狗的时钟就可用内部的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

168

主题

3045

帖子

2

粉丝