173 2438 5004
KEROS加密芯片——品牌直销 | 免费样品 | 技术支持
当前位置:网站首页 > 资讯中心 正文 资讯中心

stm32f373如何使用内部时钟

keros@mark 2023-03-18 资讯中心

stm32 定时器怎么选择内部时钟

去ST的官网上找一个包含宏的EXCEl文件

就是专门为配置时钟设计的

可视化配置过程,用那个就可以任意组合时钟源和PLL

去具体芯片的目录下找一个芯片对应一个的

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

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振荡器。

STM32怎样使用内部8M振荡器作为时钟

一般你看到的STM32程序都是用HSE + PLL作为时钟的,因此在程序的一开始调用函数进行了设置,比如RCC_Dein();.

STM32默认就是用内部HSI作为时钟,所以,如果你上电,不对RCC进行任何设置,就是使用内部8M振荡器作为时钟,当然了,精度不够而已

stm32的内部时钟在哪儿配置

首先在主程序中注释掉SystemInit();

然后使用下面的函数做为系统时钟的初始化函数

void RCC_Configuration(void)

{

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

RCC_HSICmd(ENABLE);//使能HSI

while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);//等待HSI使能成功

//FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

//FLASH_SetLatency(FLASH_Latency_2);

RCC_HCLKConfig(RCC_SYSCLK_Div1);

RCC_PCLK1Config(RCC_HCLK_Div2);

RCC_PCLK2Config(RCC_HCLK_Div1);

//设置 PLL 时钟源及倍频系数

RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_2);//使能或者失能 PLL,这个参数可以取:ENABLE或者DISABLE

RCC_PLLCmd(ENABLE);//如果PLL被用于系统时钟,那么它不能被失能

//等待指定的 RCC 标志位设置成功 等待PLL初始化成功

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

//设置系统时钟(SYSCLK) 设置PLL为系统时钟源

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//选择想要的系统时钟

//等待PLL成功用作于系统时钟的时钟源

//  0x00:HSI 作为系统时钟

//  0x04:HSE作为系统时钟

//  0x08:PLL作为系统时钟

while(RCC_GetSYSCLKSource() != 0x08);//需与被选择的系统时钟对应起来,RCC_SYSCLKSource_PLL

}

void RCC_Configuration(void)

{

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

   RCC_HSICmd(ENABLE);//使能HSI  

   while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);//等待HSI使能成功

   //FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

   //FLASH_SetLatency(FLASH_Latency_2);

 

   RCC_HCLKConfig(RCC_SYSCLK_Div1);  

   RCC_PCLK1Config(RCC_HCLK_Div2);

   RCC_PCLK2Config(RCC_HCLK_Div1);

   

   //设置 PLL 时钟源及倍频系数

   RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_2);//使能或者失能 PLL,这个参数可以取:ENABLE或者DISABLE

   RCC_PLLCmd(ENABLE);//如果PLL被用于系统时钟,那么它不能被失能

   //等待指定的 RCC 标志位设置成功 等待PLL初始化成功

   while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

   //设置系统时钟(SYSCLK) 设置PLL为系统时钟源

   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//选择想要的系统时钟

   //等待PLL成功用作于系统时钟的时钟源

   //  0x00:HSI 作为系统时钟

   //  0x04:HSE作为系统时钟

   //  0x08:PLL作为系统时钟  

   while(RCC_GetSYSCLKSource() != 0x08);//需与被选择的系统时钟对应起来,RCC_SYSCLKSource_PLL

}

补充一点:

由图可以看出系统时钟的供给可以有3种方式,HSI,HSE,PLL。如果选用内部时钟作为系统时钟,其倍频达不到72Mhz,最多也就8Mhz/2*16 = 64Mhz。

STM32 内部时钟输出PA.8(MCO) 如何实现 ,求大侠给例程,谢谢

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(GPIOA, GPIO_InitStructure);

RCC_MCOConfig(RCC_MCO_PLLCLK_Div2 );

STM32F103只要这样写就OK了啊~

本文标签:stm32f373如何使用内部时钟

产品列表
产品封装
友情链接