`
hzy3774
  • 浏览: 992381 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

STM32学习笔记之修改外部晶振频率

 
阅读更多

我们常用的STM32F10x系列单片机外部晶振频率默认指定成了8M,如果外部电路发生修改,外部晶振发生了变化,会导致系统主频变化,串口输出乱码。

外部晶振频率定义在库头文件:stm32f10x.h中:

/**
 * @brief In the following line adjust the value of External High Speed oscillator (HSE)
   used in your application 
   
   Tip: To avoid modifying this file each time you need to use different HSE, you
        can define the HSE value in your toolchain compiler preprocessor.
  */           
#if !defined  HSE_VALUE
 #ifdef STM32F10X_CL   
  #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
 #else 
  #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
 #endif /* STM32F10X_CL */
#endif /* HSE_VALUE */

 HSE_VALUE就是外部晶振的频率,我们可以看到代码中定义了两种频率:25M和8M,默认情况下使用的是8M。注释里说如果不想修改代码,也可以在编译宏定义中定义HSE的值。当然直接修改头文件也可以:

修改方法,比如要修改成12M:

1.修改stm32f10x.h

#if !defined  HSE_VALUE
 #ifdef STM32F10X_CL   
  #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
 #else 
  //#define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
	#define HSE_VALUE    ((uint32_t)12000000) /*!< Value of the External oscillator in Hz */
 #endif /* STM32F10X_CL */
#endif /* HSE_VALUE */

 2.为保证系统主频还是72M,还要改system_stm32f10x.c里的SetSysClockTo72()函数

 

    /*  PLL configuration: PLLCLK = HSE * 9 = 72 MHz */
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |
                                        RCC_CFGR_PLLMULL));
    RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);

 通过注释可以看到72M是通过HSE*9得到,现在HSE成了12,PLLNUM只需要6就可以到72M:

 

 /*  PLL configuration: PLLCLK = HSE * 9 = 72 MHz */
    RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |
                                        RCC_CFGR_PLLMULL));
    //RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);
		
		/*  PLL configuration: PLLCLK = HSE * 6 = 72 MHz */
		RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6);

 重新编译运行,串口输出正常。

分享到:
评论

相关推荐

    STM32F407配置内部晶振

    STM32F4xx_AN3988_V1.1.0可能是意法半导体提供的一个应用笔记或固件包,包含了关于STM32F407内部晶振配置的详细信息和技术指南。用户可以参考这份文档来学习如何优化和管理内部晶振,以及如何使用提供的工具进行配置...

    STM32学习笔记(超详细整理144个问题)1

    这篇STM32学习笔记主要涵盖了STM32的基础知识,包括时钟系统、寄存器配置、中断管理以及系统复位等方面。 1. STM32的时钟系统: - AHB(Advanced High-performance Bus)系统总线分为APB1和APB2,其中APB2工作频率...

    STM32学习笔记,入门学习笔记

    STM32学习笔记,作为一款基于ARM Cortex-M内核的微控制器,STM32具有丰富的功能和广泛应用场景,尤其适合嵌入式系统开发初学者。本文档主要涵盖STM32的基础知识,包括芯片介绍、新建工程流程以及GPIO的输入输出操作...

    STM32学习笔记

    - 32.768KHz低速外部晶振,作为实时时钟(RTC)的时钟源。 时钟源的开启和关闭可以独立控制,以优化电源消耗。通过预分频器,可以对AHB、APB2和APB1的时钟频率进行配置。AHB和APB2的最高频率可达72MHz,而APB1最高...

    stm32学习笔记

    ### STM32学习笔记知识点梳理 #### 一、STM32 GPIO操作 **知识点1:通过原理图了解引脚功能** - **要点说明**:在STM32开发中,了解引脚的功能非常重要。通常,可以通过查看开发板的原理图来确定特定引脚的功能。 ...

    STM32自学笔记_巧悦STM32F103学习板_用户手册

    - **外部晶振**:提供8MHz和32.768KHz的频率源。 - **3.3V电源接口**:为电路板上的3.3V设备提供电源。 - **ADC拨盘调节电位器**:用于模拟数字转换实验的模拟信号调节。 - **复位微动按键**:用于复位STM32F103RC...

    STM32F4xx学习笔记

    在这个学习笔记中,我们将深入探讨STM32F4xx的时钟配置以及相关的一些关键概念。 首先,STM32F4xx的时钟系统是整个处理器工作的心脏,它决定了所有外设和内核的速度。最高层级的系统时钟(SYSCLK)是系统的主时钟源...

    STM32学习笔记——系统定时器systick的使用

    STM32学习笔记——系统定时器SysTick的使用 该资源为STM32学习笔记,详细介绍了RCC系统时钟的配置方法,内有程序代码,可以正常运行,注释详细。主要讲解了SysTick定时器的使用和配置。 一、SysTick定时器概述 ...

    STM32学习笔记 新人必看哦

    ### STM32学习笔记知识点详解 #### 一、STM32 Flash操作函数 **知识点概述:** STM32 Flash操作函数主要用于对STM32微控制器内部的Flash存储器进行读取、状态检查、擦除及写入等操作。这对于开发基于STM32的应用...

    STM32F103C8小系统_STM32F103C8T6最小系统资料包_stm32f103c8t6文档_

    2. 时钟源:可以选择外部晶振或内部RC振荡器,外部晶振提供更精确的时钟。 3. 复位电路:确保MCU能够正确启动,通常包含电源复位和按钮复位。 4. 排阻和电容:连接到GPIO引脚以保护和稳定信号。 5. 编程和调试接口:...

    cortex-m3学习笔记(STM32)

    根据提供的标题、描述以及部分内容,我们可以深入探讨Cortex-M3处理器及其在STM32平台上的应用,特别是关于ALIENTEK MiniSTM32开发板的学习笔记。 ### Cortex-M3的两种运行模式 Cortex-M3处理器有两种运行模式:**...

    基于CUBE_HAL的STM32F103学习笔记(更新至第11课).doc

    RCC管理着所有外设的时钟源,通常我们会选择使用外部晶体振荡器(如8MHz)作为主时钟源,因为外部晶振提供了更精确的时钟频率。 接下来,我们需要对时钟进行配置,这包括选择系统时钟源、设置预分频器和倍频器,以...

    STM32F2xx时钟配置工具(官方)

    在STM32F207和STM32F217这两款器件中,内部集成了多种时钟源,如高速内部振荡器(HSI)、高速外部晶振输入(HSE)、低速内部振荡器(LSI)和低速外部晶振输入(LSE)。通过选择合适的时钟源并经过PLL的处理,可以...

    stm32f103c8t5

    STM32F103C8T6是意法半导体...这些知识点对于学习和使用STM32F103C8T6进行项目开发至关重要。通过深入理解和实践,开发者能够掌握如何设计和调试基于STM32F103C8T6的系统,从而应用于各种嵌入式应用场景。

    STM32系统时钟

    * LSE Osc:低速外部时钟,接一个 32.768KHz 的晶振,用来给 RTC 时钟供电,RTC 时钟是内部实时时钟。 * LSI RC:内部低速 RC 振荡器,频率约为 40KHz,对独立看门狗提供时钟。 二、时钟监视系统(CSS) 时钟监视...

    STM32最小系统版原理图

    4. **晶振与时钟电路**:STM32需要一个外部时钟源来设定其工作频率。常见的选择是晶体振荡器(如8MHz或16MHz)或者陶瓷谐振器,配合内部倍频器产生所需的系统时钟,如72MHz。 5. **BOOT选择跳线**:STM32有多种启动...

    Fiction-stm32f103c8t6笔记

    通过实践和阅读"Fiction-stm32f103c8t6笔记",你将能深入了解STM32F103C8T6的硬件接口、软件编程及其实验案例,从而在嵌入式系统设计中游刃有余。记得在学习过程中结合实际项目,动手操作,理论与实践相结合,才能更...

Global site tag (gtag.js) - Google Analytics