STM32系统时钟设置详解

发布者:温馨阳光最新更新时间:2018-07-20 来源: eefocus关键字:STM32  系统时钟 手机看文章 扫描二维码
随时随地手机看文章

配置主要代码如下,看起来挺简单,实际设计的东西还是挺多的,需要多看几遍,下面进行详解:

//系统时钟初始化函数

//pll:选择的倍频数,从2开始,最大值为16 


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个单位
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;
}    

}


(1)、MYRCC_DeInit(); 配置向量表

(2)、RCC->CR|=0x00010000;  使能外部高速时钟,由时钟控制寄存器(RCC_CR)的第16位控制。

              

                   

(3)、while(!(RCC->CR>>17));等待外部时钟就绪,外部时钟就绪后硬件置1

              

(4)、RCC->CFGR=0X00000400; 时钟配置寄存器(RCC_CFGR),设置低速APB1最大不超过36Mhz,由于系统最大为72Mhz,这里只需要设置为2分频,即100

              

                 

                       

(5)、 PLL-=2;和RCC->CFGR|=PLL<<18;   用来设置锁相环,由于外部使用的晶振为8Mhz,这样我们调用系统时钟时会设置为9(Stm32_Clock_Init(9);),这样会得到72Mhz的系统时钟,但是这样PLL 11倍频输出,这样系统时钟变成了8*11=88Mhz,因此需要先将PLL减2得到7,即0111,这样得到PLL 9倍频输出,8*9=72Mhz,这样就OK啦。

                

(6)、RCC->CFGR|=1<<16; 打开PLL时钟源。

              

                  

                          

(7)、FLASH->ACR|=0x32;延时一下,让CPU歇会

(8)、RCC->CR|=0x01000000;   PLL使能

              

                 

                         

(9)、while(!(RCC->CR>>25));PLL时钟就绪硬件置1

(10)、RCC->CFGR|=0x00000002;设置PLL作为系统时钟

                 

                      

(11)、while(temp!=0x02)     //等待PLL作为系统时钟设置成功
{   
temp=RCC->CFGR>>2;
temp&=0x03;
}  用来查询系统时钟设置是否正常,配置正常后相应位硬件置1

        

(12)完成


总的来说有以下8部分组成:

1、打开外部晶振振荡器,由第16位控制,检测外部振荡器打开是否正常,由第17位指示

2、配置APB1时钟不超过36Mhz

3、设置锁相环的值

4、设置外部时钟PLL作为输入

5、稍微延时

6、启动锁相环,并检测工作是否正常

7、锁相环时钟正常之后,将它作为系统时钟

8、等待配置成功


关键字:STM32  系统时钟 引用地址:STM32系统时钟设置详解

上一篇:STM32F103的SysTick使用方法
下一篇:STM2串口配置

推荐阅读最新更新时间:2024-03-16 16:09

