stm32之HAL库实现us延时方法

HAL_Delay()源码为ms级别的延时如下:

/*** @brief This function provides accurate delay (in milliseconds) based *        on variable incremented.* @note In the default implementation , SysTick timer is the source of time base.*       It is used to generate interrupts at regular time intervals where uwTick*       is incremented.* @note This function is declared as __weak to be overwritten in case of other*       implementations in user file.* * @param Delay: specifies the delay time length, in milliseconds.* @retval None*/
__weak void HAL_Delay(__IO uint32_t Delay)
{uint32_t tickstart = 0U;tickstart = HAL_GetTick();while((HAL_GetTick() - tickstart) < Delay){}
}

下面是us级别的延时:

void HAL_Delay_us(uint32_t nus)
{//将systic设置为1us中断
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000000);
//延时nus
HAL_Delay(nus-1);
//恢复systic中断为1ms
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
}

另外需要注意的一点是stm32H7里面时钟配置如下:


其中systic是系统时钟直接给systic的而不是HCLK,HAL_RCC_GetHCLKFreq()正好是系统时钟的1/2所以上面配置1us时钟源要改为如下:

HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()*2/1000000);

stm32之HAL库实现us延时方法相关推荐

  1. STM32 使用HAL库实现微秒级长延时

    STM32 使用HAL库实现微秒级长延时 背景 定时器初始化 主程序中的设计 背景 STM32 HAL库中有一个延时函数HAL_Delay(),可以实现毫秒级的延时,能够满足一般延时需求.在有些场合下 ...

  2. 一、STM32用HAL库实现uS级延时

    一.应用场景 STM32CubeMX可视化初始化配置,结合 HAL 库,给STM32软件开发提高了效率,但 HAL 库封装的延时函数目前仅支持 mS 级别的延时,日常很多情况下会用到 uS延时,比如I ...

  3. 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(一)

    前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 本文 1首先讲解什么是FMC及SDRAM,W9825G6KH芯片原理,2基于CubeMx创建工程 ...

  4. 正点原子STM32(基于HAL库)0

    目录 开发环境搭建与使用 常用开发工具简介 MDK 安装 仿真器驱动安装 CH340 USB 虚拟串口驱动安装 使用MDK5 编译例程 使用串口下载程序 使用DAP 下载与调试程序 使用DAP 下载程 ...

  5. 正点原子STM32(基于HAL库)5

    目录 SRAM 实验 存储器简介 SRAM 方案简介 硬件设计 程序设计 程序流程图 程序解析 下载验证 内存管理实验 内存管理简介 硬件设计 程序设计 程序流程图 程序解析 下载验证 SD 卡实验 ...

  6. 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(二)

    前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 上一讲我们说了CubeMX配置SDRAM的一些基本配置,还有FMC跟SDRAM的讲解,这一讲我们 ...

  7. 【STM32】HAL库 STM32CubeMX教程十一---DMA (串口DMA发送接收)

    前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1.芯片: STM32F407ZET6/ STM32F103ZET6 ...

  8. 【STM32】HAL库 ——DAC

    前期准备: STM32CubeMX STM32RCT6核心板 IDE Keil(MDK-ARM) STM32CubeMX部分 1. 配置时钟 选择STM32F103RCTx系列芯片,配置时钟的同时会自 ...

  9. STM32的HAL库及其使用

    随着时代的逐步发展,联网.USB.文件系统.加密算法.RTOS.GUI等第三方组件变得越来越重要,简陋的标准库已经很难满足当代单片机开发需求了. 事实上,单片机开发在走PC.手机等以CPU为核心的产品 ...

  10. STM32的HAL库分析及使用

    STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的.一般大多数都会选用标准库和HAL库,而极少部分人会通过直接配 ...

最新文章

  1. live555 编译 linux,在树莓派上搭建LIVE555 Streaming Media服务器端
  2. 【机器学习PAI实践八】用机器学习算法评估学生考试成绩
  3. HTML之页面结构分析
  4. javascript对象和json字符串之间转换的问题
  5. 学习,编译ffmpeg tutorial
  6. linux idea 快捷键,Linux 下 IDEA 的 Ctrl+Alt+S
  7. 使用C#和Excel进行报表开发(四)-复制单元格 【转】
  8. c语言api函数写病毒,C语言病毒代码,及写病毒简单介绍
  9. android ip地址扫描仪,通过IP地址添加网络扫描仪(适用于CC2软件Mac OS)
  10. 南京装修公司排名十大口碑排行榜(教你如何选择)
  11. Python 进行 Cholesky分解
  12. 2018蓝桥杯 明码 解题方法
  13. X线、CT、B超、核磁共振区别
  14. python自动化操作网页(谷歌浏览器)
  15. 注册表(安全 活动桌面)
  16. Python之利用marshmallow实现序列化与反序列化
  17. CUDA安装成功测试
  18. 小鱼的航程(两种解决方法)
  19. 菜鸟初识脚本 and 脚本语言
  20. UG8.5 正式版安装方法

热门文章

  1. php是哪个快递,php快递查询API类(支持各种快递的查询)
  2. 软件工程——NS图,PAD图
  3. wps生成正态分布的随机数_如何用excel批量生成正态分布的随机数?
  4. 微型计算机字长取决于什么,cpu字长由什么决定
  5. Teamviewer解决许可证授权的问题
  6. 3D 旋转立方体的完整代码
  7. 微信状态栏隐藏 HTML,完美解决微信video视频隐藏控件和内联播放问题
  8. 405服务器响应失败,服务器返回HTTP响应代码:405
  9. Android模拟器Root
  10. 洛谷——P1724 东风谷早苗