STM32之CubeL4定时器控制实现微秒延时

现代的ST主推HAL库,但是这么强大的HAL库,居然没有一个微秒级别的延时函数????


在HAL库中有毫秒级延时HAL_Delay(),原理是使用Systick作为延时计数器来实现的。如果需要增加精确的微秒级别延时,一般都是直接更改Systick配置参数,但HAL固件很多的地方都使用了HAL_Delay()函数,因此不建议修改系统自动配置的Systick参数。


一、定时器微秒实现原理

CK_INT 80M时钟输入定时器,80分频后1Mhz = 1us,也就是计数器CNT每加一次就是1us。


STM32L4x1 参考手册P780

我是用到是TIM2,首先需要知道TIM2的时钟,查看手册得知TIM2在APB1总线上

STM32L431xx 参考手册P16

知道时钟输入后直接在CubeMX中配置定时器。

定时器计数配置

首先配置系统时钟

接下来配置定时器

编写思路

设置CNT的值为0 --> (开始计数) --> 比较CNT值 --> (到达CNT值) --> 停止计数

具体代码实现

// Core\Src\delay.c
void HAL_Delay_US(uint32_t Delay_us)
{__HAL_TIM_SetCounter(&htim2, 0);__HAL_TIM_ENABLE(&htim2);while(__HAL_TIM_GetCounter(&htim2) < Delay_us);/* Disable the Peripheral */__HAL_TIM_DISABLE(&htim2);}
  /* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */GPIOA->BSRR = GPIO_PIN_2;  // PA2 = 1     HAL_Delay_US(10);GPIOA->BSRR = (uint32_t)GPIO_PIN_2<< 16U; // PA2 = 0    HAL_Delay_US(10);}/* USER CODE END 3 */
}

2us

5us

10us

50us

500us

STM32 HAL库实现US微秒延时函数相关推荐

  1. stm32延时us寄存器_自己写一个STM32 HAL库的US微秒延时函数

    当本菜鸟开始接触STM32的时候还是看了原子哥的寄存器教程才跳坑的. 现在ST已经把HAL库推向了主流,但是令我不解的是,HAL那么强大,居然没有一个微秒级别的延时函数?! 黑人问号脸. 好了,废话不 ...

  2. HIH8121(HIH8000系列)温湿度传感器驱动代码-基于STM32 HAL库

    HIH8121温湿度传感器代码基于STM32 HAL库 HIH8121传感器简介 驱动代码.c 驱动代码.h main函数 HIH8121传感器简介 HIH8121是霍尼韦尔公司生产的测量温湿度参数一 ...

  3. STM32 HAL库 串口DMA(收发)和STM32串口中断接收(接收时间管理机制)+ESP8266 wifi模组通信问题

    一.HAL库 串口 DMA+ESP8266模组通信问题 用STM32 HAL库串口的DMA发送和空闲中断接收处理数据,单片机发送AT指令给ESP8266 wifi模组问题:单片机连续几次给wifi模组 ...

  4. 温湿度传感器驱动SHT85 单片机STM32 HAL库

    功能介绍:读取传感器SHT85数据,转换成温度.湿度 .饱和水蒸气含量. 注意事项: SDA脚设置为开漏输出,外部上拉电阻10k.或者设置成推挽,软件切换SDA输入输出. 调试时可适当加长延时时间. ...

  5. VL6810X驱动 距离和光线传感器 stm32 HAL库

    VL6810X驱动 距离和光线传感器 stm32 HAL库 代码 库文件和官方文档 注意事项 1. 2. 3. 这是一款ST出品的传感器,感觉用的人不多 网上没什么驱动代码,所以自己根据st的官方资料 ...

  6. stm32+HAL库制作转速仪

    stm32+HAL库制作转速仪 前言 电机在运行过程中,需要实时检测其转速的稳定性,有效反映电机的运行情况. 本文介绍了基于stm32的转速仪的设计,可以用光电门传感器和红外对管传感器测量,可以设置选 ...

  7. STM32 HAL库 串口DMA接收不定长数据

    STM32 HAL库 串口DMA接收不定长数据 整体思路:我是用的CUBEMX软件生成的工程,使能了两个串口,串口2用来接收不定长的数据,串口1用来发送串口2接收到的数据:串口2我找了一个UBLOX卫 ...

  8. STM32 HAL库

    STM32 HAL库 第三章 MDK5 软件入门 bug解决 关键文件介绍 程序仿真 User Keywords 语法提示 代码编辑/查看技巧 第四章 STM32F1 基础知识入门 MDK 下 C 语 ...

  9. STM32 HAL库、标准外设库、LL库(STM32 Embedded Software)

    STM32 Embedded Software 工作以来一直使用ST的STM32系列芯片,ST为开发者提供了非常方便的开发库.到目前为止,有标准外设库(STD库).HAL库.LL库 三种.前两者都是常 ...

  10. STM32 hal库串口空闲中断最新用法

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.串口空闲中断是什么? 二.使用步骤 1.hal库空闲中断接收函数 2.使用方法 3.最终效果 实际效果 总结 前言 ...

最新文章

  1. 深度学习框架简史 (A Brief History of Deep Learning Frameworks)
  2. C++ STL库的总结以及实现原理
  3. 关于图片缩放的两种方式
  4. 知识力量_网络分析的力量
  5. 有限元python编程流行吗_Python进行有限元分析
  6. 如何在 Mac 上设置图片或视频的默认打开应用?
  7. 【字体分享】设计师常用的日系中文字体
  8. js实现敏感词过滤算法
  9. 分形理论在金相学中的应用
  10. 如何制作一个计算机病毒,怎样制作一个简单的电脑病毒
  11. python正整数平方根_Python3算法之四:x的平方根
  12. 神兵利器——敏感文件发现工具
  13. 索引前缀[ AK、IK、PK、CK 、FK、DF、UQ]
  14. 脱欧导致IT公司在英国开展业务充满变数
  15. JavaScript(JS) 浏览器中设置启用或禁用
  16. Vue+nodejs+express天天生鲜超市购物商城平台
  17. 因《乔布斯传》而开发的XC3566
  18. Tomcat的默认管理员密码是什么?
  19. 2023 易语言 MuX云切片转码系统前端源码
  20. 初识ucos操作系统-----基于freescale K60硬件平台的ucos-ii的移植

热门文章

  1. 查看MXNet模型结构
  2. GPS卫星双轨参数(TLE)
  3. 【原创】LabView制作实时读取Excel正态分布图
  4. 用计算机制作课程表,怎么用word做表格-Word制作课程表的方法,学习必备表格,简单易学...
  5. DMA copy和CPU copy
  6. 10本经典励志书籍推荐
  7. js文本框设置必填项_表单字段必填项JS代码
  8. 0302、DNS服务器、多区域的DNS服务器、DNS主从架构、DNS主从数据同步、特殊解析、缓存DNS
  9. 芯科技之AD7705介绍
  10. R语言中的apply(),lapply(),sapply(),tapply()函数以及示例