普中STM32-PZ6806L开发板(HAL库函数实现-TIM2实现us延时)

简介

使用TIM2实现1us延时

其他知识

公式

时间(s)=1/时钟频率(Hz)由导出 1us = 1/1M(Hz)

预分配设置

系统时钟是72MHz, 要1us的延时, 预分配得设置为72-1

计数器重载设置

设置为最大值65535,这样延时的时间可以设置的最大值也将是65535us, 一次count代表一个计数周期也就是1us

接口

HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim); // 是一个用于启动定时器的函数
HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim); // 关闭定时器

__HAL_TIM_SET_COUNTER(__HANDLE__, __COUNTER__) // 设置Counter值
__HAL_TIM_GET_COUNTER(__HANDLE__) // 获取Counter值

实现步骤

创建项目

参考 普中STM32-PZ6806L开发板(STM32CubeMX创建项目并点亮LED灯)

TIM2 初始化

在这里插入图片描述

添加用户代码

time.c /main.c增加函数
/*
 * us: 延时参数 0 ~65535, 与couter的重置值相符
*/
void delay_us(uint16_t us)
{
   
	__HAL_TIM_SET_COUNTER(&htim2, 0); // counter重置为0

	while (__HAL_TIM_GET_COUNTER(&htim2) < us); // couter值大于等于延时时间, 退出循环
}

int main()
{
   
...
HAL_TIM_Base_Start(&htim2); // 开启定时器
...
}


参考

普中STM32-PZ6806L开发板(HAL库函数实现-批量操作GPIO引脚实现跑马灯)
在HAL库利用硬件定时器实现微秒级us延时

最近更新

  1. TCP协议是安全的吗?

    2023-12-29 09:20:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-29 09:20:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-29 09:20:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-29 09:20:03       20 阅读

热门阅读

  1. 重构第十一章:处理概括关系

    2023-12-29 09:20:03       38 阅读
  2. Web网站渗透攻击防御:守护网络安全的关键思路

    2023-12-29 09:20:03       38 阅读
  3. EasyExcel判断导入时是否符合给定模板

    2023-12-29 09:20:03       40 阅读
  4. 多态案例三-电脑组装

    2023-12-29 09:20:03       38 阅读
  5. facebook广告的基础知识

    2023-12-29 09:20:03       38 阅读
  6. facebook企业广告户开户需要哪些材料

    2023-12-29 09:20:03       34 阅读
  7. Vue 监听状态 watch 与监听状态 watchEffect

    2023-12-29 09:20:03       34 阅读
  8. Python学习笔记(三) 数据结构与常用方法

    2023-12-29 09:20:03       33 阅读
  9. 数据结构前言

    2023-12-29 09:20:03       39 阅读