3.STM32F429时钟系统配置方法


在前几篇文章中我想把一些基础的部分简单总结一下:首先是前两篇文章,学习一个mcu就要先对它的外设有初步的理解,还有要使用的HAL库,它相当于我们的代码与硬件之间连接的桥梁;这篇博客会总结一下429时钟树的一些知识,还有时钟配置函数;再之后可能还会总结基于SysTick的延时函数、程序执行流程、中断、DMA等。

1.时钟系统

1.1.时钟源

F429有5个时钟源:HSI,HSE,LSI,LSE,PLL(PLL,PLLI2S,PLLSAI)。HSI,HSE,PLL是高速时钟,LSI,LSE是低速时钟。HSE,LSE是外部时钟源。

  1. LSI是低速内部时钟,32kHz左右RC振荡器,独立看门狗和自动唤醒单元。
  2. LSE是低速外部时钟,32.768kHz石英晶体,RTC 的时钟源。
  3. HSE是高速外部时钟,4MHz~26MHz,板子是25M。可以做为系统时钟或PLL输入。
  4. HSI是高速内部时钟,16MHz,系统时钟或PLL输入。仅需几个微秒就能启动,但是精度差。当HSE故障时,HSI是备用时钟。
  5. PLL主要作用是对时钟进行倍频,然后把时钟输出到各个功能部件,共有3个PLL:
    a) 主PLL由HSE或者HSI提供时钟信号,有两个不同的输出时钟。第一个PLLCLK用于生成高速的系统时钟(最高180MHz)。第二个PLLQ为48M,用于USB OTG FS,随机数发生器和SDIO时钟。
    b) PLLI2S在I2S和SAI1上实现高品质音频
    c) PLLSAI用于SAI输入时钟,LCD_TFT接口时钟。

1.2.系统时钟SYSCLK计算

在这里插入图片描述
主PLL时钟来若自HSE,也就是25MHz的外部晶振,先经过分频系数为M的分频器,再经过倍频系数为N的倍频器,还需要经过分频系数为 P(第一个输出 PLLP)或者 Q(第二个输出 PLLQ)的分频器分频之后,最后生成最终的主PLL时钟。我们设置M=25,N=360,P=2,则生成的高速时钟 PLLP(也就是PLLCLK)为180MHz。下图为在CubeMX中配置主时钟,HSE可以由有源或无源晶振或提供。当使用有源晶振时,时钟从OSC_IN进入,OSC_OUT 悬空;选用无源晶振时,时钟从OSC_IN 和 OSC_OUT进入,并且要配谐振电容。
在这里插入图片描述
在这里插入图片描述
但是 USB OTG FS的情况比较特殊,必须使用 48M,Q=VCO输出时钟360/48=7.5,出现了小数这明显是错误。野火教程中将N设为336,PLLCLK=VCOCLK/2=168M,USBCLK=336/7=48M,也就是PLLCLK降频了。正点原子教程中选择超频的方法,设N=432,USBCLK=432/9=48M,此时PLLCLK=216MHz。

1.3.AHB和APB总线时钟

AHB总线时钟HCLk由SYSCLK经AHB预分频器分频后得到,分频系数由RCC_CFGR的HPRE 位设置,设为1分频,即HCLK=SYSCLK=180M。AHB上的外设有FSMC,RNG,DCMI,USB OTG FS,USB OTG HS,以太网MAC,DMA,SRAM,Flash,RCC,CRC,GPIO。
APB1总线时钟PCLK1由HCLK经低速APB预分频器得到,分频系数由RCC_CFGR 的PPRE1位设置,配置PCLK1=HCLK/4=45M。总线上的外设有UART2/3/4/5/7/8,DAC,PWR,CAN1/2,I2C1/2/3,I2S2/3,SPI2/3,RTC,TIM2/3/4/5/6/7/12/13/14。
APB2总线时钟PCLK2由HCLK经高速APB2预分频器得到,由RCC_CFGR的PPRE2位设置。PCLK2=HCLK/2=90M。总线上的外设有SPI1/4/5/6,TIM1/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值