STM32学习笔记--------时钟体系

发布者:数据之翼最新更新时间:2022-07-04 来源: csdn关键字:STM32  学习笔记  时钟体系 手机看文章 扫描二维码
随时随地手机看文章

stm32的时钟体系参考(转自正点原子,仅用于学习交流):

来自正点原子

一、时钟是什么?

时钟:给单片机提供一个时钟信号(某个频率),协调单片机内部组件同步工作,实现与外部设备通信的同步。(串口的波特率同步)相当于我们的心脏,是核心的部分。


二、时钟源

STM32103的5个时钟源


HSE 高速外部时钟 RC振荡器 频率为8MHz

HSI 高速内部时钟 外接时钟4MHz~16MHz

LSI 低速内部时钟 RC振荡器频率为40KHz 供WDG看门狗

LSE 低速外部时钟 32.768MHz 供给RTC

PLL 锁相环倍频输出(范围2~16倍)最大不超过72MHz


系统时钟来源SYSCLK


HSI

HSE

PLL


时钟输出MCO(PA8)


PLLCLK /2

HSI

HSE

SYSCLK


重要的时钟


SYSCLK 系统时钟

AHB 总线时钟

APB1 低速总线36MHz

APB2 高速总线72MHz

PLL 时钟


三、RCC时钟控制

stm32f10x_rcc.c

①时钟使能配置


void RCC_HSEConfig(uint32_t RCC_HSE);

void RCC_HSICmd(FunctionalState NewState);

void RCC_PLLConfig(uint32_t RCC_PLLSource, uint32_t RCC_PLLMul);

void RCC_PLLCmd(FunctionalState NewState);


②时钟源配置


void RCC_LSEConfig(uint8_t RCC_LSE);

void RCC_LSICmd(FunctionalState NewState);

void RCC_RTCCLKConfig(uint32_t RCC_RTCCLKSource);

void RCC_RTCCLKCmd(FunctionalState NewState);


③分频系数配置


void RCC_SYSCLKConfig(uint32_t RCC_SYSCLKSource);

void RCC_HCLKConfig(uint32_t RCC_SYSCLK);//分频系数设置

void RCC_PCLK1Config(uint32_t RCC_HCLK);

void RCC_PCLK2Config(uint32_t RCC_HCLK);


④外设时钟使能


void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);

void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);//时钟

void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);


⑤其他外设时钟使能

⑥状态参数

⑦RCC中断


void RCC_ITConfig(uint8_t RCC_IT, FunctionalState NewState);


四、SystemInit系统初始化函数

修改系统时钟频率

把指定的宏定义修改

在这里插入图片描述

获取当前的系统时钟


/*******************************************************************************

*  Clock Definitions

*******************************************************************************/

SystemCoreClock:当前时钟频率

#ifdef SYSCLK_FREQ_HSE

  uint32_t SystemCoreClock         = SYSCLK_FREQ_HSE;        /*!< System Clock Frequency (Core Clock) */

#elif defined SYSCLK_FREQ_24MHz

  uint32_t SystemCoreClock         = SYSCLK_FREQ_24MHz;        /*!< System Clock Frequency (Core Clock) */

#elif defined SYSCLK_FREQ_36MHz

  uint32_t SystemCoreClock         = SYSCLK_FREQ_36MHz;        /*!< System Clock Frequency (Core Clock) */

#elif defined SYSCLK_FREQ_48MHz

  uint32_t SystemCoreClock         = SYSCLK_FREQ_48MHz;        /*!< System Clock Frequency (Core Clock) */

#elif defined SYSCLK_FREQ_56MHz

  uint32_t SystemCoreClock         = SYSCLK_FREQ_56MHz;        /*!< System Clock Frequency (Core Clock) */

#elif defined SYSCLK_FREQ_72MHz

  uint32_t SystemCoreClock         = SYSCLK_FREQ_72MHz;        /*!< System Clock Frequency (Core Clock) */

#else /*!< HSI Selected as System Clock source */

  uint32_t SystemCoreClock         = HSI_VALUE;        /*!< System Clock Frequency (Core Clock) */

#endif


时钟源的选择

在这里插入图片描述
在这里插入图片描述

时钟源切换

修改对应的宏参即可

在这里插入图片描述

五、应用

对芯片进行降频,减少功耗损失,类似于手机的低功耗模式,电脑的低性能模式。

例程


void KEY_Clk(void)

{

    if(Bit_RESET == GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4))

    {

        RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));

        RCC->CFGR |= (uint32_t)RCC_CFGR_SW_HSI;        

    }

    else if(Bit_RESET == GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3))

    {

        RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));

        RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;        

    }

    else

    {

        RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));

        RCC->CFGR |= (uint32_t)RCC_CFGR_SW_HSE;    

    }

}


实验现象:

RCC_CFGR_SW_HSE


# 总结 对时钟系统还是不太熟悉,还是一点懵懵懂懂。

关键字:STM32  学习笔记  时钟体系 引用地址:STM32学习笔记--------时钟体系

上一篇:STM32学习笔记--------外部中断
下一篇:STM32学习笔记--------GPIO

推荐阅读最新更新时间:2024-11-11 10:58

