【HM】STM32F407 HAL库 定时器

基本概念
兆赫兹

1MHZ(兆赫兹)是频率的单位,表示每秒周期性震动1,000,000次。

预分频器

不分频

2分频,两个脉冲输出一次

三分频

自动重装载寄存器

当计时器里的计数器=自动重装载寄存器值,计数器清零

定时器分类
种类 位数 计数器模式 产生DMA请求 捕获/比较通道 互补输出 特殊应用场景
高级定时器(TIM1,TIM8) 16 向上,向下,向上/向下 可以 4 带死区控制盒紧急刹车,可应用于PWM电机控制
通用定时器(TIM2~TIM5) 16 向上,向下,向上/向下 可以 4 通用。定时计数,PWM输出,输入捕获,输出比较
基本定时器(TIM6,TIM7) 16 向上,向下,向上/向下 可以 0 主要应用于驱动DAC

通用和基本时钟源:APB1

高级定时器时钟源:APB2

定时器配置

时钟源:内部时钟

假如记录1秒

1秒=自动重装载寄存器 / 输入HZ

1秒=自动重装载寄存器 / (时钟源 / 预分频器)

1秒 = 10000 / (72000000 / 7200)

1秒 = 10000 / (84000000 / 8400)

配置

Prescaler (PSC - 16 bits value) 预分频器

Counter Period 自动重装载寄存器

auto-reload preload 自动重新加载预加载

开启中断

LED测试代码

开启GPIO测试灯

测试中断

c 复制代码
int index = 0;

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim == &htim2)
	{
		if(index == 1)
		{
			index = 0;
			HAL_GPIO_WritePin(GPIOF, GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8, GPIO_PIN_SET);
		}else{
			index = 1;
			HAL_GPIO_WritePin(GPIOF, GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8, GPIO_PIN_RESET);
		}
	}
}

启动定时器

c 复制代码
HAL_TIM_Base_Start_IT(&htim2);
串口测试代码

开启串口

串口打印

c 复制代码
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim == &htim2)
	{
		printf("Hello word STM32 \r\n");
	}
}

结果

测试案例

https://download.csdn.net/download/hmxm6/89005379

相关推荐
QQ19284999061 小时前
基于单片机巡迹避障智能小车系统
单片机·嵌入式硬件
咖喱年糕1 小时前
【STM32 ST-LINK Utility】工具使用和如何编译HEX和BIN文件
stm32·单片机·嵌入式硬件·st-link utility·keil生成hex和bin文件
北京迅为1 小时前
【北京迅为】《STM32MP157开发板使用手册》-第四十三章 软件定时器实验
单片机·嵌入式硬件
驰骋的码农1 小时前
STM32之串口通信
stm32·单片机
DS陈工1 小时前
【STM32】定时器
stm32·单片机·嵌入式硬件
白天看海1 小时前
20 基于STM32的温度、电流、电压检测proteus仿真系统(OLED、DHT11、继电器、电机)
stm32·单片机·嵌入式硬件
每天的积累2 小时前
面试知识点总结篇一
单片机·嵌入式硬件·面试·应用层
无际单片机项目3 小时前
单片机学到什么程度才可以去工作?
java·stm32·单片机·嵌入式硬件·物联网
爱桥代码的程序媛4 小时前
鸿蒙OpenHarmony【轻量系统内核(异常调测)】子系统开发
嵌入式硬件·内核·harmonyos·鸿蒙·openharmony·鸿蒙开发·子系统开发
见你背影4 小时前
ARM单片机的中断详细过程(重要)
单片机