stm32产生100k时钟信号_stm32f105/107系统时钟变慢
问题:最近把之前stm32f103平台的工程拿到stm32f105平台编译,编译通过了,但是烧录运行时发现系统时钟慢了3倍左右。
我先上一张stm32的时钟树吧
1.通过打印SYSCLK=72MHz,PCLK1=36MHz,PCLK2=72MHz,HCLK=72MHz,ADCCLK=36MHz。系统时钟打印的都是正确的,那只有外部晶振用的不对,后来查看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 */
#endif /* STM32F10X_CL */
#endif /* HSE_VALUE */
看见没?库默认使用的是25MHz晶振,而我使用的是8MHz。
那么最简单粗暴的解决方案是我把晶振也换成25MHz,一切问题解决!
那么并没有结束,如果我使用8MHz晶振该如何呢?
1.首先要先把#define HSE_VALUE ((uint32_t)25000000) 改为:8000000.
2.在system_stm32f10x.c中有这么一个函数
static void SetSysClockTo72(void)
{
__IO uint32_t StartUpCounter = 0, HSEStatus = 0;
............................................
#ifdef STM32F10X_CL
/* Configure PLLs ------------------------------------------------------*/
/* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */
/* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */
RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL |
RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC);
RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV5 | RCC_CFGR2_PLL2MUL8 |
RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5);
..........................................
}
这其中 HSE 使用的是25MHz,所有是除以5乘以8=40MHz。
但我们使用的是8MHz,可以除以2乘以10=40MHz。
修改后:
/* Configure PLLs ------------------------------------------------------*/
/* PLL2 configuration: PLL2CLK = (HSE / 5) * 8 = 40 MHz */
/* PREDIV1 configuration: PREDIV1CLK = PLL2 / 5 = 8 MHz */
RCC->CFGR2 &= (uint32_t)~(RCC_CFGR2_PREDIV2 | RCC_CFGR2_PLL2MUL |
RCC_CFGR2_PREDIV1 | RCC_CFGR2_PREDIV1SRC);
RCC->CFGR2 |= (uint32_t)(RCC_CFGR2_PREDIV2_DIV2 | RCC_CFGR2_PLL2MUL10 |
RCC_CFGR2_PREDIV1SRC_PLL2 | RCC_CFGR2_PREDIV1_DIV5);
编译,运行,问题解决。
stm32产生100k时钟信号_stm32f105/107系统时钟变慢相关推荐
- GD32低功耗:深度睡眠唤醒系统时钟变慢问题
一.问题 1.进入深度睡眠后,通过外部中断唤醒,发现系统时钟变慢. 2.进入休眠模式,通过任何中断唤醒,系统时钟正常. 二.原因 1.从电源管理章节可知,睡眠模式下使用没有什么需要需要注意的,在使能P ...
- STM32使用内部RC振荡器作为系统时钟开发项目--内晶振启动模板工程
STM32使用内部RC振荡器时,OSC32_IN,OSC32_OUT接法: 1)对于100脚或144脚的产品,OSC_IN应接地,OSC_OUT应悬空. 2)对于少于100脚的产品,有2种接法: ...
- 【STM32】STM32标准库与HAL库对照学习教程特别篇--系统时钟RCC详讲
[STM32]STM32标准库与HAL库对照学习教程特别篇--系统时钟RCC详讲 一.前言 二.时钟是什么 三.时钟树 1.时钟树图 2.时钟树讲解 左边部分 中间部分 右边部分 特殊部分 四.初始化 ...
- STM32系统时钟默认设置
"我们一直都说STM32有一个非常复杂的时钟系统,然而在原子或者野火的例程中,只要涉及到时钟,我们却只能看到类似的库函数调用,如RCC_APB2PeriphClockCmd(RCC_APB2 ...
- STM32系统时钟详解
STM32时钟树 STM32时钟系统简介 在CPU中时钟系统就像人的心脏一样,给系统一个稳定的类似于人脉搏一样的一个工作时间基准,其重要性是不可言喻的.而STM32F4的时钟系统还是较为复杂的,不像5 ...
- 如何设置STM32的系统时钟(SYSCLK)
目录 1.STM32F407 的时钟来源 1.1.HSI 时钟 1.2.HSE 时钟 1.3.主 PLL 时钟 2.时钟树 3.配置系统时钟 3.1.系统时钟有关寄存器 3.2.使用系统的默认配置 3 ...
- STM32系统时钟设置(标准库)
1.STM32F407时钟树 2.系统时钟相关的结构 HSE高速外部时钟信号 锁相环PLL 锁相环的主要作用就是对时钟进行倍频,然后把时钟输出到各个功能部件.PLL有两个,一个主PLL,另一个是专用的 ...
- STM32系统时钟设置,采用外部有源晶振相关配置问题
今天在调试STM32系统时钟设置时遇到一个问题:TIM2定时1Ms,TIM2中断服务函数time++,time=100时LED状态改变.程序运行后发现LED不是按照0.1S的时间闪烁,闪烁的很慢. 查 ...
- 【STM32】系统时钟RCC详解(超详细,超全面)
转载:https://blog.csdn.net/as480133937/article/details/98845509 1什么是时钟 时钟是单片机运行的基础,时钟信号推动单片机内各个部分执行相应的 ...
最新文章
- MVC 下 JsonResult 的使用方法(JsonRequestBehavior.AllowGet)转
- 试说明机器指令和微指令之间的关系_男女关系之间,是他在说谎吗?观察他的肢体语言说明一切...
- sql,两个表关联,根据B表更新A表
- 容器编排技术 -- Kubernetes 重新配置活动集群中节点的 Kubelet
- Netty工作笔记0033---Netty概述
- hdu 5144 NPY and shot(三分)
- jQuery弹出窗口完整代码
- Kinect unity三维重建
- android 动态创建数据库表,简析Android数据库中创建表与LitePal的基本用法
- 我的世界java版种子多村庄_我的世界:粉丝推荐新版种子,出生附近就有11个村庄2个沙漠神殿...
- 熊猫聚财独家揭秘-你不知道的避坑赚钱宝典
- 《财富》2022全球500强榜单,沃尔玛九连冠,沙特阿美最赚钱,中国公司上榜最多 | 美通社头条...
- 摄影焦距和物距的关系_摄影的焦距是多少?
- 扬帆跨境电商:虾皮如何匹配最佳图片
- 顺序存储二叉树和线索化二叉树
- 判断一无符号整数的二进制形式中是否包含偶数个1
- 图构建:领域本体设计原则与动态本体
- 全球经济环境剧烈波动,Masterboxan INC如何在巨浪中顺流而行
- 可视化人工智能区块链操作系统奥泰AOT在硅谷立项
- 天池NLP学习赛(1)赛题理解
热门文章
- 统一配置中心选型对比
- Ubuntu16.04 安装Gitlab
- java怎么将图片文件转流并在jsp前端显示_jsp已经被淘汰了吗?
- python商品管理系统_python 函数写商城管理系统
- PHP中时间和日期函数总结
- 4万家公司没了!这个吸血房客的行业,终于要崩了?
- 造车梦又要“窒息”了?贾跃亭被美国认定骗局,收到退市警告!FF回应了......
- FF:与吉利控股的合作取得实质性进展 双方技术团队正紧密对接
- 硬派SUV坦克500撞色款预计年底上市
- 中国制造强在哪儿?从美特斯邦威到Shein