6.3 STM32F107VCT的时钟深入剖析(32M,40M,72M灵活切换)
stm32时钟概念

stm32时钟概念(实用版)目录1.STM32 时钟概念概述2.STM32 时钟的分类3.STM32 时钟的配置方法4.STM32 时钟的应用实例5.总结正文一、STM32 时钟概念概述STM32 时钟是指基于 STM32 单片机的时钟系统,STM32 单片机是一款高性能、低功耗的微控制器,内部集成了多种时钟源,可为系统提供多样化的时钟信号。
时钟系统是 STM32 单片机的重要组成部分,对系统的稳定性和准确性具有重要影响。
二、STM32 时钟的分类STM32 时钟可分为以下几类:1.高速时钟(HCLK):高速时钟是 STM32 单片机内最快的时钟,通常用于处理高速信号,如高速串行通信、音频信号处理等。
2.高速低功耗时钟(HCLK_LP):高速低功耗时钟是高速时钟的低功耗版本,可在降低功耗的同时保持较高的时钟频率。
3.中速时钟(MCLK):中速时钟是 STM32 单片机内部时钟信号的默认选择,适用于大多数应用场景。
4.低速时钟(LCLK):低速时钟是 STM32 单片机内部最慢的时钟信号,适用于对时钟频率要求不高的场景,如按键扫描等。
5.实时时钟(RTC):实时时钟是 STM32 单片机内部的实时时钟模块,可用于提供年月日时分秒等时间信息。
三、STM32 时钟的配置方法STM32 时钟的配置方法主要包括以下步骤:1.配置时钟源:根据应用需求选择合适的时钟源,如高速时钟源(HSE)或高速低功耗时钟源(HSI)等。
2.配置时钟预分频:根据实际需求,对时钟源进行预分频,以得到所需的时钟频率。
3.配置时钟倍频:对预分频后的时钟信号进行倍频,以进一步提高时钟频率。
4.配置时钟输出:将配置好的时钟信号输出到相应的时钟引脚。
5.配置时钟使能:使能所需的时钟信号。
四、STM32 时钟的应用实例以下是一个基于 STM32F103 系列的实时时钟(RTC)实验例程:1.首先,配置 RTC 时钟源为高速时钟源(HSE)。
STM32F407ZGT的时钟深入剖析(32M_40M_72M灵活切换)

