STM32F407VG (五)定时器

本文深入探讨了STM32定时器的基本分类、主要特点,并详细阐述了如何利用定时器实现中断功能。通过实例展示了初始化定时器、配置参数、设置中断向量并实现中断处理函数的过程,确保系统能准确地执行定时任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、定时器节本分类和主要特点
1.STM32定时器分类:
1)看门狗定时器
2)SysTick定时器
3)RTC定时器

4)通用定时器
a)通用定时器TIM2~TIM5, 其中TIM2和TIM5是32位,TIM3和TIM4是16位
     具有四个独立通道
     中断/DMA事件
     支持增量编码器和霍尔传感器

b)通用定时器TIM9~TIM14,16位定时器
     最多具有连个独立通道
     中断事件

5)基本定时器TIM6,TIM7,16位定时器
     同步电路触发DAC
     中断/DMA事件

6)高级定时器TIM1,TIM8,16位定时器
    具有四个独立通道
    中断/DMA事件
    支持增量编码器和霍尔传感器
    
     输入信号可以改变计数器状态或复位
     可改变定期器寄存器的重复计数器。

二、实例1. 定时中断
    
1.时钟初始化
 TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);
 TIM_DeInit(TIM2);
   /* 时钟预分频数 */       //84000000/84=1000000,预分频后时钟为1M      
 TIM_TimeBaseStructure.TIM_Prescaler= (84 - 1);
 /* 自动重装载寄存器周期的值(计数值) */ /* 累计 TIM_Period个频率后产生一个更新或者中断 */
 TIM_TimeBaseStructure.TIM_Period =1000-1 ;  
/* 采样分频 */
 TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
/* 向上计数模式 */ 
 TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; 
 //调用初始化函数 
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
 /* 清除溢出中断标志 */ 
 TIM_ClearFlag(TIM2, TIM_FLAG_Update);  
/*设置产生TIM_FLAG_Update中断*/        
 TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
/* 开启时钟 */
 TIM_Cmd(TIM2, ENABLE); 

2. 设置中断向量,详细的解释见本博客有关“中断”部分的文章
 1)中断初始化
 NVIC_InitTypeDef NVIC_InitStructure;
 /* Enable TIM2 interrupt IRQ channel */ 
 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); 
 NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
 NVIC_Init(&NVIC_InitStructure);

 2)中断函数
 void TIM2_IRQHandler(void)
{
 static unsigned int cpu_counter = 0; 
 if(TIM_GetITStatus(TIM2,TIM_IT_Update) != RESET)  
 {
  TIM_ClearITPendingBit(TIM2,TIM_FLAG_Update);
  cpu_counter ++;
  if(cpu_counter >= 500) //等闪烁的周期是1s
  {
   cpu_counter = 0;
   GPIO_ToggleBits(LED1);
  } 
 }
 
}

波形很标准吧:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值