STM32F407-RCC配置解读.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
RCC (Reset and Clock Control)配置 这里介绍RCC 的 时钟控制功能 在STM32F103上,由于小组所有的板子都使用用 同样的芯片,同样的晶振,以及同样的库函数,即使我们不去理解RCC,仍然可以将大多数功能调试出来。但如果使用不同型号的芯片,例如用STM32F407 与 STM32103 进行通信,如果不去弄清楚RCC,在调试中可能会遇到麻烦。 下面就我调试STM32F407的这段时间,介绍一下RCC的部分功能。文档的前半部分是关于RCC的部分功能描述,后半部分是关于库函数的使用。 时钟结构 (原图请参考STM32F407 参考手册RCC部分) STM32F407最高层是SYSCLK系统时钟,由其生成了 AHB时钟,再由AHB时钟生成APB时钟。 SYSCLK系统时钟可以由3个基本的时钟源获得:HSE(外部高速晶振)或HSI(内部高速晶振)或PLL锁相环倍频。 例如: 板子上焊了8MHz的晶振,则 HSE = 8MHz。如果焊了25MHz的,则HSE = 25MHz。 HSI是芯片内部自带的晶振,其大小由芯片型号决定,如STM32F407的HSI是16MHz。 PLL倍频的功能是:将HSE或HSI的频率放大,最大可以放大到168MHz. SYSCLK系统时钟可以由HSE/HSI/PLL提供。 例如使用库函数: RCC_SYSCLKConfig( RCC_SYSCLKSource_HSE ); 代表用 HSE外部高速晶振作为系统时钟源。 如果HSE =8MHz,则SYSCLK = 8M,即STM32F407就会运行在8M的速度; 如果HSE=25M,则SYSCLK = 25M,即STM32F407就会运行在25M。 RCC_SYSCLKConfig( RCC_SYSCLKSource_HSI ); 代表用 HSI内部高速晶振作为系统时钟源, 如果HSI=16M,则SYSCLK=16M,即STM32F407 就会运行在16M的速度。 RCC_SYSCLKConfig( RCC_SYSCLKSource_PLLCLK );代表用PLL时钟作为系统时钟源。 如果配置PLL倍频至168M,则SYSCLK=168M,即STM32F407 会运行在168M; 如果倍频至144M,则SYSCLK=144M,STM32F407就会运行在144M; 如果倍频至72M,STM32F407也会像STM32F103运行在72M; 从SYSCLK,紧接着分得AHB时钟(也叫HCLK)。 假设此时我们已经选择PLL作为系统时钟源,且PLL倍频至168M,即SYSCLK=168M。 那么AHB的最高频率就为168MHz。 方框底部的数字 /1,2...512 代表AHB时钟预分频数,范围1~512, 如果是 1, 即HCLK为SYSCLK的1分频, HCLK = SYSCLK/1 = 168/1 = 168 MHz 如果是 2,即HCLK为SYSCLK的2分频,HCLK = SYSCLK/2 = 168/2 = 84MHz 注意,HCLK是受SYSCLK约束的, 如果我们配置SYSCLK = 144M,那么此时HCLK最大只能达到 144MHz。 将AHB时钟继续分割,得到的是APB时钟(也叫PCLK)。 假设在此之前,SYSCLK=168M,SYSCLK 2分频得 HCLK = 84M。(HCLK代表AHB时钟) 与前面AHB时钟类似,方框底部的数字代表预分频数,范围1~16. 如果是1,即PCLK(APB时钟)为HCLK的1分频, PCLK = HCLK/1 = 84/1 = 84MHz 如果是2,即PCLK为HCLK的2分频, PCLK = HCLK/2= 84/2 = 42MHz。 APB时钟可以继续分给APB总线上的外设,如果继续配置外设的预分频,可以进一步修改外设的时钟频率。 例如: 配置CAN总线。 第一步:利用PLL,我们配置 系统时钟 SYSCLK = 168MHz。 第二步:此时已有SYSCLK=168MHz。 设置AHB分频数为2,即得:HCLK = SYSCLK/2 = 84MHz。 第三步:此时已有HCLK = 84MHz。 设置APB分频数为 2,即得:PCLK = HCLK/2 = 42MHz。 第四步:此时已有 PCLK = 42MHz。 设置 CanInitStruct.CAN_Prescaler = 7 ,即得 CAN时钟 = PCLK/7 = 6MHz。 这样,正确配置了CAN的时钟,配置CAN时才能计算出实际的波特率,从而实现通现。 我们借助CAN总线的例子继续说明RCC的作用。 接着上面的例子,例如: 我们使用 STM32F407 与 STM32F103 进行

文档评论(0)

阿里山的姑娘 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档