本文记录下看完正点原子战舰版的时钟配置视频后的理解,仅用作备忘。
时钟的配置源码在文件system_stm32f10x.c中。程序先通过判断使用的f10芯片的种类,选择你要的系统时钟频率SYSCLK。我用的芯片系统频率最高为72Mhz,芯片容量为大容量型,所以预编译后选择的是SYSCLK_FREQ_72MHz 72000000。
下面这段代码在时钟配置中没什么用,只是在以后的程序中可以通过SystemCoreClock来读出系统时钟的频率。
下面代码通过宏定义来选择配置系统时钟的函数,上边函数定义了SYSCLK_FREQ_72MHz,所以程序执行void SetSysClockTo72(void)。跳转到这个函数
下面这段函数不重要,直接跳过
这三行代码首先是讲AHB总线时钟等于系统时钟,再将APB2上时钟等于HCLK的一分频,APB1时钟等于HCLK的二分频。结果即为HCLK=72MHz,PCLK2=72MHz,PCLK1=36MHz.。刚好为各自总线上允许的最高频率。
再看下图,跳过它上面的代码。else下的代码是通过配置寄存器设置锁相环,从锁相环出来的频率为9倍的频外部高速时钟。
最后使能锁相环PLL,等PLL准备好后,将PLL作为系统时钟的来源。
看懂时钟配置源代码,首先要弄懂时钟系统框图,两个时钟图差不多,但标注有点区别
关键字:STM32F103 时钟配置 学习记录
引用地址:
STM32F103的时钟配置源码学习记录
推荐阅读最新更新时间:2024-11-07 02:21
STM32F0xx_RTC实时时钟配置详细过程
Ⅰ、概述 今天总结RTC(Real Time Clock)实时时钟相关的知识,顺带将BKP简单总结一下。 STM32的RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后, RTC的设置和时间维持不变。 STM32F0的RTC模块和F1的RTC模块最大区别在于F0模块中有“DATE”和“TIME”寄存器,也就是可以直接读取寄存器里面的值,而F1是秒计数寄存器的值,需要通过相关算法下才能得到时间的值。 本文提供的软件工程里面还包含一个BKP模块,主要是用于掉电保持RTC数值(第一次上电初始化RTC,后面就不用初始化)。例程是在第一次初始化RTC值为:2016年6月5日 周七 12
[单片机]
STM32F103+RTT从零开始(二)——RTT系统中点亮LED
上一篇博客简单说了下如何使用Keil创建STM32F103的工程,并且完成了LED点亮,及让LED等闪烁的功能,那是诸多同学学习单片机的起手式。本篇博客继续上一篇博客的内容,依旧是点亮LED,不同的是,这次点亮LED等,是在RT-Thread操作系统中进行的。 创建工程 创建一个Keil工程,芯片依旧选择STM32F103C8T6,然后在Manage Run-Time Environment对话框中选择需要用的的软件组件,与上文不同的是,我们需要把RTT一起勾上。如下图: 上图中,红线框中即为RTT操作系统的组件,分别为设备驱动,系统内核以及shell。蓝线框中为Keil的RTX操作系统。我们现在要用的是RTT,所以勾
[单片机]
一款全自动电饭煲系统的设计与实现
现在的电饭煲正在向集煮饭、煲汤、保温于一体的方向发展,虽现在的电饭煲有预约煮饭功能,但由于预约时间过长而影响了米的口感,本文设计的全自动电饭煲融合嵌入式技术和无线通讯技术,不仅实现了煮饭的远程智能化控制,同时保证了煮饭的良好口感。 1 全自动电饭煲的工作原理 设计的电饭煲在未工作时处于待机状态,当SIM900A模块接收到用户手机发来的短信或GPRS的控制指令后,将指令发送到 STM32F103单片机,单片机对指令进行解析,然后控制电饭煲自动漏米、淘米、煮饭的整个过程,并且实时采用温度传感器检测电饭煲的工作温度,同时能够根据电饭煲的工作状态智能报警,保证了电饭煲的可靠稳定工作,系统的总体设计如图1所示。
[单片机]
激光测距VL53LX1 配合STM32F103T8U6测试成功
#include vl53l1x.h #include common.h #include usart.h VL53L1_Dev_t VL53L1_dev ; //device param, include I2C //VL53L1_DeviceInfo_t VL53L1_dev_info ;//device ID version info uint8_t Ajusted ={0,0};//adjusted sign, 0-not, 1-had uint16_t Distance = 0;//保存测距数据 VL53L1_RangingMeasurementData_t VL53L1_data ;//ranging resu
[单片机]
STM32F103--BKP
备注: 这是自己基于STM32的BKP备份寄存器的学习。 BKP功能: 1 系统从待机模式或系统或电源复位时BKP备份寄存器不会被复位,保护程序运行数据。 2 BKP还可以管理嵌入检测和RTC校准功能,用于复杂的的条件下嵌入保护。 备注1:复位后BKP和RTC访问被禁止备份域被保护。当PWR_CR的DBP位被置1后才允许访问BKP和RTC,这 是访问BKP和RTC的首要条件。 BKP的基本结构: 1 10个16为数据寄存器。 2 状态/控制寄存器用于管理侵入功能。 3 效验寄存器用于RTC的效验。 一 侵入检
[单片机]
基于STM32F103 的电压显示
运用STM32F103和LCD1602实现实时显示电压的功能 ADC运用的管脚是 PA(0) 下面是ADC的配置 #include ADC.h void ADC_Init_MY(void) { GPIO_InitTypeDef GPIO_InitStructure; ADC_InitTypeDef ADC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_ADC1,ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0
[单片机]
STM32F103ZET6 —— GPIO
STM32 的 GPIO 可以由软件配置成为几种不同的模式,每个I/O端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问: A. 芯片侧: 1. 输入: 2. 输出: B. 硬件侧: 对应的单板,有两个GPIO连接到LED上: 使用的是 GPIO 的 Port G 的 Pin13 和 Pin14 脚 C. 代码侧: 配置上述两个 GPIO 工作需要的步骤如下: 1. 使能对应的 GPIO_G 的时钟 2. 配置 GPIO_G13/GPIO_G14 为通用推挽输出,配置口线翻转速度50M 3. 配置完成后,设置端口的输出为1/0即可控制 GPIO 的输出。 1. 时钟设置:
[单片机]
基于数字式电镀电源并联均流系统设计方案
0 引言 STM32系列处理器是由意法半导体ST公司生产、基于ARM公司Cortex-M3内核的MCU,专门为微控制系统、汽车控制系统、 工业控制系统和无线网络等嵌入式应用领域而设计的方案,具有高性能、低功耗、高集成度、丰富且性能出众的片上外设、编程复杂度低等优点。数字式电镀电源并联均流系统以数字通信和控制的方式实现多个电源模块的并联工作,提供更大的输出功率,具有组合灵活、可靠性高、人机接口友善、工作模式多样等优点。本文采用STM32F103VET6处理器作为主控芯片,实现了一种以CAN总线为通信媒介、具有稳压/稳流/安培时/工艺曲线/远程控制5种工作模式、液晶图形显示的数字式电镀电源并联均流系统(以下简称“并联均流
[单片机]