STM32单片机/SPI通信
SPI 接口主要应用在 EEPROM, FLASH,实时时钟, AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,这四根引脚分别是: SS(Slave Select)从设备片选信号,由主设备控制。 SCK(Serial Clock)时钟信号,由主设备产生。 MISO(Master Output,Slave Input) 主设备数据输入,从设备数据输出。 MOSI(Master Input,Slave Output) 主设备数据输出,从设备数据输入。 硬件连线如上图,从设备的SCK,MOSI,MISO线均并联到主机MCU上,但片选信号线要直接
[单片机]
详解stm32能跑什么系统
STM32系列32位微控制器,基于ARM Cortex-M3处理器。它能支持32位广泛的应用,支持包括高性能、实时功能、数字信号处理,和低功耗、低电压操作,同时拥有一个完全集成和易用的开发。 基于STM平台且满足实时控制要求的操作系统,有以下4种可供选择。分别为μC/OS-II、μClinux、eCos、FreeRTOS和都江堰操作系统(djyos)。下面分别介绍这五种嵌入式操作系统的特点及不足。 1、μC/OS-II μC/OS-II 是一种基于优先级的抢占式多任务实时操作系统,包含了实时内核、任务管理、时间管理、任务间通信同步(信号量,邮箱,消息 队列)和内存管理等功能。它可以使各个任务独立工作,互不干涉,很容易实现准时而且无
[单片机]
STM32-电源【ADC供电、VDDA、VSSA、VREF、VBAT等】
STM32供电方案一览 STM32的电源框图如下所示,电源供电共分为4个区域: VDD、VSS供电区域; VDDA、VSSA供电区域; 1.8V供电区域; 后备电源(VBAT)供电区域; STM32F103ZET6(其他的STM32也基本无差)的Datasheet关于供电方案的说明如下: Power supply schemes • VDD = 2.0 to 3.6 V: external power supply for I/Os and the internal regulator(内部调节器或稳压器). Provided externally through VDD pins. • VSSA, VDDA = 2
[单片机]
STM32-电源【ADC供电、VDDA、VSSA、VREF、VBAT等】
STM32开发环境】Linux下开发stm32(二) | 使用openocd下载程序
1.openocd介绍 openocd全名叫做Open On-Chip Debugger,是一个自由开放的片上调试工具和编程工具,目前已经发布到0.10.0版本,目前主流调试器几乎都支持,具体可以查看Open On-Chip Debugger:OpenOCD User’s Guide,它的项目托管在sourceforge上,点击下载即可~ 注:ubuntu软件源中也有openocd,但是版本到0.9.0,所以使用拉取源码手动安装。 2.openocd安装 首先使用命令unzip openocd-0.10.0.zip将下载的zip包解压,然后重命名为openocd: 2.1.安装openocd所需依赖 libtool: 先
[单片机]
【<font color='red'>STM32</font>开发环境】Linux下开发<font color='red'>stm32</font>(二) | 使用openocd下载程序
stm32专题十七:AT24C02
AT24C02的数据手册 1 硬件连接:直接是连接到I2C1的SCL SDA引脚(PB6 PB7)上,因此可以使用硬件I2C 2 存储容量描述 可以看到,AT24C02共有256个字节。跟Flash类似,EEPROM也分成不同的页。AT24C02共有32页,每页8个字节,共256字节。 支持400kHz的通讯速率(IIC快速模式) 3 引脚说明 4 设备描述 5 地址选择 6 写数据 字节写入 字节写入操作,需要8位的数据字地址跟随在设备字地址和应答位之后。当EEPROM接收到这个地址后,会再次响应0(初次响应为设备地址)。然后计时第一个8位数据。在收到8位数据后,EEPROM会输出
[单片机]
<font color='red'>stm32</font>专题十七:AT24C02
STM32的各个MCU性能评判
1写在前面 我们经常听见某手机发布会,安兔兔跑分多少多少,其实这个跑分就是体现手机性能的一个指标。我们使用STM32开发产品,选择MCU时,一般会综合考虑MCU各方面性能。对于MCU来说,一个重要指标是功耗,还有一个重要指标就是性能。 当我们进入ST官方微控制器网页,就会发现ST将MCU划分为不同层次,如下图: https://www.st.com/en/microcontrollers.html 从上面层次关系,大致可以了解ST各MCU的功耗和性能。 2 STM32 CoreMark跑分 STM32家族的32位微控制器基于ARM Cortex®-M处理器设计,为用户提供新的自由度。 产品集高性能、实时性、数字信号处理
[单片机]
<font color='red'>STM32</font>的各个MCU性能评判
STM32 IIC通信之PAJ7620U2手势识别模块驱动程序源码详解
大家好。本人小白一个,最近在自学stm32,想用手势识别模块做一点好玩的,正好借此巩固IIC 通信的内容。 很多人刚刚接触IIC、SPI、CAN等通信方式时都会有一堆的问题:为什么要学它?学它可以做什么?我该怎么去学习它呢?我就在这里和大家分享一下自己学习时的所思所感吧,若有表述不对之处,还请各位大佬指出,我好立刻改正。 话不多说,先上硬货。 一、回答上面的问题: 1、什么是IIC通信呢?简单,两条线通信同步串行总线。(在此不做更多说明) 2、为什么要学习这些看起来“根本没多大用处”的通信协议呢?大哥,你总不能永远靠串口吃饭吧 ,况且真正到了实际项目中,通信的方式要根据环境选择,你总不能想当然的自己决定吧,学好这些通信方式,你
[单片机]
STM32中ucos的编写程序
* Includes ------------------------------------------------------------------*/ #include config.h /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ //定义 堆栈大小 //#define TASK_STK_SIZE 128 #define TASK_STK_SIZ
[单片机]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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