主要功能-时钟 复位 电源
上个章节我们介绍了STM32F103微控制器的内核和存储器功能,这两部分属于单片机的核心功能,接下来我们接着介绍核心功能中的时钟、复位和电源管理。
STM32单片机是2.0~3.6伏供电,一般认为是3.3伏。与51单片机不同,51单片机是5伏电源。对于STM32来说,如果供电电压高于这个范围,则单片机不工作或者工作不稳定。同时I/O接口也是同样的电压范围。这里需要说明一点,芯片上的部分I/O引脚是可以兼容5伏电压的,但不是全部引脚都兼容,大家在使用时,需要注意。
再来看一下单片机的复位。单片机第一次上电或断电再次上电时,都会执行复位操作,另外可以设定电压值,如果低于这个电压值会引发复位操作,保证系统工作的稳定。再来看一下时钟,学过51单片机,大家应该知道单片机的时钟和我们时分秒的时钟是不同的。单片机里的时钟是给单片机提供基准时钟脉冲信号的,产生方波信号。单片机里表示时分秒的时钟叫做RPC实时时钟,稍后我们再做详细介绍。
我们这个图里列出了4个时钟信号,两个外接晶体振荡器,晶体振荡器就是石英晶振,体积大,不能集成在单片机里面,但是它的温漂比较小,就是随温度变化,振动的频率误差比较小,因此,它比较准确。HSE(High Speed External)是外部高速晶体振荡器,叫做外部高速时钟。LSE(Low Speed External)是外部低速时钟。为什么说一个是高速时钟,一个是低速时钟呢,HES这里外接的晶振是4~16MHz,M表示兆也就是10的6次方。LSE外接的是32kHz的晶振,K是千,也就是10的3次方。它们的数量级不同,所以HSE的频率要比LSE的频率高很多,频率越高,速度就越快。所以称HSE是高速时钟,LSE是低速时钟。高速时钟用于给单片机ARM内核提供系统时钟,低速时钟是为了给单片机内部的RTC实时时钟提供工作频率。RTC就是我们刚才说的给单片机内部表示时分秒的时钟,HSE、LSE这两个都是单片机外接晶体震荡器所提供的时钟,它们非常精确,但需要焊接晶振,而针对一些对时钟要求不敏感的应用,为了降低成本,可以不外接晶振,因此,单片机内部还提供了两个内部时钟,使用起来非常方便,但是不太准确。一个是内部高速时钟HSI(High Speed Internal),另一个是内部低速时钟LSI(Low Speed Internal)。
RC振荡器是由单片机内部的电阻R和电容C组成的振荡电路,以提供不同频率的时钟信号,RC振荡器的温漂比较大,因此时钟不是很准确,根据我们刚才所讲内容,外部高速时钟是给系统时钟用的,外部低速时钟是给RTC实时时钟使用的,因此大家可以想到RC振荡器产生的内部8MHz高速时钟是给系统用的,内部RC振荡器产生的40kHz的低速时钟是给RTC实时时钟使用的。
大家可以看到单片机包括两个外部时钟,两个内部时钟。外部时钟是由外接的晶体振荡器产生连续方波,比较准确。内部的时钟是由RC振荡器产生连续方波,计时不太准确。两个高速时钟为系统所用,两个低速时钟,一个为32kHz,一个为40kHz,频率很接近,是给RTC实时时钟提供时钟信号的。
这张是数据手册中的图表-时钟树。它完全地列出来STM32这个芯片内部各个模块的时钟来源以及相关的从属关系。OSC_OUT、OSC_IN、OSC32_IN、OSC32_OUT是芯片的引脚,用于外接石英晶振的。OSC适用于外接4~16MHz的晶体振荡器,它属于外部高速时钟。OSC32适用于32.768kHz的晶体振荡器,它是外部低速时钟。这两个都是由外部晶体振荡器产生的时钟。[8MHz HIS RC]是内部高速时钟,没有引脚,由RC振荡电路产生时钟信号。【LSE RC 40KHz】是内部低速时钟。
在这个图的正中央有一个系统时钟(SYSCLK),它的最大频率是72MHz,它的时钟信号通过选择器(SW)可以由PLLCLK提供,也可以HSI、HSE提供。
HIS的信号还可以先经过一个二分频连接到选择器(PLLSRC)上,然后经过PLL倍频器进行倍频,为系统提供时钟。PLL是锁相环电路,可以实现对频率进行倍频,8MHz的频率经过2分频变成4MHz,如果倍频倍数选择为四倍,那么倍频后就是16MHz,这是内部高速时钟。
再来看一下外部高速时钟,可以直接被选择,或者经过2分频后再被选择,然后连接到选择器(PLLSRC)经过倍频后,为系统提供时钟信号。如果外接的是8MHz的晶体振荡器,倍频系数选择9的话,系统时钟就是72MHz。HSE还可以直接连接到SW选择器,为系统提供时钟。这里注意,系统时钟可以由内部或者是外部的高速时钟来进行提供,具体如何选择,在编程时需要用户进行设置。这里还需注意系统的最大频率是72MHz,不能超过这个频率。
接下来看一下低速时钟,LSE外部低速时钟,外接的是32.768kHz的晶体振荡器,可以经过选择器直接成为RTC实时时钟。LSI是内部低速时钟,其中频率是40kHz,可以直接被选择为RTC实时时钟。或者给独立的看门狗提供时钟。另外,外部高速时钟还可以经过128分频之后,提供RTC实时时钟。下面的MCO是时钟输出引脚,箭头朝向芯片外部的方向表示输出,而上面的箭头都是输入。倍频后的时钟(PLLCLK)、内部高速时钟(HSI)、外部高速时钟(HSE)、系统时钟(SYSCLK)都可以选择输出。
再来看一下系统时钟的右边,AHB高性能系统总线,APB外围总线,各个模块的工作时钟不同,系统时钟还需要再进行分检,为各个模块提供不同的时钟。这一章和上一章所讲的核心功能是单片机最小系统的组成部分。
,