从时钟树中我们可以得知
(1)高级定时器timer1, timer8以及通用定时器timer9, timer10, timer11的时钟来源是APB2总线
(2)通用定时器timer2~timer5,通用定时器timer12~timer14以及基本定时器timer6,timer7的时钟来源是APB1总线
从STM32F4的内部时钟树可知,
(1)当APB1和APB2分频数为1的时候,TIM1、TIM8~TIM11的时钟为APB2的时钟,TIM2~TIM7、TIM12~TIM14的时钟为APB1的时钟;
(2)而如果APB1和APB2分频数不为1,那么TIM1、TIM8~TIM11的时钟为APB2的时钟的两倍,TIM2~TIM7、TIM12~TIM14的时钟为APB1的时钟的两倍。
根据时钟分析,点击打开链接,可知
因为系统初始化SystemInit函数里初始化APB1总线时钟为4分频即42M,APB2总线时钟为2分频即84M,所以TIM1、TIM8~TIM11的时钟为APB2时钟的两倍即168M,TIM2~TIM7、TIM12~TIM14的时钟为APB1的时钟的两倍即84M。
知道定时器的时钟源频率我们用定时器做延时就很方便了,只要设定合适的分频系数即可,附一下用中断实现延时的公式:(摘自原子的STM32F4开发指南)
Tout = ((arr+1)*(psc+1))/Tclk;
公式中psc就是分频系数,arr就是计数值,达到这个计数就会发生溢出中断,Tclk就是我上述分析的时钟源频率。
关键字:STM32F4 定时器 时钟频率
引用地址:
关于STM32F4定时器时钟频率问题
推荐阅读最新更新时间:2024-03-16 15:39
STM32 普通定时器(TIM3)中断 实现流水灯实验
/*********************************************************** 通过定时器TIM3产生间隔时间为1秒的中断,在中断响应 函数中控制LED发光二级管,实现流水灯效果 ***********************************************************/ void TimeInit() { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure; //打开相应的时钟 RCC_APB1PeriphClockCmd(RCC_AP
[单片机]
stm32 基于TIM1定时器的PWM输出
void PWM_TIM1(uint16_t arr,uint16_t psc) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); //定时器TIM1时钟使能 TIM_DeInit(TIM1); //设置在下一个更新事件装入活动的自动重装载寄存器周期的值 TIM_TimeBaseStructure.TIM_Period =arr; //设置用来作为TIMx时钟频率出书的预分频值 TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置时钟分割 TIM_TimeBaseStru
[单片机]
stm32F4 串口DMA+环形缓冲区的实现
下面是串口DMA+环形缓冲区的实现,将读写接口抽象出来,实现不定长度的数据收发。 关于环形缓冲区参考: http://blog.csdn.net/jieffantfyan/article/details/53572103 /****************************************************************************** * Copyright (C) 2016, roger * All rights reserved. * * 文件名称: tty.h * 摘 要:控制台驱动 * * 当前版本: 3.0 * 作 者: roger *
[单片机]
STM32F4PWM配置(一)
PWM配置 1.定义结构体 1.定义GPIO结构体 GPIO_InitTypeDef GPIO_InitStructure; 2.定义定时器结构体 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; 3.定时器输出比较结构体 TIM_OCInitTypeDef TIM_OCInitStructure; 2.开启时钟总线 1.定时器时钟使能 RCC_APB1PeriphClockCmd(RCC_APB1Periph_定时器,ENABLE); 2.GPIO时钟使能 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOX, ENABLE);
[单片机]
51单片机(十七)—— 定时器2寄存器介绍及功能描述
这篇文章,我们对51单片机的定时器2的寄存器和功能进行介绍。 1 定时器2控制寄存器T2CON 定时器2是一个16位定时器/计数器,通过设置特殊功能寄存器T2CON中的C/T2位,可将其作为定时器或计数器。定时器2有3中模式:捕获、自动重新装载(递增或递减计数)和波特率发生器,这3种模式由T2CON进行设置。T2CON寄存器的字节地址为C8H,单片机复位时T2CON全部被清0,T2CON的定义如下表所示。 定时器2控制寄存器T2CON TF2—定时器2溢出标志位。 定时器2溢出时置位,必须由软件清0。当RCLK=1或TCLK=1时,TF2将不会置位。 EXF2—定时器2外部标志。 当EXEN2=1且T2EX
[单片机]
STM32CubeMx(STM32F4 +FreeRTOS+CMSIS-RTOS)之队列(queue)创建
一.CMISIS-RTOS中queue相关API概览 模块 宏定义 描述 消息队列定义 osMessageQDef 定义一个消息队列 osMessageQ 访问一个消息队列定义 模块 API 描述 消息队列管理: 定义,创建,发送和接收数据 osMessageCreate 创建一个消息队列 osMessageGet 从消息队列中取得一个数据(可以是数值,也可以是指针) osMessagePut 把消息放入消息队列中 二.创建一个消息队列 //osMessageQDef(消息队列的名字, 消息队列的长度, 该消息支持传递的数据类型,如:uint8_t); osMess
[单片机]
16课:单片机定时器与计数器
一、计数概念的引入 从选票的统计谈起:画“正”。这就是计数,生活中计数的例程处处可见。例:录音机上的计数器、家里面用的电度表、汽车上的里程表等等,再举一个工业生产中的例程,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的办法,用一个周长是1米的轮子,将电缆绕在上面一周,由线带轮转,这样轮转一周不就是线长1米嘛,所以只要记下轮转了多少圈,就能知道走过的线有多长了。 二、计数器的容量 从一个生活中的例程看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴持续落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。录音机上的计数器最多只计
[单片机]
如何使用555定时器构建一个简单的节拍器
555定时器IC是一种多功能元件,可用于各种电路,包括节拍器。节拍器是音乐家在练习过程中用来保持稳定节奏的装置。在本教程中,您将学习如何使用555定时器IC构建一个简单的节拍器。 零件清单 1×9V电池 1×555定时器IC 1×电位器,VR1250kΩ 1×电阻,R11kΩ 2×电容器,C1和C222μF 1×扬声器,8Ω 555定时器配置为非稳态模式,这意味着它可以生成连续的脉冲序列。这些脉冲的频率决定了节拍器的速度。 时序组件:电阻(VR1和R1)和电容器(C1)决定脉冲间隔,可以通过改变VR1的电阻来调整。 电容放电:输出在高电平和低电平状态之间切换,导致C2充电和放电,进而在扬声器中产生声音。 喇叭输出:当输出引
[嵌入式]