STM32F103外部晶振由8M变为12M

发布者:平稳心绪最新更新时间:2017-09-02 来源: elecfans关键字:STM32F103  外部晶振 手机看文章 扫描二维码
随时随地手机看文章

官方提供的库文件中,HSE(外部高速时钟)默认为8MHz,最高主频为8*9=72MHz,如果将HSE变为12MHz,不修改库文件的话,最高主频则变为12*9=108MHz,最典型的问题就是USART可以通信,但是接收到的数据与发送的不一致,并且找不到啥原因,害的我瞎折腾了一整天,下面列举需要修改的地方。

1、修改stm32f10x.h中的HSE_VALUE,原本的代码如下:

  1. #if !defined  HSE_VALUE  

  2.  #ifdef STM32F10X_CL     

  3.   #define HSE_VALUE    ((uint32_t)25000000)   

  4.  #else   

  5.   #define HSE_VALUE    ((uint32_t)8000000)   

  6.  #endif   

  7. #endif   

 


修改后的如下:

 

  1. #if !defined  HSE_VALUE  

  2.  #ifdef STM32F10X_CL     

  3.   #define HSE_VALUE    ((uint32_t)25000000)   

  4.  #else   

  5.   #define HSE_VALUE    ((uint32_t)12000000)   

  6.  #endif   

  7. #endif   


2、修改system_stm32f10x.c中的时钟配置,先找到void SystemInit(void)---》SetSysClock()---》SetSysClockTo72(),将9倍频改为6倍频,12*6=72MHz,原本代码如下:

  1. #ifdef STM32F10X_CL  

  2.       

  3.             

  4.     RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL |  

  5.                               RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC);  

  6.     RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 |  

  7.                              RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5);  

  8.           

  9.     RCC->CR |= RCC_CR_PLL2ON;  

  10.       

  11.     while((RCC->CR & RCC_CR_PLL2RDY) == 0)  

  12.     {  

  13.     }  

  14.       

  15.      

  16.        

  17.     RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL);  

  18.     RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 |   

  19.                             RCC_CFGR_PLLMULL9);   

  20. #else      

  21.       

  22.     RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |  

  23.                                         RCC_CFGR_PLLMULL));  

  24.     RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL9);  

  25. #endif   


修改后的如下:

  1. #ifdef STM32F10X_CL  

  2.       

  3.       

  4.       

  5.           

  6.     RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL |  

  7.                               RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC);  

  8.     RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 |  

  9.                              RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5);  

  10.     

  11.       

  12.     RCC->CR |= RCC_CR_PLL2ON;  

  13.       

  14.     while((RCC->CR & RCC_CR_PLL2RDY) == 0)  

  15.     {  

  16.     }  

  17.       

  18.      

  19.        

  20.     RCC->CFGR &= (uint32_t)~(RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL);  

  21.     RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLXTPRE_PREDIV1 | RCC_CFGR_PLLSRC_PREDIV1 |   

  22.                             RCC_CFGR_PLLMULL9);  

  23.   

  24. #else      

  25.       

  26.     RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE |  

  27.                                         RCC_CFGR_PLLMULL));  

  28.     RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL6);  

  29. #endif   


关键字:STM32F103  外部晶振 引用地址:STM32F103外部晶振由8M变为12M

上一篇:STM32将PA13/PA14/PA15当做普通的IO口使用
下一篇:测试系统数字稳压电源设计方案

推荐阅读最新更新时间:2024-03-16 15:35

基于STM32F103的USB数据采集模块的设计
通用串行总线(USB,universalserialbus)由于具有高传输速率、即插即用和易于扩展等优点而被广泛应用于计算机外设、数字设备和仪器仪表等领域。ARM嵌入式处理器因其低廉的成本和较好的性能被广泛地应用于企业应用、汽车系统、家庭网络和无线技术等市场领域。将USB与ARM相结合是进行数据采集、处理与传输的理想解决方案。 1、USB数据采集系统概述 USB数据采集系统由主机和USB设备两部分组成,如图1所示。本系统中,PC作为USB主机,USB采集模块作为USB设备,通过USB接口与主机相连。模块与主机连接之后,主机能够正确识别设备并将设备初始化(枚举)。设备初始化完毕后,主机向采集模块发送采集命令和任务参数。采集模块正
[单片机]
基于<font color='red'>STM32F103</font>的USB数据采集模块的设计
STM32F103自定义的printf函数的实现
  在单片机中使用最多的通信接口基本就是串口了,说起串口就不得不提串口中最常用的一个函数就是打印函数printf()函数,通常使用这个函数都是直接调用库函数来实现的,在单片机中如何要使用printf()函数一般都是在串口中进行重映射。如要在串口1中使用printf()函数,可以使用下面的代码进行重映射。 //加入以下代码,支持printf函数,而不需要选择use MicroLIB #if 1 #pragma import(__use_no_semihosting) //标准库需要的支持函数 struct __FILE { int handle; }; FILE __stdout; //定义_sys_exit()以避免使用半
