STM32学习之旅定时器的使用

stm32中有着三种定时器:两个高级定时器(TIM1,TIM8),四个通用定时器(TIM2 TIM3 TIM4 TIM5)和基本定时器(TIM6和TIM7)。我用的是通用定时器2来定时,每一秒就让LED闪烁一下,定时器的强大之处表示让新手的我吃了很大的苦头,对于别的功能一时也不理解,所以想知道定时器的具体工作原理的小伙伴门看一下视频或资料,这里贴上一个前辈的文章:https://blog.csdn.net/liming0931/article/details/82938522
定时器的定时中断功能还是比较简单的,无非就是配置三个寄存器:控制寄存器(TIM_CR1),预分频器( TIM_PSC)和 自动重装载寄存器(TIM_ARR),其中定时器的时间公式为: Tout = ((arr+1)*(psc+1))/Tclk,arr就是指设定的值,计时器一旦超过或者低过就产生中断信号,psc指的是预分频的值,Tclk是指时钟的频率,一般默认72MHZ,贴上代码:

#include "Time.h"
	void Time_Init()
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);

TIM_TimeBaseInitTypeDef time;
time.TIM_Period=7199;     //arr=7199
time.TIM_CounterMode=TIM_CounterMode_Up;    //向上计数
time.TIM_Prescaler=9999;  //PSC=9999
TIM_TimeBaseInit(TIM2,&time);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);

NVIC_InitTypeDef nvic;
nvic.NVIC_IRQChannel=TIM2_IRQn;
nvic.NVIC_IRQChannelPreemptionPriority=2;
nvic.NVIC_IRQChannelSubPriority=2;
nvic.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&nvic);

}

void TIM2_IRQHandler()
{
Led_YellowTurn();
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
}

时间= ((arr+1)(psc+1))/Tclk
=((7199+1)
(9999+1))/7200HZ(1M=10的6次方)
=1s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值