赞
踩
持续关注阿杰在线更新保姆式笔记~~坚持日更
目录
1、1 STM32部分时钟树:
首先我们我们的系统时钟(SYSCLK 72MHz) 经过AHB分频器给APB1外设,但是APB1外设最大的只能到36Mhz,所以必须要系统时钟的二分频。
1、2 定时器时钟计算方法:
1、3 分配给我们定时器的时钟是72MHz,我们可以根据自己的需求再设置定时器的分频,设置它的定时值
* 初始化定时器的时候指定我们预分频系数psc,这里是将我们的系统时钟(72MHz)进行分频
* 然后指定重装载值arr,这个重装载值的意思就是当 我们的定时器的计数值 达到这个arr时,定时器就会重新装载其他值.
例如当我们设置定时器为向上计数时,定时器计数的值等于arr之后就会被清0重新计数
* 定时器计数的值被重装载一次被就是一个更新(Update)
* 计算Update时间公式
Tout = ((arr+1)*(psc+1))/Tclk
公式推导详解:
Tclk是定时器时钟源,在这里就是72Mhz
我们将分配的时钟进行分频,指定分频值为psc,就将我们的Tclk分了psc+1,我们定时器的最终频率就是Tclk/(psc+1) MHz
*这里的频率的意思就是1s中记 Tclk/(psc+1)M个数 (1M=10的6次方) ,每记一个数的时间为(psc+1)/Tclk ,很好理解频率的倒数是周期,这里每一个数的周期就是(psc+1)/Tclk 秒
然后我们从0记到arr 就是 (arr+1)*(psc+1)/Tclk
举例:比如我们设置arr=7199,psc=9999
我们将72MHz (1M等于10的6次方) 分成了(9999+1)等于 7200Hz
就是一秒钟记录7200数,每记录一个数就是1/7200秒
我们这里记录9000个数进入定时器更新(7199+1)*(1/7200)=1s,也就是1s进入一次更新Update
定时器参数初始化:
void TIM_TimeBaseInit(TIM_TypeDef* TIMx,,TIM_TimeBaseInitTypeDef*TIM_TimeBaseInitStruct);
从0到溢出的时间是由两个决定:
1、时钟频率
2、自动装载值
Tclk: 时钟频率=72MHZ
若想定时500ms
PSC预分频系数设为:7199 ARR自动装载值:4999
定时器中断实现步骤
RCC_APB1PeriphClockCmd();
② 初始化定时器,配置ARR,PSC。
TIM_TimeBaseInit();
void TIM_ITConfig();
NVIC_Init();
④ 使能定时器。
TIM_Cmd();
⑥ 编写中断服务函数。
TIMx_IRQHandler();
题目:通过定时器中断配置,每500ms<
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。