ImageVerifierCode 换一换
格式:DOC , 页数:5 ,大小:70.50KB ,
资源ID:7687980      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7687980.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(图文详解stm32时钟树.doc)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

图文详解stm32时钟树.doc

1、 对于广大初次接触STM32的读者朋友(甚至是初次接触ARM器件的读者朋友)来说,在熟悉了开发环境的使用之后,往往“栽倒”在同一个问题上。这问题有个关键字叫:时钟树。   众所周知,微控制器(处理器)的运行必须要依赖周期性的时钟脉冲来驱动——往往由一个外部晶体振荡器提供时钟输入为始,最终转换为多个外部设备的周期性运作为末,这种时钟“能量”扩散流动的路径,犹如大树的养分通过主干流向各个分支,因此常称之为“时钟树”。在一些传统的低端8位单片机诸如51,AVR,PIC等单片机,其也具备自身的一个时钟树系统,但其中的绝大部分是不受用户控制的,亦即在单片机上电后,时钟树就固定在某种不可更改的状态(

2、假设单片机处于正常工作的状态)。比如51单片机使用典型的12MHz晶振作为时钟源,则外设如IO口、定时器、串口等设备的驱动时钟速率便已经是固定的,用户无法将此时钟速率更改,除非更换晶振。 而STM32微控制器的时钟树则是可配置的,其时钟输入源与最终达到外设处的时钟速率不再有固定的关系,本文将来详细解析STM32微控制器的时钟树。   图1是STM32微控制器的时钟树,表1是图中各个标号所表示的部件。 标号            图1标号释义 1     内部低速振荡器(LSI,40Khz) 2     外部低速振荡器(LSE,32.768Khz) 3    外

3、部高速振荡器(HSE,3-25MHz) 4    内部高速振荡器(HIS,8MHz) 5    PLL输入选择位 6    RTC时钟选择位 7    PLL1分频数寄存器 8    PLL1倍频寄存器 9    系统时钟选择位 10     USB分频寄存器 11     AHB分频寄存器 12     APB1分频寄存器 13     AHB总线 14     APB1外设总线 15     APB2分频寄存器 16       APB2外设总线 17     ADC预分频寄存器 18     ADC外设 19     PLL

4、2分频数寄存器 20     PLL2倍频寄存器 21     PLL时钟源选择寄存器 22     独立看门狗设备 23       RTC设备 图1  STM32的时钟树          在认识这颗时钟树之前,首先要明确“主干”和最终的“分支”。假设使用外部8MHz晶振作为STM32的时钟输入源(这也是最常见的一种做法),则这个8MHz便是“主干”,而“分支”很显然是最终的外部设备比如通用输入输出设备(GPIO)。这样可以轻易找出第一条时钟的“脉络”: 3——5——7——21——8——9——11——13 对此条时钟路径做如下解析: 对于3,首先是外

5、部的3-25MHz(前文已假设为8MHz)输入; 对于5,通过PLL选择位预先选择后续PLL分支的输入时钟(假设选择外部晶振); 对于7,设置外部晶振的分频数(假设1分频); 对于21,选择PLL倍频的时钟源(假设选择经过分频后的外部晶振时钟); 对于8,设置PLL倍频数(假设9倍频); 对于9,选择系统时钟源(假设选择经过PLL倍频所输出的时钟); 对于11,设置AHB总线分频数(假设1分频); 对于13,时钟到达AHB总线; 在上一章节中所介绍的GPIO外设属于APB2设备,即GPIO的时钟来源于APB2总线,同样在图1中也可以寻获GPIO外设的时钟轨迹:

6、 3——5——7——21——8——9——11——15——16 对于3,首先是外部的3-25MHz(前文已假设为8MHz)输入; 对于5, 通过PLL选择位预先选择后续PLL分支的输入时钟(假设选择外部晶振); 对于7,设置外部晶振的分频数(假设1分频); 对于21,选择PLL倍频的时钟源(假设选择经过分频后的外部晶振时钟); 对于8,设置PLL倍频数(假设9倍频); 对于9,选择系统时钟源(假设选择经过PLL倍频所输出的时钟); 对于11,设置AHB总线分频数(假设1分频); 对于15,设置APB2总线分频数(假设1分频); 对于16,时钟到达APB2总线

7、 现在来计算一下GPIO设备的最大驱动时钟速率(各个条件已在上述要点中假设): 1)   由3所知晶振输入为8MHz,由5——21知PLL的时钟源为经过分频后的外部晶振时钟,并且此分频数为1分频,因此首先得出PLL的时钟源为:8MHz / 1 = 8MHz。 2)   由8、9知PLL倍频数为9,且将PLL倍频后的时钟输出选择为系统时钟,则得出系统时钟为 8MHz * 9 = 72MHz。 3)   时钟到达AHB预分频器,由11知时钟经过AHB预分频器之后的速率仍为72MHz。 4)   时钟到达APB2预分频器,由15经过APB2预分频器后速率仍为72MHz。 5

