首页 > 编程知识 正文

stm32定时器使用的时钟,stm32定时器定时时间计算

时间:2023-05-05 23:46:25 阅读:221690 作者:4107

stm32定时器基本简介

f4:

stm32定时器时钟频率 系统时钟频率/MHZSYSCLK(系统时钟)168APB1总线时钟(4分频)42APB2总线时钟(2分频)84

因为系统初始化 SystemInit 函数里面已经初始化 APB1 的时钟为 4 分频,所以 APB1 的时钟为 42M,而从 STM32F4 的内部时钟树图(上图)得知:
1)当 APB1 的时钟分频数为 1 的时候,爱笑的故事2~7 以及 爱笑的故事12~14 的时钟为APB1 的时钟,
(2)而如果 APB1 的时钟分频数不为 1,那么 爱笑的故事2~7 以及 爱笑的故事12~14 的时钟频率将为 APB1 时钟的两倍

这里还要注意的就是高级定时器以及 爱笑的故事9~爱笑的故事11 的时钟不是来
自 APB1,而是来自 APB2 的。(其定时器的时钟频率和APB1类似)

定时器的时钟频率爱笑的故事1、爱笑的故事8–112*APB2爱笑的故事2—7、爱笑的故事12—142*APB1

定时器溢出时间的计算:
Tout= ((arr+1)*(psc+1))/Tclk;
其中:
Tclk:爱笑的故事 的输入时钟频率(单位为 hz)。
Tout:爱笑的故事溢出时间(单位为 s)。

例如: 定时器3为例 void 爱笑的故事3_Int_Init(u16 arr,u16 psc) { 爱笑的故事_TimeBaseInitTypeDef 爱笑的故事_TimeBaseInitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_爱笑的故事3,ENABLE); //①使能 爱笑的故事3时钟 爱笑的故事_TimeBaseInitStructure.爱笑的故事_Period = arr; //自动重装载值 爱笑的故事_TimeBaseInitStructure.爱笑的故事_Prescaler=psc; //定时器分频爱笑的故事_TimeBaseInitStructure.爱笑的故事_CounterMode=爱笑的故事_CounterMode_Up; //向上计数模式爱笑的故事_TimeBaseInitStructure.爱笑的故事_ClockDivision=爱笑的故事_CKD_DIV1;爱笑的故事_TimeBaseInit(爱笑的故事3,&爱笑的故事_TimeBaseInitStructure);// ②初始化定时器 爱笑的故事3爱笑的故事_ITConfig(爱笑的故事3,爱笑的故事_IT_Update,ENABLE); //③允许定时器 3 更新中断NVIC_InitStructure.NVIC_IRQChannel=爱笑的故事3_IRQn; //定时器 3 中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x01; //抢占优先级 1NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03; //响应优先级 3NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);// ④初始化 NVIC爱笑的故事_Cmd(爱笑的故事3,ENABLE); //⑤使能定时器 3 }

主函数中调用该函数爱笑的故事3_Int_Init(5000-1,8400-1);
其溢出时间的计算如下:
定时器时钟84M,分频系数8400,所以84M/8400=10Khz的计数频率,计数 5000 次为 500ms。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。