【STM32】STM32简述定时器

一、什么是定时器

有计时和定时功能的仪器组件——对于芯片来说,定时器含有计时和定时功能,片内模块——TIM

二、STM32F4xx系列定时器分类

片内外设定时器(14个)

  • 高级定时器:TIM1、TIM8
  • 通用定时器:TIM2——TIM5 TIM9——TIM14
  • 基本定时器:TIM6、TIM7(基本的计时和定时功能)

内核定时器(1个)

  • 系统定时器(SysTisk 滴答定时器)

三、芯片内定时器的基本结构

在这里插入图片描述

四、基本定时器只有基本时基单元功能

1、时基单元

  • 计数器寄存器(TIMx_CNT):16位(0~65535)

在这里插入图片描述

  • 预分频寄存器(TIMx_PSC)

在这里插入图片描述

  • 自动重载寄存器(TIMx_ARR)
    你想定时多久,全靠设置这个ARR
    你设置ARR的值是脉冲的个数单位
    怎么设置ARR要自己算:
    如:根据已知提供CNT的脉冲频率f
    已知你要定时多久t
    ARR=t/(1/f)

2、例子
实现定时器6 TIM6,使其定时0.5s,让LED0翻转
①先使能TIM6时钟
RCC->APB1ENR
RCC_APB1PeriphClockCmd()
②先配置定时器TIM6模块
相关主要寄存器如下:
在这里插入图片描述
代码:
定时器6初始化

void TIM6_Init(void)
{
	TIM_TimeBaseInitTypeDef TIMInitStruct;
	NVIC_InitTypeDef NVIC_InitStructure;//用来初始化NVIC指定中断的结构体
	
	
	//1-使能时钟
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);

	//2-初始化TIM6时基单元  ARR  PSC
	TIMInitStruct.TIM_Prescaler = 840-1;// 84Mhz/840 = 100Khz   10us/脉冲
	TIMInitStruct.TIM_Period    = 50000-1;//0.5s = 500ms  = 500000us
	TIM_TimeBaseInit(TIM6,&TIMInitStruct);
	
	//3-开启定时器TIm6 更新中断
	TIM6->DIER |= 0x01;
	//TIM_ITConfig()
	
	//4-将TIM6更新中断注册进NVIC
	NVIC_InitStructure.NVIC_IRQChannel = TIM6_DAC_IRQn;//54号和 DAC共用
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_Init(&NVIC_InitStructure);
	
	//5-开启定时器6计数器
	TIM6->CR1 |= 0x01;
	//TIM_Cmd()

}

中断服务函数

void TIM6_DAC_IRQHandler(void)
{
	//因为这个TIM6中断号和中断函数和DAC共用
	//为了区分是谁触发中断进来的,可以在中断函数判断标志位
	//if(TIM_GetITStatus(TIM6,TIM_IT_Update);) == 1)
	if(TIM6->SR & 0x01)
	{
		//如果能进来  表示上面SR第0位  更新中断标志位置位了
		GPIO_ToggleBits(GPIOF,GPIO_Pin_9 | GPIO_Pin_10);
		
		TIM6->SR &= ~0x01;//写0清零中断标志位
		//TIM_ClearITPendingBit(TIM6,TIM_IT_Update);
	}
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邢饱饱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值