STM32中的基本定时器使用(TIM)

STM32F103中的基本定时器的使用(TIM2为例)

一、配置简介
STM32中的定时器配置大同小异,每个配置时只需要改成自己想要的定时器即可(本文以TIM2为例)。
定时器简单点理解就是设定了一个值(arr:自动重装载值),从这个值向下减到零或者从零向上计数到这个值,则会产生一个中断信号,执行定时器中断服务程序。
通过自动重装载值(arr)和时钟预分频数(psc)搭配,就可以控制定时时间的长短。

配置思路:
1:NVIC配置。
2:定时器配置
3:定时器中断服务程序
4:主程序调用(主程序主需要调用 tim2_init() 函数即可启动定时器)
void tim2_init(void)
{
	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
    NVIC_InitTypeDef NVIC_InitStructure;
		
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);           //NVIC分组
    NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;           //IRQ通道         
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //抢占优先级
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;        //响应优先级
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;          //通道使能
    NVIC_Init(&NVIC_InitStructure);  

		
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); 
    TIM_TimeBaseStructure.TIM_Period = 1000-1; 								//设定计数器自动重装载值
    TIM_TimeBaseStructure.TIM_Prescaler =(7200-1); 					  //预分频器值
    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); 
    TIM_ITConfig(TIM2,TIM_IT_Update|TIM_IT_Trigger,ENABLE);  //使能TIM中断
    TIM_Cmd(TIM2, ENABLE); 
}
void TIM2_IRQHandler(void)
{
   	if ( TIM_GetITStatus(TIM2 , TIM_IT_Update) != RESET ) 
    {
			/*
				产生中断后,想要执行的动作
			*/
			TIM_ClearITPendingBit(TIM2, TIM_FLAG_Update);
    }
}

在这里插入图片描述

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值