stm32定时器概述
stm32的定时器分3类:基本定时器、通用定时器和高级定时器,其中通用定时器分两组:(TIM2-TIM5)和(TIM9-TIM14)。 基本定时器(TIM6、TIM7) 功能:基本定时和驱动DAC 16位自动重装递增计数器 16位可编程预分频器 频率:84MHz 中断源:计数器上溢更新中断 通用定时器(TIM9到TIM14) 16位自动重装递增计数器 16位可编程预分频器 TIM9和TIM12有两路单通道,其余TIM10、11、13、14都有一路单通道 多定时器互联同步 中断源:更新、输入捕获、输出比较 TIM9和TIM12 时钟源:内部时钟、外部时钟(外部输入引脚TIx)、定时器互同步时钟 常用功能模式:基本
[单片机]
<font color='red'>stm32</font>定时器概述
STM32经验心得(一)
相关经验及心得如下:  摘要:1.在配置USART的TX完成中断后,在没有发数的情况下自动进入TX完成中断函数。2 .在TX配置完成后,相应的TC标志位会自动置1,随后就进入了TX完成中断。3.相关配置程序编写无误,并已经开启时钟,依旧无法配置相关GPIO及外设;4.ADC通道:分为规则组和注入组;5.修改定时器的预装值后,定时器不能立刻修改。 一、 USART TX中断配置 1. 问题描述: 在配置USART的TX完成中断后,在没有发数的情况下自动进入TX完成中断函数。 2. 问题分析: 在TX配置完成后,相应的TC标志位会自动置1,随后就进入了TX完成中断。 (TC标志位:发送完成标志位 ) 当包含有数据的一帧发送
[单片机]
<font color='red'>STM32</font>经验心得(一)
基于STM32的嵌入式测控系统设计与实现
测控系统是水动力实验中的重要测试设备。在实验中有压力、拉力、加速度等物理量通过传感器转换成电压值,需要准确记录。虽然实验模型有很多种,但是共用传感器及测控系统,因此对测控系统的通用性和用户界面友好性提出了要求。本文采用嵌入式架构设计了测控系统。 本文设计的系统硬件基于STM32芯片,具有很强的扩展能力,易于移植,其外设单元资源丰富,能够达到系统要求的精度和范围。 1、硬件架构 采用嵌入式架构(见图1)的优点是通用性强,便于在多平台移植;主控芯片外围电路模块丰富,包括ADC、DA、CAN和SDIO等接口,独立完成对多种类型设备的测量、控制。芯片的主频高,运算能力也很强,适合嵌入复杂的算法。完全适合作为测控系统,具备系统升级
[单片机]
基于<font color='red'>STM32</font>的嵌入式测控<font color='red'>系统</font>设计与实现
STM32窗口看门狗详解
本文将介绍窗口看门狗,并通过按键模拟触发程序死机、进而触发提前唤醒中断、并复位程序。 ①窗口看门狗介绍 ②STM32CUBEMX配置工程文件 ③代码实现 ①窗口看门狗介绍 窗口看门狗用来监测由于不可预知的因素或者不可预知的逻辑条件导致程序脱离正常运行序列的软件故障。 窗口看门狗介绍之工作原理框图: 窗口看门狗介绍之配置寄存器: 预分频器用于将RCC传来的PCLK1时钟进行分频,配置寄存器中第7位第8位用来存放预分频器的预分频值,第0位至第6位用于存放窗口看门狗的窗口值,当计数器的值大于窗口值时喂狗会触发复位、即只有计数器的值在0x40与窗口值之间时喂狗不会触发程序复位;所以窗口值需要大于0x40、小于0x7f,否则窗口没有
[单片机]
<font color='red'>STM32</font>窗口看门狗详解
stm32 ADC的规则通道和注入通道混合使用
之前完成了规则通道DMA的数据传输了,不过平时在使用ADC的时候可能就会遇到很多情况,不可能就这样简单的按规则通道来采样,DMA存储,使用数据的;可能有时候会需要立刻采样,那样我们就需要利用到注入通道了。文档关于注入通道的解释: 1 利用外部触发或通过设置ADC_CR2寄存器的ADON位,启动一组规则通道的转换。 2 如果在规则通道转换期间产生一外部注入触发,当前转换被复位,注入通道序列被以单次扫描方式进行转换。 3 然后,恢复上次被中断的规则组通道转换。如果在注入转换期间产生一规则事件,注入转换不会被中断,但是规则序列将在注入序列结束后被执行。   将变阻器的那路ADC设置为注入通道: 1 ADC_In
[单片机]
<font color='red'>stm32</font> ADC的规则通道和注入通道混合使用
STM32之CANTTCAN模式浅析
1 前言 传统CAN 采用事件触发消息传输机制,CSMA/ CD+ AMP( Carrier-Sense Mult iple Access w ith Co llision Detect ion and Arbit ration on Message Priorit ies, 载波侦听、多路访问、冲突检测、优先级仲裁) 介质访问控制机制, 即多个消息同时发送时, 按照消息标识符的优先级顺序, 低优先级消息自动退出, 高优先级消息继续发送。这种介质访问方式提高了网络的利用率和高优先级消息的实时性, 但在重负载CAN 中, 低优先级消息经常由于总线冲突而被迫退出发送, 导致低优先级消息传输时延长, 且传输时延不可预测,
[单片机]
<font color='red'>STM32</font>之CANTTCAN模式浅析
MSP430 5438时钟系统介绍
简介:UCS模块支持低功耗。它内部含有三个时钟信号,用户可以自行选择,找到性能和功耗的平衡点。UCS软件配置后,只需要一两个晶振或者电阻,而不需要使用外部振荡器。 1.1时钟系统介绍 UCS模块最多含有5个时钟源: l XT1CLK:低频/高频振荡器,可以使用低频 32768HZ 晶振和外部振荡器或者通过外部输入源输入4MHZ~32MHZ时钟。 l VLOCLK:内部低消耗,低频振荡器。典型值为 12KHZ。 l REFOCLK:内部低频振荡器,典型值为 32768HZ,作为 FLL基准源。 l DCOCLK:内部数字控制振荡器(DCO)可以通过 FLL来稳定。 l XT2CLK:可选择的高频振荡器,可以使用标准晶振,振荡
[单片机]
MSP430 5438<font color='red'>时钟</font><font color='red'>系统</font>介绍
玩转STM32(1)入门硬件的基本条件
由于嵌入式软件都是在设备里,相对PC软件来说更容易实现价值,即使软件非常简单,比如万行级别的软件就可以实现很好的功能了,如果这样万行级别的PC软件,很难卖出一个价钱来的,现在PC上的软件都是几十万行,或者百万行级别上才能实现价值的销售,从这个角度来说,嵌入式软件比PC软件更容易实现代码的变现能力,当然PC上容易变现能力的代码是前端、后端,但这样需要很多商业模式,比如像淘宝这样。因此嵌入式软件开发,还是一个蛮有竞争力的市场,也适合小团队,甚至个人独立完成开发的工作。另外,工业互联网和物联网也在迅猛发展,对这个需求更加广泛了。比如智能音箱已经在农村进行推广,因为农村电话网全部改为光纤网络,有线电视也全部光纤改造了,因此上网的必备条件已
[单片机]
玩转<font color='red'>STM32</font>(1)入门硬件的基本条件
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved