当前位置:网站首页>STM32学习总结(一)——时钟RCC
STM32学习总结(一)——时钟RCC
2022-08-11 05:25:00 【LIGAZN菜鸟】
系列文章目录
第一章 STM32学习总结(一)——时钟RCC
前言
一开始接触STM32时就被时钟难住了,复杂的时钟树上的条条框框对于初学者真的很不友好,但是后面详细且耐心地去看时,还是能get到很多东西,时钟树也成了后续编程主要查阅的资料之一。以下是我对于STM32时钟系统的理解,参考了下面这位大佬的博客。(25条消息) 【STM32】系统时钟RCC详解(超详细,超全面)_Z小旋的博客-CSDN博客_stm32时钟
一、时钟是什么?
时钟是MCU的生命源泉,没有时钟信号,CPU和任何外设都不能工作。学习单片机一开始就应该弄懂所学单片机的时钟系统,这可以为后续的外设开发和灵活使用单片机奠定基础。
二、STM32时钟树
1.时钟树
转载自(25条消息) 【STM32】系统时钟RCC详解(超详细,超全面)_Z小旋的博客-CSDN博客_stm32时钟
2.时钟源
STM32有四个时钟源,这四种时钟源根据时钟频率高低又可以分为高速时钟源和低速时钟源,其中高速时钟源分别是内部8MHz的RC振荡器产生的HSI时钟信号,高速外部时钟信号(HSE)。低速时钟源分别是一个32.768kHz的低速外部晶体或陶瓷谐振器产生的LES时钟信号,低功耗时钟源LSI,时钟频率大约40kHz。
3.时钟系统
3.1 由时钟树可知,HSI和HSE以及PLL锁相环倍频器的PLLCLK经选择器用于系统时钟,如下图
系统时钟经过AHB预分频和APB预分频作用于各个外设。每个APB预分频线都是一个时钟总线,特定的外设会挂在特定的总线上,例如通用定时器的挂在APB1时钟总线上,经过特定的预分频系数后得到一个精准的时钟频率,用于定时器的计时。
3.2 LSE和LSI作用于RTC时钟和独立看门狗时钟
三、STM32时钟配置
1.系统时钟配置
上文提到了,STM32的系统时钟由HSE和HSI以及两者的倍频时钟PLLCLK,三者之一提供,我们在具体使用时,首先需要配置系统时钟,一般常见的SYSCLK为最高系统时钟频率72MHZ,这是经HSE的外部8M晶振时钟经PLL锁相环8倍频得来的。官方的标准库提供了系统时钟配置函数Stm32_Clock_Init(u8 PLL),PLL选择的是PLL锁相环倍频系数,一般情况下是9,在主函数的开头会调用这个函数。
void Stm32_Clock_Init(u8 PLL)
{
unsigned char temp=0;
MYRCC_DeInit(); //复位并配置向量表
RCC->CR|=0x00010000; //外部高速时钟使能HSEON
while(!(RCC->CR>>17));//等待外部时钟就绪
RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;
PLL-=2; //抵消2个单位(因为是从2开始的,设置0就是2)
RCC->CFGR|=PLL<<18; //设置PLL值 2~16
RCC->CFGR|=1<<16; //PLLSRC ON
FLASH->ACR|=0x32; //FLASH 2个延时周期
RCC->CR|=0x01000000; //PLLON
while(!(RCC->CR>>25));//等待PLL锁定
RCC->CFGR|=0x00000002;//PLL作为系统时钟
while(temp!=0x02) //等待PLL作为系统时钟设置成功
{
temp=RCC->CFGR>>2;
temp&=0x03;
}
}
2.外设时钟配置
在配置相关外设时需要先使能相关时钟,我们只需要需要通过查阅时钟树了解该外设是挂在哪个总线上的,然后使用固件库中的时钟使能函数使能相关函数就可以了,和配置寄存器比较,这是非常方便且省时的!下面提供一段配置TIM2为定时器中断的程序,在配置相关参数前就使能了定时器的时钟,关于定时器的相关配置和学习总结会在后续文章中详细记录,有需要的可以关注后续的文章。
void TIM2_Int_Init(u16 arr,u16 psc)//定时器2中断初始化 arr为重装载值 psc为分频系数 主函数要进行中断分组
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
NVIC_InitTypeDef NVIC_InitStruct;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//定时器时钟使能
TIM_TimeBaseInitStruct.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInitStruct.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInitStruct.TIM_Period=arr;
TIM_TimeBaseInitStruct.TIM_Prescaler=psc;
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct);//定时器初始化,配置参数
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);//设置更新中断
NVIC_InitStruct.NVIC_IRQChannel=TIM2_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
NVIC_Init(&NVIC_InitStruct);
TIM_ARRPreloadConfig(TIM2,ENABLE);
TIM_Cmd(TIM2,ENABLE);//使能TIM2定时器
}
总结
以上就是关于STM32时钟的全部学习总结,本人也是完全自学,如有错误或者理解不到位的地方以及博客写作的问题,请各位大佬在评论区指出!第一次学习时钟时一脸懵逼,后面每一次回顾都有不同程度的理解,这才知道学习贵在坚持,持之以恒的学习才能克服更多困难,大家一起加油,冲就够了!
边栏推荐
- Mei cole studios - sixth DjangoWeb application framework + MySQL database training
- 用正则验证文件名是否合法
- Safety helmet identification system - escort for safe production
- 安全帽佩戴识别系统介绍
- HTTP缓存机制详解
- Maykle Studio - HarmonyOS Application Development First Training
- 梅科尔工作室-第四次PR培训笔记(字幕和标题动画,关键帧动画和声音处理)
- 梅科尔工作室-华为云ModelArts第二次培训
- 安全帽识别
- 需求文档(PRD)撰写指南
猜你喜欢
梅科尔工作室-DjangoWeb 应用框架+MySQL数据库第五次培训
物联网IOT 固件升级
目标检测——卷积神经网路基础知识
Waymo数据集使用介绍(waymo-open-dataset)
CMT2380F32模块开发1-硬件
CVPR2022——A VERSATILE MULTI-VIEW FRAMEWORK
梅科尔工作室-HarmonyOS应用开发第一次培训
Hard hat recognition algorithm
第七届集美大学程序设计竞赛(个人赛)题解
Joint 3D Instance Segmentation and Object Detection for Autonomous Driving
随机推荐
The latest safety helmet wearing recognition system in 2022
产品经理人物推荐
微文案也能提升用户体验
Wisdom construction site safety helmet identification system
Asp doNet Mvc4绑定js脚本用法
CMT2380F32模块开发9-可编程计数阵列 PCA例程
Robust 3D Object Detection in Cold Weather Conditions
目标检测思维导图
LAGRANGIAN FLUID SIMULATION WITH CONTINUOUS CONVOLUTIONS
内核与用户空间通过字符设备通信
Safety helmet recognition - construction safety "regulator"
Realize data exchange between kernel and userspace through character device virtual file system (passed based on kernel 5.8 test)
The working principle and industry application of AI intelligent image recognition
梅科尔工作室-HarmonyOS应用开发第一次培训
【调试记录1】提高MC3172浮点运算能力,IQmath库的获取与导入使用教程
Reconstruction and Synthesis of Lidar Point Clouds of Spray
CMT2380F32模块开发1-硬件
OpenPCDet安装最新版:spconv一步到位
CNN-based Point Cloud De-Noising
梅科尔工作室-第四次PR培训笔记(字幕和标题动画,关键帧动画和声音处理)