[应用相关] STM32 HSI RCC时钟配置

[复制链接]
 楼主| 玛尼玛尼哄 发表于 2016-12-17 22:37 | 显示全部楼层 |阅读模式
因为不用精确的定时,因此想不用外部晶振,直接使用内部的8MHz RC振荡器作为主振,倍频后系统时钟为36MHz
现将源代码贴在此处。


 楼主| 玛尼玛尼哄 发表于 2016-12-17 22:38 | 显示全部楼层
  1. /**********************************************************************
  2. * 名    称:void RCC_HSEConfiguration(void)
  3. * 功    能:使用HSI作为主时钟,然后经过倍频PLL=36MHz
  4. * 入口参数:无
  5. * 出口参数:
  6. -----------------------------------------------------------------------
  7. * 说    明:
  8. ***********************************************************************/
  9. void RCC_HSIConfiguration(void)
  10. {
  11.   RCC_DeInit();
  12.    
  13.   RCC_HSICmd(ENABLE);
  14.   while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);
  15.   
  16.   RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
  17.   
  18.   RCC_HSEConfig(RCC_HSE_OFF);
  19.   RCC_LSEConfig(RCC_LSE_OFF);
  20.   RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //  PLL为 36HMz
  21.   RCC_PLLCmd(ENABLE);
  22.   while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
  23.   RCC_ADCCLKConfig(RCC_PCLK2_Div4);
  24.   RCC_PCLK2Config(RCC_HCLK_Div1);
  25.   RCC_PCLK1Config(RCC_HCLK_Div2);
  26.   RCC_HCLKConfig(RCC_SYSCLK_Div1);
  27.   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
  28.   while(RCC_GetSYSCLKSource() != 0x08);
  29. //   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB
  30. //                          | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD
  31. //                          | RCC_APB2Periph_AFIO, ENABLE);
  32. //   RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 |RCC_APB2Periph_ADC1 , ENABLE);
  33. //   RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
  34. }


天灵灵地灵灵 发表于 2016-12-18 11:50 | 显示全部楼层
如果用外部晶振的话,哪天晶振坏了就不好办了。
 楼主| 玛尼玛尼哄 发表于 2016-12-25 23:07 | 显示全部楼层
楼上说的很对,所以如果不是要求特别高的可以用内部的定时器,比如看门狗的时钟就可用内部的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

196

主题

3258

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部