[单片机]
<font color='red'>STM32F103</font>自定义的printf函数的实现
STM32F103标准库开发:独立看门狗(IWDG)实验
一、独立看门狗(IWDG)基本知识 1. IWDG简介 独立看门狗是由专门的低速总线进行驱动,即LSI总线(时钟频率40KHz),它可以在主时钟故障的情况下仍然可以工作。 独立看门狗适合应用于需要看门狗作为一个在主程序之外 能够完全独立工作,并且对时间精度要求低的场合。 2. IWDG功能描述 在键值寄存器(IWDG_KR)中写入0xCCCC,开始启用独立看门狗。此时计数器开始从其复位值0xFFF递减,当计数器值计数到尾值0x000时会产生一个复位信号(IWDG_RESET)。 无论何时,只要在键值寄存器IWDG_KR中写入0xAAAA(通常说的喂狗), 自动重装载寄存器IWDG_RLR中的值就会重新加载到计数器,从而避免产生
[单片机]
<font color='red'>STM32F103</font>标准库开发:独立看门狗(IWDG)实验
不同stm32f103芯片内部外设资源
由表可知,芯片内部的外设资源除了跟stm32f103后面的第一个字母有关外,还和flash的大小有关。上面的表中只有一部分,具体的可以参考Keil的芯片型号选择部分。 下面是stm32f103c8t6的资源: TIM1_BRK_IRQn = 24, TIM1_UP_IRQn = 25, TIM1_TRG_COM_IRQn = 26, TIM1_CC_IRQn = 27, TIM2_IRQn = 28, TIM3_IRQn = 29, TIM4_IRQn 可以知道c8t6有一个高级定
[单片机]
不同<font color='red'>stm32f103</font>芯片内部外设资源
STM32F103标准库开发:LED跑马灯实验
一、硬件电路分析 具体LED原理图如下图所示: 由LED原理图可知: 当单片机的引脚,PB14和PB15输出低电平的时候,LED1和LED2 亮 。 当单片机的引脚,PB14和PB15输出高电平的时候,LED1和LED2 灭。 二、LED灯GPIO配置 1. GPIO初始化配置 使能GPIO时钟 APB2外设时钟启用和禁用函数 /** *@功能:启用和禁用APB2外设时钟 *@参数1:指定外围设备 *@参数2:指定外围设备状态 *@返回值:无 */ void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
[单片机]
<font color='red'>STM32F103</font>标准库开发:LED跑马灯实验
基于STM32F103的任意I/O口矩阵键盘驱动程序
网上的矩阵键盘代码非常非常多,但绝大部分都是要连续I/O口的,就比如PA0-PA7、PB3-PB10等等等,这些都要用到一排的连续的单片机引脚。用过STM32单片机的都知道,STM32单片机一排过去连续的引脚的不是很多,就算刚好出现了一排PA0-PA10,可是呢,PA2、PA3串口2要用,PA9、PA10串口1要用,这就显得比较局限。而且市面上的那些很多都是修改引脚要全文上下一处处修改,麻烦且容易错漏。所以如果我矩阵键盘的引脚可以随便定义的话那么是不是就不用愁这个问题了? 所以,这就是我给大家带来的任意可用的I/O的矩阵键盘程序,按键扫描代码直接操纵IO口,得出按键值。用法很简单:先看下图 我们看到,在key4_4.c中已经
[单片机]
基于<font color='red'>STM32F103</font>的任意I/O口矩阵键盘驱动程序
基于STM32F103C8T6单片机的计步器设计
一.系统设计 由 STM32F103C8T6 单片机 最小系统 + AD XL345 + L CD1602 显示屏。通过ADXL345 检测 震动和移动并完成计数。累加的步数会传输到LCD1602上进行显示,可以直观的观察自己的步数。 图1 系统框图 二. 硬件 设计 系统内的主要电路有单片机最小系统电路,步数采集电路、显示电路,系统的内的电路并不复杂,只实现的步数的采集累加以及显示的功能。对于计步器而言,本系统的步数采集能力较为不错,有较高的灵敏度。 图2 硬件电路 三.软件设计 系统的软件逻辑清晰,首先先进行一次系统初始化,此时就开始进行计步检测。当完成计步后会将采集到的步数 信息 在显示屏上进行显示,判断是否完成
[单片机]
基于<font color='red'>STM32F103</font>C8T6单片机的计步器设计
基于STM32F103XX微处理器的Micr0 SD卡读写
摘要:基于STM32F103XX微控制器的远程智能心脏检测仪采用Micro SD作为存储介质保存特定的心电信号。所存Micro SD卡中的存储数据要能够在计算机上直接存取,需要存储的数据以FAT32文件格式写入Micro SD卡。研究了使用STM32F103XX微处理器,采用SPI模式与Micro SD接口,将数据写入Micro SD的软件方法及硬件设计。采用的FAT开源文件系统FATFS是专门为小型嵌入式系统而设计的,容易移值和使用,占用硬件资源相对较小而且功能强大。 关键词:STM32F1103XX;Micro SD;SPI;FATFS O 引言 由于远程智能心脏检测仪器对采集到的心电信号是实时处理与存储的。因此,本
[工业控制]
基于<font color='red'>STM32F103</font>XX微处理器的Micr0 SD卡读写
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved