有些朋友不理解为什么STM32时钟要先倍频N倍,再分频?你会担心这个值太大吗?
1写在前面
STM32时钟的功能,可以说是越来越强大了。
从各个系列的时钟树可以看得出来,最早F1系列的时钟功能相对比较简单,到这后面H7、G0的时钟越来越丰富。
今天讲述一下其中的PLL环节。
2关于PLL
什么是PLL?
PLL:Phase Locked Loop锁相环。
PLL用于振荡器中的反馈技术,通常需要外部的输入信号与内部的振荡信号同步。
一般的晶振由于工艺与成本原因,做不到很高的频率,而在需要高频应用时,由相应的器件VCO,实现转成高频,但并不稳定,故利用锁相环路就可以实现稳定且高频的时钟信号。
---来自百度百科
每一块STM32处理器至少都有一个PLL,有的甚至有好几个PLL。
比如,F4有两个PLL:
F7有三个PLL:
当然,每个MCU型号不同,其PLL数量,及功能也有差异,具体需要看相应手册。
3STM32CubeMX配置时钟树
STM32CubeMX配置时钟不用担心出错。
原因很简单,这个工具配置时钟树,如果出错,会有红色警告。
如下图:
具体每一个红色警告错误的原因,将光标移到红色警告过会有相应提示信息。
比如,输出PLLP值超过规定范围:
有这个提示信息,再也不怕配置出错了。
PLL的倍频和分频值
有人觉得前面倍频N值很大(如下图),这样会不会出问题?
答案肯定是不会。但不建议将参数N设置为最大值。
特定时钟频率
有些时候,我们要求有特定时钟频率,比如USB,ETH等。这个时候PLL参数就需要合理才行。
4STM32手册可查看PLL参数范围
STM32的时钟,在之前使用标准库,或者寄存器时,使用的晶振频率不是官方推荐的,很多人就会搞晕。
那么,就只有参看对应手册,手册上是有明确说明的。比如F4手册RCC章节,详细说明的PLL各参数值范围。
关键字:STM32 时钟 PLL
引用地址:
担心STM32时钟PLL各参数配错吗?
推荐阅读最新更新时间:2024-11-08 17:07
基于AT89C52单片机实时时钟程序编写
#include‘reg52.h’ //包含单片机寄存器的头文件 #include‘intrins.h’ //包含_nop_()的头文件 sbit RS=P2^0; //LCD读写选择位 sbit RW=P2^1; //LCD读写选择位 sbit E=P2^2; //LCD使能端 sbit BF=P0^7; //忙信号 sbit SCLK=P1^0; //1302时钟输出端 sbit DATA=P1^1; //1302数据端 sbit RST=P1^2; //1302复位端 unsigned char code digit[]=“0123456789”; void delay1ms(unsigned int n) { un
[单片机]
意法半导体的STM32 Power Shield针对功耗敏感的嵌入式应用开发
电子网消息,意法半导体的STM32 Power Shield电路板让开发人员能够精确地查看嵌入式设计的功耗情况,硬件采用 EEMBC™ 指定的与新的IoTConnect和 ULPMark™ (Energy Monitor V2.0)基准框架参考平台相同的硬件。 STM32 Power Shield板 (X-NUCLEO-LPM01A)兼容 STM32 Nucleo开发板,能够动态监测各种工况下的电流值。内置显示屏可直接显示电流值,无需使用万能表即可查看读数。当配合EEMBC IoTConnect和/或 ULPMark时,STM32 Power Shield将提供一个内容更多的图形用户界面,直接显示基准测量结果和能耗情况
[半导体设计/制造]
STM32之学习笔记--串口通信
在基础实验成功的基础上,对串口的调试方法进行实践。硬件代码顺利完成之后,对日后调试需要用到的printf重定义进行调试,固定在自己的库函数中。 b) 初始化函数定义: void USART_Configuration(void); //定义串口初始化函数 c) 初始化函数调用: void UART_Configuration(void); //串口初始化函数调用 初始化代码: void USART_Configuration(void) //串口初始化函数 { //串口参数初始化 USART_InitTypeDef USART_InitStructure; //串口设置恢复默
[单片机]
低功耗射频IC卡读写器设计
本文介绍一款便携式巡更机(射频读写器)的设计。该读写器主要由MCU、射频IC卡读写模块、天线及USB通信接口等部分组成。为了方便对巡更情况的实时记录,系统采用了具有时间基准功能的时钟芯片。 随着近年来智能小区、智能大厦的迅猛发展,巡更系统将有着广泛的应用前景。手持式读写器的主要开发指标包括微型化、低功耗、便携式及方便的数据传输接口。 读写器总体设计方案 便携式IC卡读写器主要由电池供电。由于读写器不断发射无线电波,功耗较大,所以必须从每一个细节来考虑如何降低功耗,从而尽可能地延长电池的使用时间。硬件上采用低功耗设计,如低功耗器件、低压、模块化供电等;软件上采用规模化设计,尽量减少处理器的工作时间,使其处于低功耗运行模式。
[网络通信]
STM32库函数和寄存器的区别
库函数版和寄存器版的系统时钟设置的区别: **1.**库函数的目的是让用户应用的,而寄存器更加原始 库函数的系统时钟是默认设置的,且放在启动文件里。而寄存器版的系统时钟是Stm32_Clock_Init(336,8,2,7);. **2.**库函数的快捷的,但不是每个芯片都有的;寄存器是复杂的,但是每个芯片厂商都有提供系统的寄存器设置信息。 分别打开库函数和寄存器版的I/O口设置: 库函数: RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);gotoh后先通过assert_param();函数检查格式是否正确同时只要是ENABLE,RCC- AHB1ENR |=
[单片机]
windows下用J-link J-Flash下载STM32程序
打开“Option”—》“Project settings…”,进行烧写前的必要设置,如下图: 在“General”页,选择“USB”,如下图: 在“Target Interface”页,选择“JTAG”,JTAG速度设置为“Auto selection”,如下图 在“CPU”页,选择 开发板 的CPU型号:ST STM32F103VB,如下图: “FLASH”页不用设置,默认设置就可以了。 在“Production”页,我们把“Start application”选上,则在下载成功之后,程序会自动运行。 在设置完成后,我们点击“应用”和“确定”退出。在JLINK软件界面左边,将显示烧写
[单片机]
STM32USART串口调节与printf重定义
首先,printf重定义后可以直接使用printf函数从串口发送数据 在usart.c中添加代码: #ifdef __GNUC__ /* With GCC/RAISONANCE, small printf (option LD Linker- Libraries- Small printf set to 'Yes') calls __io_putchar() */ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, F
[单片机]
STM32程序添加printf函数后无法运行的解决方法(串口实验)
标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数. 例如:printf输出到串口,需要将fputc里面的输出指向串口(重定向),方法如下: #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif PUTCHAR_PROTOTYPE { USART_SendData(USART1, (uint8_t) ch); while (USART_GetFlagStatus(
[单片机]