时钟频率的配置
{开始
ቤተ መጻሕፍቲ ባይዱ
{ /**** 程序总共 2 部分之第 1 部分 时钟频率的配置 ********************/
/***** 以下是关于 RCC 时钟 详细请见《STM32F20XXX 参考手册》5.3 节 RCC 寄存 器描述 *******/
unsigned char sws = 0; RCC->CR |= 0X00010000; //使能外部高速时钟 HSEON while(!(RCC->CR>>17)); //将 RCC_CR 寄存器的值右移 17 位,等待 HSERDY 就绪, 即外部时钟就绪
对于 5, 通过 PLL 选择位预先选择后续 PLL 分支的输入时钟(假设选择外部晶振);
对于 7,设置外部晶振的分频数(假设 1 分频);
对于 21,选择 PLL 倍频的时钟源(假设选择经过分频后的外部晶振时钟);
对于 8,设置 PLL 倍频数(假设 9 倍频);
对于 9,选择系统时钟源(假设选择经过 PLL 倍频所输出的时钟);
众所周知,微控制器(处理器)的运行必须要依赖周期性的时钟脉冲来驱动——往往由 一个外部晶体振荡器提供时钟输入为始,最终转换为多个外部设备的周期性运作为末,这种 时钟“能量”扩散流动的路径,犹如大树的养分通过主干流向各个分支,因此常称之为“时 钟树”。在一些传统的低端 8 位单片机诸如 51,AVR,PIC 等单片机,其也具备自身的一个 时钟树系统,但其中的绝大部分是不受用户控制的,亦即在单片机上电后,时钟树就固定在 某种不可更改的状态(假设单片机处于正常工作的状态)。比如 51 单片机使用典型的 12MHz 晶振作为时钟源,则外设如 IO 口、定时器、串口等设备的驱动时钟速率便已经是固定的, 用户无法将此时钟速率更改,除非更换晶振。
STM32系列MCU硬件实时时钟(RTC)应用笔记说明书

2017年6月Doc ID 018624 Rev 1 [English Rev 5]1/45AN3371应用笔记在 STM32 F0、F2、F3、F4 和 L1 系列MCU 中使用硬件实时时钟(RTC )前言实时时钟 (RTC) 是记录当前时间的计算机时钟。
RTC 不仅应用于个人计算机、服务器和嵌入式系统,几乎所有需要准确计时的电子设备也都会使用。
支持 RTC 的微控制器可用于精密计时器、闹钟、手表、小型电子记事薄以及其它多种设备。
本应用笔记介绍超低功耗中等容量、超低功耗大容量、F0、F2和 F4 系列器件微控制器中嵌入式实时时钟 (RTC) 控制器的特性,以及将 RTC 用于日历、闹钟、定时唤醒单元、入侵检测、时间戳和校准应用时所需的配置步骤。
本应用笔记提供了含有配置信息的示例,有助于您快速准确地针对日历、闹钟、定时唤醒单元、入侵检测、时间戳和校准应用配置 RTC 。
注:所有示例和说明均基于 STM32L1xx 、STM32F0xx 、STM32F2xx 、STM32F4xx 和STM32F3xx 固件库,以及 STM32L1xx (RM0038)、STM32F0xx (RM0091)、STM32F2xx (RM0033)、STM32F4xx (RM0090)、STM32F37x (RM0313) 和 STM32F30x(RM0316) 的参考手册。
本文提到的STM32 指超低功耗中等容量、超低功耗大容量、F0、F2 和 F4 系列器件。
超低功耗中等 (ULPM) 容量器件包括 STM32L151xx 和 STM32L152xx 微控制器,Flash 容量在 64 KB 到 128 KB 之间。
超低功耗大 (ULPH) 容量器件包括 STM32L151xx 、STM32L152xx 和 STM32L162xx 微控制器,Flash 容量为 384 KB 。
F2 系列器件包括 STM32F205xx 、STM32F207xx 、STM32F215xx 和 STM32F217xx 微控制器。
STM32F107VC的嵌入式远程监控终端设计

STM32F107VC的嵌入式远程监控终端设计关丽敏;李思慧;李伟刚【期刊名称】《单片机与嵌入式系统应用》【年(卷),期】2014(14)6【摘要】针对处于偏远地区或恶劣环境中的无人值守设备的运行状态的监控问题,本文应用嵌入式技术以及工业以太网技术设计了一种数据采集与监控系统的远程监控终端。
围绕核心处理器 STM32 F107 VC构建了终端的硬件系统,介绍了网络接口设计、输入/输出接口设计和本地存储电路设计。
监控终端软件基于 ARM公司的 RL ARM中间件,实现了多任务并行的网络实时通信、基于 WebServer的远程配置服务和临时存储现场数据的文件系统。
应用结果表明,系统可靠性高、实时性强,有效降低了远程监控系统成本。
%Aiming at the problem that unattended equipments are usually in remote areas and harsh environments,the paper designs a re-mote monitoring terminal of data acquisition and monitoring system.Based on the the core processorSTM32F107VC,the hardware sys-tem of the terminal is designed,theinput/output interface and local storage circuit are designed.The softwareof the monitoring terminal is based on RL-ARM middleware of ARM.It completes the multitasking parallel network real-time communication,based on the Web-Server remote configuration services and temporary storage of field data file system.Application results show that the system has high reliability,strong real-time performance and effectively reduces the cost of remote monitoring system.【总页数】4页(P72-75)【作者】关丽敏;李思慧;李伟刚【作者单位】长安大学电子与控制工程学院,西安 710064;长安大学电子与控制工程学院,西安 710064;西安昆仑工业集团有限责任公司【正文语种】中文【中图分类】TP23【相关文献】1.对ARM和Linux的物联网远程监控终端设计分析及实现 [J], 谢娜2.基于云服务的干式变压器远程监控终端设计 [J], Chen Erkui;Jia Meng;Han Qingchun3.煤矿井下远程监控终端设计 [J], 张新4.分布式光伏电站远程监控系统的双无线终端设计 [J], 童友波5.基于GPRS的纯电动矿山车远程监控车载终端设计 [J], 张宸宇因版权原因,仅展示原文概要,查看原文内容请购买。
STM32入门教程--系统时钟配置

STM32 系统时钟配置一、STM32的时钟系统时钟是什么?时钟通常是振荡器(如晶振)产生的特定频率的方波信号,时钟周期是时钟频率的倒数,时钟频率1MHz时钟周期为1/1000000=1us。
时钟周期是MCU处理指令的最小时间单元,每个程序指令都需要若干个时钟周期,MCU的时钟频率越快,完成一个指令的时间就越短,速度就越快。
时钟是MCU运行的基础,好比MCU的脉搏,是MCU性能的重要参数。
每个MCU 都是在某个特定的时钟频率下进行工作的,如C51单片机时钟频率为12MHz,而STM32F103 的系统时钟频率是72MHz。
STM32的时钟系统STM32时钟频率较高,时钟越快功耗越大,同时抗电磁干扰能力也会越弱。
而且STM32外设非常多,而通常外设是不需要像系统时钟那么高的频率的,比如看门狗和RTC 只需要几十K的时钟即可。
另外实际使用的时候通常只会用到有限的几个外设,STM32可以只给需要启动的外设分配时钟,以此来降低功耗。
由此可看出STM32 的时钟系统较为复杂,它采用了多个时钟源的方法来解决这些问题。
STM32 有4个独立时钟源:HSI、HSE、LSI、LSE。
①、HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。
②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
③、LSI是低速内部时钟,RC振荡器,频率为40kHz,提供低功耗时钟。
④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。
其中LSI是作为IWDGCLK(独立看门狗)时钟源和RTC时钟源而独立使用,HSI高速内部时钟 HSE高速外部时钟 PLL锁相环时钟这三个经过分频或者倍频作为系统时钟来使用基本时钟源(图中绿色箭头指出):(1)HSI高速内部时钟,RC振荡器,8MHz。
(2)HSE高速外部时钟,石英/陶瓷谐振器,8MHz。
(3)LSI低速内部时钟,RC振荡器,40kHz。
6.3 STM32F107VCT的时钟深入剖析(32M,40M,72M灵活切换)

2. 调试说明: 下载代码,并且按下【复位】键,在神舟 IV 号板上找到 LED2,可以看到该 LED1 灯一
亮一灭。
3. 关键代码: /*************** 程 序 总 共 2 部 分 之 第 1 部 分 时 钟 频 率 的 配 置 { 开 始 *********************************/
基于STM32F107VCT6微控制器的控制系统解决方案

基于STM32F107VCT6微控制器的控制系统解决方案 本文简要介绍了电动汽车交流充电桩的内容和研究现状。
针对需要设计了基于STM32F107VCT6微控制器的控制系统解决方案,并详细介绍了控制系统的软硬件设计和桩体的电气部分设计。
该系统提供包括人机交互、充电控制、电能计量、IC卡付费、票据打印、运行状态监测、充电保护和充电信息存储和上传等多种完善的功能,满足充电过程的要求。
随着全球能源危机的不断加深,石油资源的日趋枯竭以及大气污染、全球气温上升的危害加剧,各国政府及汽车企业普遍认识到节能和减排是未来汽车技术发展的方向,发展电动汽车将是解决这两个难题的最佳途径。
我国高度重视电动汽车的发展,国家相继出台了一系列标准来扶持和规范电动汽车的发展。
但要实现电动汽车大面积普及我国还有很长的路要走,需要解决的问题还有很多。
在最近发布的《节能与新能源汽车产业规划》草案中指出将以纯电动汽车作为主要战略取向。
有关专家指出纯电动汽车的发展存在三大瓶颈问题:一是标准的缺失,二是配套政策的不完善,三是基础设施的规划和建设的有序推进。
本文所研究的电动汽车交流充电桩作为充电基础设施的一部分对于推进电动汽车的普及具有重要的意义。
1 电动汽车交流充电桩介绍 交流充电桩,又称交流供电装置,是指固定在地面或墙壁,安装于公共建筑(办公楼宇、商场、公共停车场等)和居民小区停车场或充电站内,采用传导方式为具有车载充电机的电动汽车提供人机交互操作界面及交流充电接口,并具备相应测控保护功能的专用装置。
交流充电桩采用大屏幕LCD彩色触摸屏作为人机交互界面,可选择定电量、定时间、定金额、自动(充满为止)四种模式充电,具备运行状态监测、故障状态监测、充电分时计量、历史数据记录和存储等功能。
充电桩的交流工作电压(220±15%)V,额度输出电流(AC)为32 A(七芯插座),普通纯电动轿车用交流充电桩充满电大约需要6~8 h,充电桩更适用于慢速充电。
STM32F107VCT6 微控制器用户手册说明书

Open107V用户手册目录1. 硬件介绍 (2)1.1.资源简介 (2)2. 例程分析 (4)2.1. 8Ios (4)2.2. ADC+DMA (4)2.3. ADC+DMA+KEYPAD (5)2.4. CAN- Normal (5)2.5. DAC (6)2.6. ETH_LwIP (6)2.7. GPIO LED JOYSTICK (7)2.8. I2C (7)2.9. LCD (8)2.10. OneWire (9)2.11. PS2 (9)2.12. RTC (9)2.13. FATFS V0.08A-SD Card (10)2.14. SL811 USB (10)2.15. AT45DB-SPI (11)2.16. TouchPanel (11)2.17. uCOSII2.91+UCGUI3.90A (12)2.18. USART (13)2.19. USB_Host_HID_KBrd_Mouse (13)2.20. USB_ Host_MSC(efsl) (13)2.21. USB_Host_MSC(FATFS) (14)2.22. USB-JoyStickMouse (15)2.23. USB-Mass_Storage-MCU Flash (15)2.24. VS1003B (16)3. 版本修订 (16)1.硬件介绍1.1. 资源简介[ 芯片简介 ]1.STM32F107VCT6STM32功能强大,下面仅列出STM32F107VCT6的核心资源参数:内核:Cortex-M3 32-bit RISC;工作频率:72MHz,1.25 DMIPS/MHz;工作电压:2-3.6V;封装:LQFP100;I/O口:80;存储资源:256kB Flash,64kB RAM;接口资源:3 x SPI,3 x USART,2 x UART,2 x I2S,2 x I2C;1 x Ethernet MAC,1 x USB OTG,2 x CAN;模数转换:2 x AD(12位,1us,分时16通道),[ 其它器件简介 ]3."5V DC"或"USB"供电选择开关切换到上面,选择5V DC供电;切换到下面,选择USB供电。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.2 时钟...............................................................................................................................2 6.1.1 什么是时钟.......................................................................................................2 6.1.2 STM32 的时钟..................................................................................................2 6.1.3 STM32 的时钟深入分析..................................................................................3 6.1.4 例程 01 STM32 芯片 32MHZ频率下跑点灯程序 ..........................................6 6.1.5 例程 02 STM32 芯片 40MHZ频率下跑点灯程序 ........................................14 6.1.6 例程 03 STM32 芯片 72MHZ频率下跑点灯程序 ........................................15
晶振作为时钟源,则外设如 IO 口、定时器、串口等设备的驱动时钟速率便已经是固定的, 用户无法将此时钟速率更改,除非更换晶振。
而 STM32 微控制器的时钟树则是可配置的,其时钟输入源与最终达到外设处的时钟速 率不再有固定的关系,下面来详细解析 STM32 微控制器的时钟树。下图是 STM32 微控制 器的时钟树:
在认识这颗时钟树之前,首先要明确“主干”和最终的“分支”。假设使用外部 8MHz 晶振作为 STM32 的时钟输入源(这也是最常见的一种做法),则这个 8MHz 便是“主干”, 而“分支”很显然是最终的外部设备比如通用输入输出设备(GPIO)。这样可以轻易找出第 一条时钟的“脉络”: 3——5——7——21——8——9——11——13 对此条时钟路径做如下解析: 对于 3,首先是外部的 3-25MHz(前文已假设为 8MHz)输入; 对于 5,通过 PLL 选择位预先选择后续 PLL 分支的输入时钟(假设选择外部晶振); 对于 7,设置外部晶振的分频数(假设 1 分频); 对于 21,选择 PLL 倍频的时钟源(假设选择经过分频后的外部晶振时钟); 对于 8,设置 PLL 倍频数(假设 9 倍频); 对于 9,选择系统时钟源(假设选择经过 PLL 倍频所输出的时钟); 对于 11,设置 AHB 总线分频数(假设 1 分频); 对于 13,时钟到达 AHB 总线;
unsigned char sws = 0; RCC->CR |= 0X00010000; //使能外部高速时钟 HSEON while(!(RCC->CR>>17)); //将 RCC_CR 寄存器的值右移 17 位,等待 HSERDY 就绪, 即外部时钟就绪
RCC->CFGR2 |= 4<<4; // 5 分频
在上一章节中所介绍的 GPIO 外设属于 APB2 设备,即 GPIO 的时钟来源于 APB2 总线, 同样在上图中也可以寻获 GPIO 外设的时钟轨迹: 3——5——7——21——8——9——11——15——16 对于 3,首先是外部的 3-25MHz(前文已假设为 8MHz)输入; 对于 5, 通过 PLL 选择位预先选择后续 PLL 分支的输入时钟(假设选择外部晶振); 对于 7,设置外部晶振的分频数(假设 1 分频); 对于 21,选择 PLL 倍频的时钟源(假设选择经过分频后的外部晶振时钟); 对于 8,设置 PLL 倍频数(假设 9 倍频); 对于 9,选择系统时钟源(假设选择经过 PLL 倍频所输出的时钟); 对于 11,设置 AHB 总线分频数(假设 1 分频); 对于 15,设置 APB2 总线分频数(假设 1 分频) 对于 16,时钟到达 APB2 总线; 现在来计算一下 GPIO 设备的最大驱动时钟速率(各个条件已在上述要点中假设):
6.1.4 例程01 STM32芯片32MHZ频率下跑点灯程序
1. 示例简介 让点灯程序在时钟主频 32MHz 下面运行,LED 灯的正极接的是 3.3V 电源,所以我们编 程让 LED 负极拉低即 GPIO 引脚端口 D 的管脚 2 拉低,即 PD2 拉低,那么 LED 灯就会 变亮,相关电路图如下图所示:
3) 时钟到达 AHB 预分频器,由 11 知时钟经过 AHB 预分频器之后的速率仍为 72MHz。 4) 时钟到达 APB2 预分频器,由 15 经过 APB2 预分频器后速率仍为 72MHz。 5) 时钟到达 APB2 总线外设 上面是原理的剖析,如果再不明白的,可以接下来看例程代码,理论联系实践是最好的老师。
4. LSE 是低速外部时钟,接频率为 32.768kHz 的石英晶体,也可以被用来驱动 RTC,时钟 树的截图如下:
5. PLL 为锁相环倍频输出,其时钟输入源可选择为 HSI/2、HSE。倍频可选择为 4~9 倍, 但是其输出频率最大不得超过 72MHz,时钟树的截图如下:
6.1.3 STM32的时钟深入分析
RCC->CFGR2 |= 6<<8; / 1<<16; //PLL2 作为 PRED2V1 时钟 RCC->CR |= 1<<26; //将 PLL2 使能
while(!(RCC->CR>>27));
RCC->CFGR2 |= 0x00000004; //5 分频 RCC->CFGR |= 1<<16; //PREDIV1 作为 PLL 时钟 RCC->CFGR |= 2<<18; //本例程希望设置成 32MHZ 的工作频率,我们在这里尝试
下表是结合图表明出来的: 标号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
释义 内部低速振荡器(LSI,40Khz) 外部低速振荡器(LSE,32.768Khz) 外部高速振荡器(HSE,3-25MHz) 内部高速振荡器(HSI,8MHz) PLL输入选择位 RTC时钟选择位 PLL1分频数寄存器 PLL1倍频寄存器 系统时钟选择位 USB分频寄存器 AHB分频寄存器 APB1分频寄存器 AHB总线 APB1外设总线 APB2分频寄存器 APB2外设总线 ADC预分频寄存器 ADC外设 PLL2分频数寄存器 PLL2倍频寄存器 PLL 时钟源选择寄存器 独立看门狗设备 RTC 设备
一下
晶振是 8MHZ
//2 右移动 18 位,即 0010 使得 PLL 获得 4 倍频输出,外部
//乘以 4 就是 32MHZ 了 RCC->CFGR |= 1<<16; //PLLSRC 设置 78 成 1,使得 HSE 时钟作为 PLL 输入时钟 RCC->CR |= 1<<24; //将 PLL 使能
2. HSE 是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为 3MHz~25MHz,时钟树的截图如下:
3. LSI 是低速内部时钟,RC 振荡器,频率为 40kHz,可以用于驱动独立看门狗和通过程序 选择驱动 RTC(RTC 用于从停机/待机模式下自动唤醒系统),时钟树的截图如下:
//FLASH->ACR|=0x32;
while(!(RCC->CR>>25)); //监控寄存器 CR 的 PLLRDY 位,等待 PLL 时钟就绪
6.2 时钟
6.1.1 什么是时钟
从 CPU 的时钟说起。 计算机是一个十分复杂的电子设备。它由各种集成电路和电子器件组成,每一块集成电 路中都集成了数以万计的晶体管和其他电子元件。这样一个十分庞大的系统,要使它能够正 常地工作,就必须有一个指挥,对各部分的工作进行协调。各个元件的动作就是在这个指挥 下按不同的先后顺序完成自己的操作的,这个先后顺序我们称为时序。时序是计算机中一个 非常重要的概念,如果时序出现错误,就会使系统发生故障,甚至造成死机。那么是谁来产 生和控制这个操作时序呢?这就是“时钟”。“时钟”可以认为是计算机的“心脏”,如同人 一样,只有心脏在跳动,生命才能够继续。不要把计算机的“时钟”等同于普通的时钟,它 实际上是由晶体振荡器产生的连续脉冲波,这些脉冲波的幅度和频率是不变的,这种时钟信 号我们称为外部时钟。它们被送入 CPU 中,再形成 CPU 时钟。不同的 CPU,其外部时钟 和 CPU 时钟的关系是不同的,下表列出了几种不同 CPU 外部时钟和 CPU 时钟的关系。 CPU 时钟周期通常为节拍脉冲或T周期,它是处理操作的最基本的单位。 在微程序控制器中,时序信号比较简单,一般采用节拍电位——节拍脉冲二级体制。就 是说它只要一个节拍电位,在节拍电位又包含若干个节拍脉冲(时钟周期)。节拍电位表示 一个CPU周期的时间,而节拍脉冲把一个CPU周期划分为几个叫较小的时间间隔。根据 需要这些时间间隔可以相等,也可以不等。 指令周期是取出并执行一条指令的时间。 指令周期常常有若干个CPU周期,CPU周期也称为机器周期,由于CPU访问一次 内存所花费的时间较长,因此通常用内存中读取一个指令字的最短时间来规定CPU周期。 这就是说,这就是说一条指令取出阶段(通常为取指)需要一个CPU周期时间。而一个C PU周期时间又包含若干个时钟周期(通常为节拍脉冲或T周期,它是处理操作的最基本的 单位)。这些时钟周期的总和则规定了一个CPU周期的时间宽度。