stm32启用内部晶振(stm32设置外部晶振)

STM32微控制器包含内部和外部晶振,外部晶振分为高速和低速,用于提供精确的时钟源给系统和特定外设,如RTC。内部RC振荡器则用于备用或低功耗场景。STM32可以配置使用内部或外部时钟源,通过PLL倍频来调整工作频率。文章还提到了STM32的GPIO重映射和ADC转换的相关信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STM32中的晶振电路有什么作用

stm32  有两个可接入的外部晶振,自己内部也有低俗的晶振。举个例子,手册也有说明低速主要给RTC使用了,高速是给一些外设及内核提供时钟元,内部的主要是给看门狗用或者提供rtc时钟,不过比较慢。

stm32为什么有内部晶振和外部晶振

stm需要2个晶振,1个是hse,常用外部高频,pll倍频用,常为8mhz;另一个为外部低频晶振,系统待机或低功耗时用,为32.6khz。外接的那个用于rtc的32768晶振,需要专用的6pf负载晶振。内部也有高低频rc振荡器。

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的晶振,工作频率是多少?还有自带的ADC转换是不 ...

STM32F103系列芯片,最高工作频率可以到72M,使用8M的外部晶振,一般还需要使用内部的PLL锁相环进行倍频,相比于内部的8M的RC震荡。

STM32工作频率是由晶振倍频来的,以STM32F103VBT6为例,晶振是8M,设置PLL倍频为9的话,工作频率为72M,一般ADC电压不超过VCC;

如果超过ADC,一方面数据可能出错,另一方面电压超过IO口承受范围造成单片损坏,ADC一般都通过电阻分压后进行转换,很少有人把直接信号直接引入ADC转换,特别是功率信号。

扩展资料:

STM32F103ZET6芯片为144脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,同时每组GPIO口组有16个GPIO口。通常简略称为PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x为0-15。

在STM32F105和STM32F107互连型系列微控制器之前,意法半导体已经推出STM32基本型系列、增强型系列、USB基本型系列、互补型系列;新系列产品沿用增强型系列的72MHz处理频率。内存包括64KB到256KB闪存和 20KB到64KB嵌入式SRAM。

新系列采用LQFP64、LQFP100和LFBGA100三种封装,不同的封装保持引脚排列一致性,结合STM32平台的设计理念,开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求。

如何判定STM32使用的是外部晶振还是内部晶振

要是有仿真器可以在时钟分频的地方加一个断点,初始化仿真看下程序跑到那里的时候是什么频率就能知道是外部晶振还是内部晶振了。也可直接看电路板上没有外部晶振就是用的内部的。

### STM32F103 内部晶振参数特性及使用方法 #### 定义与启用内部晶振 对于STM32F103系列微控制器而言,在`stm32f1xx_hal_conf.h`文件中通过将`HSE_VALUE`宏定义设为0来表明不采用外部高速晶体震荡器(HSE),而是选用内部RC振荡器作为系统时钟源[^1]。 ```c #define HSE_VALUE ((uint32_t)0U) /*!< Value of the External oscillator in Hz */ ``` 这一步骤确保了即使没有外接晶体,MCU也能正常启动并运行于默认的内部时钟频率下。 #### 配置内部晶振的具体操作 为了使能和配置内部高速时钟(HSI),可以调用HAL库提供的API函数。通常情况下,默认状态下HSI已经被激活,并提供大约8 MHz 的时钟信号给PLL输入端用于倍频得到更高的工作频率。如果需要进一步调整或确认当前状态,则可以通过如下方式实现: ```c // 启动HSI并等待稳定 __HAL_RCC_HSI_ENABLE(); while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY)==RESET); // 设置AHB分频系数, APB1/APB2预分频因子等... RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; // 初始化OSCI结构体成员变量 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; RCC_OscInitStruct.HSIState = RCC_HSI_ON; if (HAL_RCC_OscConfig(&RCC_OscInitStruct)!= HAL_OK){ Error_Handler(); } // 获取当前使用的时钟树信息 RCC_GetClocksFreq(&RCC_Clocks); printf("System Clock Frequency:%lu\r\n", RCC_Clocks.SYSCLK_Frequency); ``` 上述代码片段展示了如何利用HAL库接口完成对内部晶振的操作以及读取实际工作的时钟速率[^3]。 #### 关键特点总结 - **内置性质**:无需额外安装物理组件即可获得稳定的时基; - **低功耗模式支持**:允许进入停止/待机模式而不影响唤醒后的计数准确性; - **快速启动能力**:相比起外部石英晶体来说具有更短的上电到可用的时间间隔; - **精度有限**:由于是基于片内的电阻电容网络构建而成,因此其绝对误差可能较大;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值