STM32时钟系统和TIMER配置(溢出中断/PWM)实例

本文详细介绍了STM32的时钟系统配置,包括时钟源、总线频率以及外设时钟频率的计算。接着阐述了STM32定时器的分类和配置,特别是溢出中断和PWM输出的设置方法。在定时器配置中,重点讲解了预分频器、重装载值和比较值的设定,以及如何通过HAL库进行中断和PWM的管理。此外,还提及了SystemTickTimer的使用注意事项和可能遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录:

1. STM32时钟系统

2. STM32的定时器典型配置之溢出中断

3. STM32的定时器典型配置之PWM输出

1. STM32时钟系统

(1)Clock tree

        可以在官方手册(Stm32x-series-Reference-manual)的clock tree中可以对相应MCU的时钟系统有个大致了解。

        也可以从中了解到STM32哪些外设挂在哪一条总线上,然后根据Cube中配置的时钟频率和各种分频就可以得到各总线的时钟频率,注意挂在这些总线上的外设还需要在配置时经过分频得到外设的时钟频率。

(2)STM32总线与时钟配置

        假如STM32时钟源为HSE高速外部晶振,HSE一般为8MHz,经过x分频和y倍频后得到系统时钟,即PLLCLK = (8/x)*y MHz。

        AHB总线上时钟由系统时钟PLLCLK经过z分频得到,HCLK = PLLCLK/z。

        APB2上的总线时钟PCLK2经过HCLK的m分频得到,PCLK2 = HCLK/m。

        APB1上的总线时钟PCLK1经过HCLK的n分频得到,PCLK1 = HCLK/n。

外设时钟举例: 挂在高速总线APB2上的ADC时钟经过APB2总线时钟2分频得到,即ADCCLK = PCLK2/2 。

外设时钟举例:挂在低速总线APB1上的TIM2时钟经过APB1总线时钟2分频得到,即TIM2CLK = PCLK1/2 。

2. STM32的定时器典型配置之溢出中断

(1)定时器分类

        STM32的物理定时器解决了MCU单任务运行使用CPU计数对性能的影响,定时器根据功能从多到少分为高级定时器、通用定时器、基本定时器。低功耗定时器、看门狗定时器、某些MCU还有HRTIM等。

(2)定时器挂在哪条总线上

        以STM32F10x系列的MCU为例,TIM1/8挂在APB2高速总线上,TIM2-7挂在APB1低速总线上。

 (3)定时器初始时钟频率

        有人说如果APB1和APB2经过HCLK都进行1分频,那么TIM1/8的时钟为APB2的时钟,TIM2-7的时钟为APB1的时钟。

        如果APB1和APB2经过HCLK进行分频,分频系数不为1,那么TIM1/8的时钟为APB2时钟的两倍,TIM2-7为APB1的时钟的两倍。

        在实际应用中,要根据不同的MCU和时钟系统配置得到相应定时器的初始时钟频率。

 (4)定时器计数时钟频率

        所谓计数时钟频率,就是上面提到每种外设具体时钟频率还要经过外设本身的外设分频(PSC)配置,从而得到最终定时器时钟频率,这个频率就是定时器每计数一次花的时间。

(5)在CubeMX中定时器的配置

        下面是对TIM2配置的实例:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值