8、)   时钟到达APB2总线外设。 因此STM32的APB2总线外设,所能达到的最大速率为72MHz。依据以上方法读者可以搜寻出APB1总线外设时钟、RTC外设时钟、独立看门狗等外设时钟的来龙去脉。接下来从程序的角度分析时钟树的设置,程序清单如下: void RCC_Configuration(void) { ErrorStatus HSEStartUpStatus;                                                                                                     (1)

9、RCC_DeInit();                                                                                                                                     (2) RCC_HSEConfig(RCC_HSE_ON);                                                                                                   (3) HSEStartUpStatus 

10、 RCC_WaitForHSEStartUp();                                                                     (4) if(HSEStartUpStatus == SUCCESS)                                                                                                (5) {    RCC_HCLKConfig(RCC_SYSCLK_Div1);                           

11、                                                   (6)              RCC_PCLK2Config(RCC_HCLK_Div1);                                                                               (7)              RCC_PCLK1Config(RCC_HCLK_Div2);                                                                      

12、          (8)     FLASH_SetLatency(FLASH_Latency_2);                                                                             (9)     FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);                                      (10)   RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);       

13、                                  (11)   RCC_PLLCmd(ENABLE);                                                                                                              (12)   while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);                                                       (13)   RCC_

14、SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);                                                               (14)   while(RCC_GetSYSCLKSource() != 0x08);                                                                               (15) } } 以上是ST官方所提供的STM32时钟树配置函数,读者首先要知道3点 1、ST所提供的库函数在函数和变量命名上有非常

15、良好的规范性和易读性(虽然有点冗长),即便没有注释,也可从函数名和变量名来大致判断该函数或变量所包含的意义。 2、其次,读者应从上图区分出各个总线和对应的时钟:其中PLLCLK表示PLL锁相环的输出时钟,SYSCLK表示系统时钟,HCLK表示AHB总线的时钟,PCLK1表示APB1总线的时钟,PCLK2则表示APB2总线的时钟。 3、9、10两句代码的作用是设置STM32内部FLASH的等待周期。做如下解释:STM32的内部用户FLASH用以存储代码指令供CPU存取以执行,STM32的CPU的最大速率已知为72MHz,但FLASH无法达到这么高的速度,因此要在CPU存取FLASH的过程

16、中插入所谓的“等待周期”,显然CPU速度越快,所要插入的等待周期个数越多,原则是 1)当CPU速率为0 ~ 24MHz时,不需要插入等待周期,即等到周期个数为0; 2)当CPU速率为24 ~ 48MHz时,插入1个等待周期; 3)当CPU速率为48MHz ~ 72MHz时,插入2个等待周期; 有以上三点准备之后,开始解析这段程序: (1)定义一个ErrorStatus类型的变量HSEStartUpStatus; (2)将时钟树复位至默认设置; (3)开启HSE晶振; (4)等待HSE晶振起振稳定,并将起振结果保存至HSEStartUpStatus变量中; (

17、5)判断HSE晶振是否起振成功(假设成功了,进入if内部); (6)设置HCLK时钟为SYSCLK的1分频; (7)设置PLCK2时钟为SYSCLK的1分频; (8)设置PLCK1时钟为SYSCLK的2分频; (11)选择PLL输入源为HSE时钟经过1分频,并进行9倍频; (12)使能PLL输出; (13)等待PLL输出稳定; (14)选择系统时钟源为PLL输出; (15)等待系统时钟稳定; 上述代码中对时钟树的配置顺序为(对应图中标号): 3——11——14——15——7——21——8——9 通过对比发现,程序中对时钟树的配置顺序并不是依次从图中由左到右、由上到下配置的,这是为什么呢?事实上这个问题相信大部分读者都可以自己解释:电子设计世界的思维和操作方式,其顺序往往和日常生活是不一样的,比如人们经常先给电视机连接电源,再打开电视机开关;先把大水管的总闸打开,再打开小水龙头;总而言之是一种由“主”到“次”的顺序。转移到最常见的51单片机的开发平台,开发人员往往先把定时器的分频数,重载值等参数配置好,最后才启动定时器计数;先把各个外设的中断打开,最后再打开总中断;这和人们的生活习惯其实恰好相反,是一种先“次”后“主”的顺序。 至此,理解STM32的时钟树就是轻而易举的事情了

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服