STM32F4_TIM基本延时(计数原理)

本文详细介绍了STM32F4使用TIM进行基本延时的实现,包括TIM计数原理、参数配置、代码分析以及如何实现1us和1ms的延时。提供了实例工程下载链接,适合STM32F4初学者学习。
摘要由CSDN通过智能技术生成

Ⅰ、概述

STM32 TIM 定时器分为三类:基本定时器、通用定时器和高级定时器。从分类来看就知道 STM32 的定时器功能是非常强大的,但是,功能强大了,软件配置定时器就相对复杂多了。很多初学者甚至工作了一段时间的人都不知道 STM32 最基本的计数原理
虽然 STM32 定时器功能强大,也分了三类,但他们最基本的计数部分原理都是一样的,也就是我们常常使用的延时(或定时)多少 us ms 等。
接下来我会 讲述关于STM32最基本的计数原理,详细讲述如何做到 ( 配置 ) 计数1us的延时,并提供实例代码供大家参考学习。
 

关于本文的更多详情请往下看。

 

Ⅱ、实例工程下载

笔者针对于初学者提供的例程都是去掉了许多不必要的功能,精简了官方的代码,对初学者一看就明白,以简单明了的工程供大家学习。

笔者提供的实例工程都是在板子上经过多次测试并没有问题才上传至360云盘,欢迎下载测试、参照学习。

 

提供下载的软件工程是STM32F417的,但F4其他型号也适用(适用F4其他型号: 关注微信,回复“修改型号”)。

 

STM32F4_TIM基本延时(1us延时基准)实例:

https://yunpan.cn/cB3hC8amiyq2C  访问密码

STM32TIM定时器中,可以通过设置时钟分频和计数器的重载值来实现延时。假设定时器的时钟源为72MHz,希望产生1us的延时,可以按照以下步骤进行设置: 1. 设置TIM的时钟分频,使得计数器每计数1次所需的时间为1us。例如,如果设置分频系数为72-1,则计数器每计数1次所需的时间就是1us。 2. 设置计数器的重载值,使得计数器溢出的时间为所需延时的时间。例如,如果设置重载值为1,则计数器溢出的时间就是1us。 3. 启动定时器,并等待计数器溢出。 4. 计数器溢出后,定时器会自动清零计数器,并触发中断或者更新事件,可以在中断或者更新事件中执行所需的操作。 下面是一个基于STM32 HAL库的示例代码,实现了1us的延时功能: ``` #include "stm32f4xx_hal.h" TIM_HandleTypeDef htim; void delay_us(uint32_t us) { __HAL_TIM_SET_AUTORELOAD(&htim, us); __HAL_TIM_SET_COUNTER(&htim, 0); HAL_TIM_Base_Start(&htim); while(__HAL_TIM_GET_FLAG(&htim, TIM_FLAG_UPDATE) == RESET); HAL_TIM_Base_Stop(&htim); __HAL_TIM_CLEAR_FLAG(&htim, TIM_FLAG_UPDATE); } int main() { HAL_Init(); __HAL_RCC_TIM2_CLK_ENABLE(); htim.Instance = TIM2; htim.Init.Prescaler = 72 - 1; htim.Init.CounterMode = TIM_COUNTERMODE_UP; htim.Init.Period = 0xFFFF; htim.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; HAL_TIM_Base_Init(&htim); while(1) { delay_us(1000); // 在此处添加需要执行的代码 } } ``` 在上面的代码中,delay_us函数用于实现us级别的延时,通过设置定时器的时钟分频和重载值来实现。在主函数中,每隔1ms执行一次延时操作,可以在延时的同时执行需要的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

strongerHuang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值