美文网首页
2018-04-26 STM32中使用内部RC振荡器做系统时钟

2018-04-26 STM32中使用内部RC振荡器做系统时钟

作者: 酝锦 | 来源:发表于2019-02-20 17:12 被阅读0次

STM32使用内部RC振荡器时,OSC32_IN,OSC32_OUT接法:

    1)对于100脚或144脚的产品,OSC_IN应接地,OSC_OUT应悬空。

    2)对于少于100脚的产品,有2种接法:

          2.1)OSC_IN和OSC_OUT分别通过10K电阻接地。此方法可提高EMC性能。

          2.2)分别重映射OSC_IN和OSC_OUT至PD0和PD1,再配置PD0和PD1为推挽输出并输出'0'。此方法可以减小功耗并(相对上面2.1)节省2个外部电阻。

例程如下:

//=== 晶振脚重映射到PD0,PD1 并配置为推挽输出输出‘0’

void HSI_Config(void) 

   GPIO_InitTypeDef GPIO_InitStructure; 

   RCC_DeInit(); /*将外设RCC寄存器重设为缺省值*/  

   RCC_HSICmd(ENABLE);  

   while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY)== RESET);//等待HSI就绪  

   RCC_HCLKConfig(RCC_SYSCLK_Div1);  /*设置AHB时钟(HCLK) RCC_SYSCLK_Div1——AHB时钟 = 系统时*/   

   RCC_PCLK2Config(RCC_HCLK_Div1);  /*设置高速AHB时钟(PCLK2)RCC_HCLK_Div1——APB2时钟= HCLK*/      

   RCC_PCLK1Config(RCC_HCLK_Div2); /*设置低速AHB时钟(PCLK1)RCC_HCLK_Div2——APB1时钟= HCLK /2*/       

   FLASH_SetLatency(FLASH_Latency_2); //FLASH_Latency_2 2延时周期 

   FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//预取指缓存使能 

    RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_16);/*设置PLL时钟源及倍频系数,频率为8/2*16=64Mhz*/     

   RCC_PLLCmd(ENABLE);      /*使能PLL */  

   while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) ; /*检查指定的RCC标志位(PLL准备好标志)设置与否*/     

   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  /*设置系统时钟(SYSCLK)*/   

   while(RCC_GetSYSCLKSource() != 0x08);    /*0x08:PLL作为系统时钟*/    

   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD |RCC_APB2Periph_AFIO,ENABLE);//打开重映射时钟,并打开重映射后的IO口 

   GPIO_PinRemapConfig(GPIO_Remap_PD01,ENABLE); //IO口重映射开启 

   /*选择要控制的引脚*/ 

   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1; 

   /*设置引脚为通用推挽输出*/ 

   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 

   /*设置引脚速率为50MHz*/ 

   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 

   /*调用库函数,初始化GPIOC*/ 

   GPIO_Init(GPIOD, &GPIO_InitStructure); 

   /*固定IO口下拉到地*/ 

   GPIO_ResetBits(GPIOD, GPIO_Pin_0 | GPIO_Pin_1); 

    HSI内部8MHz的RC振荡器的误差在1%左右,内部RC振荡器的精度通常比用HSE(外部晶振)要差上十倍以上。STM32的ISP就是用(HSI)内部RC振荡器。

相关文章

  • 2018-04-26 STM32中使用内部RC振荡器做系统时钟

    STM32使用内部RC振荡器时,OSC32_IN,OSC32_OUT接法: 1)对于100脚或144脚的产品,OS...

  • STM32使用内部rc振荡器做时钟源

    在做开发时,一些场合对时钟要求不是非常精确的时候可以省掉外部晶体和两个电容,好处是可以简化布线,节省成本并进一步降...

  • 12/14

    STM32时钟系统在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。①HSI是高速内部时钟,...

  • 10.11 嵌入式知识点总结

    1.内部时钟源采用 RC振荡器不精准 2.外部时钟源采用晶振精准 3.0xCCCC开始启动看门狗 4.0xAAAA...

  • STM32学习:STM32时钟系统

    一、时钟树介绍 三种不同的时钟源可被用来驱动系统时钟(SYSCLK): HSI振荡器时钟 HSE振荡器时钟 PLL...

  • 11.26

    时钟树 1 内部低速振荡器(LSI,40Khz) 2 外部低速振荡器(LSE,32.768Khz) 3 ...

  • 系统时钟

    什么是系统时钟?什么是时钟系统? 通常所说的系统时钟就是指时钟系统,它是由振荡器(信号源)、定时唤醒器、分频器等组...

  • 嵌入式9月14号总结。

    今天学习了时钟,开始配置内部时钟和外部时钟,展示了时钟的电路图,让我更加了解了stm32的运行模式,内部时钟输出9...

  • 一、stm32最小系统

    STM32最小系统 由四个模块构成:电源电路、时钟电路、复位电路、下载电路 电源电路 时钟电路 STM32最小系统...

  • STM32一文通(4) RCC时钟控制理论

    我们使用库函数编程时, STM32默认调用了SetSysClockTo72()函数;已经配置了内部72MHz时钟,...

网友评论

      本文标题:2018-04-26 STM32中使用内部RC振荡器做系统时钟

      本文链接:https://www.haomeiwen.com/subject/mwnhyqtx.html