STM32与51单片机中各个周期的简述

近日在一技术交流群中关于振荡周期、机器周期等发生了激烈的讨论,本期我们就简单的讲一讲这各个周期之间的关系。

我们常见的芯片时钟提供方式有两种。

一种是旁路时钟源(BYPASS Clock Source),另一种则是石英晶体振荡器也就是我们常说的晶振。

在STC89CXX系列也就是8051单片机中提到了,当我们使用石英振荡器时需要将其两个引脚都接入XTAL1和XTAL2中,而当我们使用外部时钟源的时候则可以悬空XTAL2

而在STM32中虽然其内部更为复杂,不过在高速时钟方面却是差不多相同的,使用外部时钟源时则可以节省一个IO。这源于石英晶体是一种具有压电效应的材料,当对其施加电压时会产生机械振动,反之,机械振动也会产生电压。石英晶体具有非常稳定的机械共振频率,因此可以作为高精度的频率基准。

石英晶体本身不能直接产生时钟信号,需要通过振荡电路来实现。常见的振荡电路包括反相器(如反相放大器)和反馈电路(如电阻、电容)。石英晶体连接在振荡电路中,使得电路能够在晶体的共振频率下工作,从而产生稳定的振荡信号。

由于振荡电路产生的信号通常比较弱且波形不规则,需要通过放大和整形电路将其转换为稳定的矩形波时钟信号。放大电路放大信号的幅度,整形电路则将信号变成干净的矩形波,以确保时钟信号的稳定性和一致性。

经整形后的稳定时钟信号被送入单片机的时钟管理单元,作为系统时钟源。单片机内部有时钟分频器,可以根据需要将时钟信号分频,生成不同频率的时钟信号供各个模块使用。

而晶振的振荡频率也就是时钟周期,以12MHZ的晶振为例,其时钟周期是12MHZ,而振荡周期则是1/12MHZ约为83.3ns

在常规的8051系列中机器周期通常是12个时钟周期,当然如果仔细阅读STC手册的话,他们家的产品有些能做到机器周期=时钟周期。

12个时钟周期 = 1个机器周期,这样子可以做到机器周期 = 12 *83.3ns约为1us,这也是为什么很多51单片机会选择12MHZ的晶振作为机器周期,因为这样子一条机器周期就正好是1us,然后运行nop函数也就是空跑一条的话就正好是1us。

当然这里就要提到一个新的概念也就是指令周期,通常来说指令周期是由若干机器周期组成,这里需要看具体的指令。

在8051中不同的指令周期所需要的机器周期不尽相同,所以这样子我们就可以得到以下关系:

指令周期 = n * 机器周期  = n * 12 * 时钟周期

而在STM32中,则会稍显复杂,但是其复杂性体现在时钟管理上。

外部输入时钟通过各种倍频和分频进行时钟管理

STM32的时钟系统结构类似于一棵“时钟树”,从时钟源经过各种分频器和多路复用器(MUX)将时钟信号分配给不同的子系统和外设。主要包括以下几个部分:

  • 系统时钟(SYSCLK):是整个微控制器的主时钟,由多种时钟源选择和分频器组合而成。

  • AHB时钟(HCLK):是高级高速总线(AHB)的时钟,通常由SYSCLK分频得到。

  • APB1和APB2时钟(PCLK1和PCLK2):是两个高级外设总线(APB)的时钟,也由SYSCLK或HCLK分频得到。

  • 外设时钟:每个外设模块(如ADC、TIM、USART等)可能有自己专用的时钟源和分频器设置‘

STM32中的机器周期

在STM32微控制器中,机器周期的概念并不像在8051单片机中那样明确,因为STM32是基于ARM Cortex-M内核的32位微控制器,其架构和时钟管理机制更加复杂和灵活。

机器周期的定义

对于基于ARM Cortex-M内核的微控制器(如STM32),机器周期通常被认为是处理器执行一条指令所需的最小时间单位。机器周期的时间长度由系统时钟频率决定。在ARM Cortex-M内核中,大多数指令的执行时间是1到2个时钟周期。例如:一条简单的指令(如加法指令)通常在一个时钟周期内完成。较复杂的指令(如乘法指令)可能需要多个时钟周期。具体执行时间取决于指令类型和系统配置。

  • 22
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值