完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
STM32时钟树学习笔记 六:有三种不同的时钟源可以用来驱动系统时钟(SYSCLK)
1:HSI振荡时钟 2:HSE振荡时钟 3:PLL时钟 用户可以通过配置多个域分频器配置AHB、高速APB(APB2)和低速APB(APB1)域的频率。AHB和APB2域的最大频率是72M,APB1的最大允许频率是36M。SDIO接口的时钟频率固定为HCLK/2。 RCC通过AHB时钟(HCLK)八分频后作为Cortex系统定时器(SysTick)的外部时钟,通过对SysTick控制与状态寄存器的设置,可以选择上述时钟或Cortex(HCLK)时钟作为SysTick时钟。ADC时钟由高速APB2时钟经过2、4、6或8分频获得。 定时器时钟频率分配:由硬件按以下两种情况自动设置 1:如果与定时器相连的APB预分频系数为1,则定时器时钟频率与APB总线频率一致。 2:如果相应的预分频系数不为1,则定时器时钟频率为相应的APB总线频率的2倍。 LSE:低速外部时钟信号,是一个32.768kHz的低速外部晶体或陶瓷谐振器, 精度比HSE低,受温度影响较大,有温漂, 作用:为实时时钟或者其他定时功能提供一个低功耗且精确的时钟源。 控制:在备份域控制寄存器(RCC_BDCR)里的LSERDY指示LSE是否振荡稳定。这个位被置一后,LSE时钟才被释放。 通过备份域控制寄存器(RCC_BDCR)里的LSEBYP和LSEON位来选择配置。具有50%占空比的外部时钟信号必须连接到OSC32_IN引脚,同时OSC32_OUT引脚悬空。 HSE:高速外部时钟信号 来源:无源晶振(4-16M)通常为8M; 为了减少时钟输出的失真和缩短启动稳定时间,谐振器和电容器必须靠近振荡器引脚。 在使用无源晶振时要配上起振电容,电容值根据所选择的振荡器来调整,使用有源晶振的话就悬空out脚,只需要将in脚接入单片机就行了 控制:RCC_CR时钟控制寄存器的位16:HSEON控制,置1表示启动HSE外部晶振,置0表示关闭。由于起振需要一定的时间,启动完毕后,位17:HSERDY(外部高速时钟就绪标志)为1表示HSE准备就绪。 HSI:高速的内部时钟 来源:芯片内部,大小为8M的RC振荡器来控制。 控制:RCC_CR时钟控制寄存器位0:HSION控制,和HSE一样有时钟就绪标志HSIRDY,指示振荡器是否稳定,这一位置1时,HSIRC输出时钟才被释放。 HSIRC可由时钟控制寄存器中的HSION位来启动。 当HSE故障时,系统时钟会自动切换到HSI,直到HSE启动。HSI的启动时间比HSE短。 HSI可以直接系统时钟,也可以在二分频后作为PLL时钟输入。 校准:由于芯片的制造工艺不同,不同芯片的RC振荡器频率也不一样,所以芯片厂商在出厂的时候就已经把HSI时钟频率用ST校准到1%,系统复位时, 工厂的校准值就被存到了时钟控制寄存器(RCC_CR)的HSICAL【7:0】位。如果我们使用芯片的供电电压或使用温度有变化,这会影响RC振荡器的精度。可以通过时钟控制寄存器里(RCC_CR)的HSITRIM[4:0]位来调整。 如果HSE晶体振荡器失效,HSI会被作为备用时钟源。 LSI:低速内部时钟 LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看门狗和自动唤醒单元 提供时钟。时钟频率大约40kHz(在30~60kHz之间)。 控制:通过控制/状态寄存器(RCC_CSR)里的LSION位来启动或关闭。 控制/状态寄存器(RCC_CSR)里的LSIRDY位指示振荡是否稳定。硬件值1后这个时钟才被释放。 如果在时钟中断寄存器(RCC_CIR)里被允许,将产生LSI中断申请。 校准:可以通过校准内部低速振荡器LSI来补偿其频率便宜,从而获得符合精度要求的RTC时间基数以及独立看门狗时钟(IWDG)的超时时间。操作步骤如下: 1:打开TIM5,设置通道4为输入捕获模式; 2:设置AFIO_MAPR的TIM5_IREMAP位为1,在内部把LSI连接到TIM5的通道4, 3. 通过TIM5的捕获/比较4事件或者中断来测量LSI时钟频率; 4. 根据测量结果和期望的RTC时间基数和独立看门狗的超时时间,设置20位预分频器。 PLL:锁相环 作用:可以用来倍频HSIRC的输出时钟或者HSE晶体输出时钟。 注意:PLL的设置,(即用PLL选择输入时钟或者倍频因子)必须在其被激活前完成,激活之后这些参数不能被改动。 如果PLL在时钟中断寄存器里面被允许,那么PLL在准备就绪时,可以产生中断申请。 如果需要在应用中使用USB接口,PLL必须被设置为输出48或者72MHz时钟,用于提供48MHz的USBCLK时钟。 锁相环时钟:PLLCK 来源:(HSI/2,HSE)经过倍频所得。 控制:CFGR:PLLXTPRE,PLLMUL 注意:时钟源选择HSI/2的时候,PLLMUL最大只能是16,这个时候PLLCLK最大只能是64M,小于ST官方推荐的72M。 系统时钟:SYSCLK 来源:HSI、HSE、PLLCLK。 控制:CFGR,SW 注意:通常配置事SYSCLK=PLLCLK=72M。 系统复位后,HSI振荡器被选为系统时钟,当时钟源被直接或通过PLL间接作为系统时钟时,它将不能被停止。 时钟安全系统:CSS 时钟安全系统可以通过软件激活,一旦被激活,时钟监测器将在HSE振荡器启动延迟后被使能,并在HSE时钟关闭后 关闭。如果HSE时钟发生故障,HSE振荡器被自动关闭,时钟失效事件将会被送到高级定时器(TMI1和TIM8)的 刹车输入端,产生时钟安全中断CSSI,允许软件完成营救操作。此CSSI中断连接到Cortex-M3的NMI中断(不可屏蔽中断)。 注意:一旦CSS被激活,并且HSE时钟出现故障,CSS中断就产生,并且NMI也自动产生,NMI将不断被执行,直到CSS中断 挂起位被清除,因此,在NMI处理程序中通过设置时钟中断寄存器(RCC_CIR)里面的CSSC位来清除CSS中断。 RTC时钟:为芯片内部的RTC外设提供时钟。 控制:通过设置备份域控制寄存器(RCC_BDCR)里的RTCSE[1:0]位,RTCCLK时钟源可以由HSE/128、LSE或LSI时钟提供。 除非将备份域复位,否则该位选择了之后不能再改变。 独立看门狗时钟IWDGCLK 如果独立看门狗已经由硬件选项或软件启动,LSI振荡器将被强制在打开状态,并且不能被关闭。 在LSI振荡器稳定后,时钟供应给IWDG。 系统时钟出来之后进入预分频器:AHB,出来之后进入APB1和APB2总线。 HCLK:AHB高速总线时钟,速度最高为72M,为AHB外设配置时钟,为Cortex系统定时器提供时钟,为内核提供时钟 PCLK1时钟:APB1低速总线时钟,最高36M。为APB1总线外设提供时钟,2倍频后为APB1总线的定时器2-7提供时钟,最大72M。 来源:HCLK分频得到,一般配置PCLK1=HCLK/2=36M 控制:RCC_CFGR时钟配置寄存器的PPRE1位。 RTC时钟:为芯片内部的RTC外设提供时钟。 来源:HSE_RTC(HSE128分频得到)、LSE(外部32.768kHZ的晶振提供)、LSI(32kHZ)。 控制:RCC备份域控制寄存器RCC_BDCR的RTCSEL位提供。 时钟输出 微控制器允许输出时钟信号到外部MCO引脚。 相应的GPIO端口寄存器必须被配置为相应功能。以下四个时钟信号可以被选择作为MCO时钟 SYSCLK、HSI、HSE、二分频的PLL时钟。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1218 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1232 浏览 1 评论
635 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
481 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1161 浏览 2 评论
1690浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
350浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
343浏览 3评论
335浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
314浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-3 19:11 , Processed in 0.801946 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191