STM32之定时器

目录

1、定时器介绍

1.定时器工作原理

2.定时器的分类

3.通用定时器主要功能介绍

4.定时器计数模式

5.定时器时钟源

6.定时器溢出时间计算公式

2、定时器中断的实验

codeMX的配置

代码编写

1.使用到的HAL库函数

1.中断回调函数需要我们重写

[2. 在中断模式下启动TIM Base生成(在中断模式下启动定时器)](#2. 在中断模式下启动TIM Base生成(在中断模式下启动定时器))

2.具体代码

1、定时器介绍

在51单片机的时候我们经常使用软件定时,但是软件定时存在不精确、占用CPU资源(在计时期间CPU都在数数)等缺点,在stm32我们就是用硬件定时可以避免软件定时的那些缺点。

1.定时器工作原理

使用精确的时基,通过硬件的方式,实现定时的功能。定时器的核心就是计数器。

2.定时器的分类

  • 基本定时器(TIM6~TIM7)
  • 通用定时器(TIM2~TIM5)
  • 高级定时器(TIM1和TIM8)

我们常用到的是通用定时器

我使用的单片机定时器资源(可以在单片机使用手册上查看)

3.通用定时器主要功能介绍

1 ) 16 位向上、向下、向上 / 向下自动装载计数器( TIMx_CNT )。
2 ) 16 位可编程 ( 可以实时修改 ) 预分频器 ( TIMx_PSC ) ,计数器时钟频率的分频系数为 1 ~ 65535 之间的任意数
值。
3 ) 4 个独立通道( TIMx_CH1~4 ),这些通道可以用来作为:
A .输入捕获
B .输出比较
C . P WM 生成(边缘或中间对齐模式)
D.单脉冲模式输出
4)可使用外部信号(TIMx_ETR)控制定时器和定时器互连(可以用 1 个定时器控制另外一个定时器)的同步电路。
5)如下事件发生时产生中断/DMA:
A.更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
B.触发事件(计数器启动、停止、初始化或者由内部/外部触发计数)
C.输入捕获
D.输出比较
E.支持针对定位的增量(正交)编码器和霍尔传感器电路
F.触发输入作为外部时钟或者按周期的电流管理

4.定时器计数模式

5.定时器时钟源

6.定时器溢出时间计算公式

  • PSC:预分频器的值
  • ARR:自动重装载值
  • Tclk:时钟频率
  • Tout:设定的时间
  • 1Mhz=1000000hz(次/秒)
  • 周期(s)=频率(hz)的倒数

2、定时器中断的实验

需求:使用定时器中断方法,没500ms翻转一次LED等的状态

codeMX的配置

代码编写

1.使用到的HAL库函数
1.中断回调函数需要我们重写

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

参数:定时器的句柄

2. 在中断模式下启动TIM Base生成(在中断模式下启动定时器)

HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)

参数:定时器的句柄

返回的是一个状态值

2.具体代码
复制代码
//重写中断回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == TIM2)//确定中断源,确定是谁产生的中断
	{
		HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_8);
	}
}
main函数里面
	HAL_TIM_Base_Start_IT(&htim2);//在中断模式下启动定时器

3、定时器的其它应用

STM32之定时器--PWM控制SG90舵机

STM32之定时器--超声波测距

相关推荐
future14125 小时前
单片机学习日记
单片机·嵌入式硬件·学习
嘿嘿嘿x37 小时前
什么是输入寄存器 什么是输出寄存器 什么是写输入寄存器 什么是读保持寄存器
单片机
hazy1k7 小时前
K230基础-获取触摸坐标
图像处理·stm32·单片机·嵌入式硬件·k230
知南x7 小时前
STM32MP157目标检测环境搭建 (3) NCNN环境安装
stm32·嵌入式硬件·目标检测
学生董格10 小时前
[嵌入式embed]Keil5-STM32F103C8T6(江协科技)+移植RT-Thread v3.15模版
stm32·嵌入式硬件·rt-thread·keil5·江协科技
酷飞飞10 小时前
掌握DMA基于GD32F407VE的天空星的配置
stm32·单片机·嵌入式硬件·arm
清风66666611 小时前
基于单片机的Boost升压斩波电源电路
单片机·嵌入式硬件·毕业设计·课程设计
qiuiuiu41311 小时前
正点原子RK3568学习日记-GIT
linux·c语言·开发语言·单片机
搞一搞汽车电子17 小时前
单片机的堆\栈\Flash\Ram区别和联系
单片机·嵌入式硬件
李永奉19 小时前
STM32-认识STM32
stm32·单片机·嵌入式硬件