本帖最后由 zhixiaoyuhong 于 2016-5-13 08:37 编辑
话接上贴,上贴说完了点亮 开发板上的LED,这回来说说有关 STM32f0的三要素: 电源、复位、时钟。。。 首先来说说时钟吧。。。 说到时钟,就不得不提一下时钟树,这个时钟树对理解和掌握以及应用stm32f0系列芯片的时钟至关重要,
通过上图,我们可以看到,cpu核心的时钟来源有3个,分别为:HSI、HSE、PLL。其实我一直认为PLL不算时钟源,因为没有前面的独立时钟源,单单PLL是不能产生震荡信号的,对吧。。。但是人家手册都这么叫,我们也就这么叫吧。。。 上回点亮led的时候,我们自己并没有编写时钟配置的代码,那么stm32f030r8为何还会运行我们的程序、是以何种速度运行我们的代码的呢? 针对上面的疑问来说,就算整个工程当中都没有对时钟进行设置,stm32f0系列依然会正常执行程序,这源于各个寄存器的默认参数,经过查阅参考手册,发现默认配置HSI+PLL为主时钟源,主频为HSIx2 = 16MHz。但我们编写的LED工程是这样子么?不是的,上次LED工程中stm32f030芯片的时钟源为HSE+PLL,主频为HSEx6 = 48MHz,这个时钟配置我们并没有去做,那是谁给我们做的呢?
这个就要归功于st给我们提供的system_stm32f0xx.c这个文件了,这个文件当中有一个void SystemInit (void)函数,对芯片的运行时钟进行了配置。
通过分析其中代码可以发现,这个函数对系统中的各类总线时钟、外设时钟以及内核时钟等均进行了设置。以上代码分别对以下寄存器进行了设置:
进入SetSysClock(); 这个函数,经过分析,见下面最关键代码可以得知最终系统主频被配置成了48MHz。
至此时钟部分配置完成。以上只对关键寄存器及关键位进行了截图,大家学习最好还是对每个寄存器的各个位都分析一下。。。 关于stm32f0的时钟,就做这简单介绍吧,剩下的外设时钟像ADC时钟、RTC时钟以及时钟安全系统、看门狗时钟和时钟校准啥的等以后有需要的话在讲详细外设的帖子里面再介绍好吧。。。
下面来看看复位系统。
通过上图可以看出,stm32f0系列可以由7种情况引发系统复位,分别为:
1.NRST引脚低电平、2.窗口看门狗超限事件、3.独立看门狗事件、4.软复位、5.低电源管理复位、6.选项字节加载器复位、7.电源复位
通过分析上图复位 电路可以看出,复位引脚内部接了一个大约40k欧的上拉电阻,所以外面就可以不用接上下拉电阻了,经过查阅手册,发现该系列芯片为低电平复位,推荐电路如下:
外接复位电容的时候,尽量不要接10uF以上的大电容,根据复位引脚内部电路可知,有一mos管与上拉电阻串联到地,如果接了大电容,有可能引发电流倒灌烧毁mos,所以尽量按照推荐电路来,接0.1uF的电容吧。。。 复位就这么简单,引发复位的条件很多,但内容不多,具体引发复位的条件,各位看官用的时候自己查阅参考手册即可。。。
下面来说说电源,额。。。电源这是个大话题,虽然板子上的电源基本上都是千篇一律,但电源这块不得不说是最值得慎重考虑的一方面。。。
由上图可知,stm32f0系列芯片需要外接2部分电源来给内部的四大关键部分供电,AD供电这块无需多说,如果这电源和基准参考引脚的基准不稳,那f0的AD的各项参数再好,也测不准电压。对吧。。。
VDD主要用来给数字逻辑部分供电,像唤醒逻辑、看门狗、IO等,给内核、内存和数字外设的供电需要在VDD之后加上一个电压调整器,查了下数据手册,发现内核、内存、数字外设的电压是1.8V,这个数值不需要太关心,我们只要关注芯片外部供电要求范围即可。。。
这个是电源的极限参数,注意VDD最高到4V,但最好也不要超过3.5V,要不然说不定运气和人品差的话,就冒白烟了。。。
剩下的关键就是低功耗模式了, ARM推出m0内核的时候就打着低价格、低功耗、高性能的广告来进行推广的,其实低功耗的模式各类mcu都差不多,f0也一样,有3中低功耗模式:
分别为:睡眠模式、停止模式、待机模式。这三种当中数停机模式功耗最低,当然,唤醒也更为复杂和耗时,这时候连内存和寄存器都停了,只剩下备份域还消耗着着微弱的电流。。。详细介绍3中低功耗情况请看下图:
这种极限模式的唤醒就需要重新初始化各外设了。说实话之前我一直以为这么变态的模式到底能有多省电,直到我看到了我用的小米手环的能力瞬间让我震惊了,虽然不清楚手环里用了何种mcu,但它的低功耗确实做到了极致。我定了一个固定闹钟,足足用了55天还有7%的电量!!!真是神器啊,ps一句感慨:像小米、华为之类的高端公司员工的工资固然高的很,但从人家产品来看,他们的工程师的水平确实是很高的,所以大家还是要加油努力啊,不能只看着人家的工资,不看人家工程师通宵钻研时候流的汗水啊。。。这是我的一点感慨,题外话了。。。 其实每个mcu的各个方面都是很难简单说透的,第一次写这种经验贴,很多细节都没有讲到,要讲的话得啪啪啪讲上一堆都讲不完,所以有细节需求的朋友们担待点,有那方面需要,自己去查查手册吧哈。。。这一贴又挺长的了。。。
三要素部分到此结束,下回请听:stm32f0定时器之你的时间,我说了算。。。
|