stm32之HAL库实现us延时方法
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延时方法相关推荐
- STM32 使用HAL库实现微秒级长延时
STM32 使用HAL库实现微秒级长延时 背景 定时器初始化 主程序中的设计 背景 STM32 HAL库中有一个延时函数HAL_Delay(),可以实现毫秒级的延时,能够满足一般延时需求.在有些场合下 ...
- 一、STM32用HAL库实现uS级延时
一.应用场景 STM32CubeMX可视化初始化配置,结合 HAL 库,给STM32软件开发提高了效率,但 HAL 库封装的延时函数目前仅支持 mS 级别的延时,日常很多情况下会用到 uS延时,比如I ...
- 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(一)
前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 本文 1首先讲解什么是FMC及SDRAM,W9825G6KH芯片原理,2基于CubeMx创建工程 ...
- 正点原子STM32(基于HAL库)0
目录 开发环境搭建与使用 常用开发工具简介 MDK 安装 仿真器驱动安装 CH340 USB 虚拟串口驱动安装 使用MDK5 编译例程 使用串口下载程序 使用DAP 下载与调试程序 使用DAP 下载程 ...
- 正点原子STM32(基于HAL库)5
目录 SRAM 实验 存储器简介 SRAM 方案简介 硬件设计 程序设计 程序流程图 程序解析 下载验证 内存管理实验 内存管理简介 硬件设计 程序设计 程序流程图 程序解析 下载验证 SD 卡实验 ...
- 【STM32】HAL库 STM32CubeMX教程十五---FMC-SDRAM(二)
前言: 本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 上一讲我们说了CubeMX配置SDRAM的一些基本配置,还有FMC跟SDRAM的讲解,这一讲我们 ...
- 【STM32】HAL库 STM32CubeMX教程十一---DMA (串口DMA发送接收)
前言: 本系列教程将 对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1.芯片: STM32F407ZET6/ STM32F103ZET6 ...
- 【STM32】HAL库 ——DAC
前期准备: STM32CubeMX STM32RCT6核心板 IDE Keil(MDK-ARM) STM32CubeMX部分 1. 配置时钟 选择STM32F103RCTx系列芯片,配置时钟的同时会自 ...
- STM32的HAL库及其使用
随着时代的逐步发展,联网.USB.文件系统.加密算法.RTOS.GUI等第三方组件变得越来越重要,简陋的标准库已经很难满足当代单片机开发需求了. 事实上,单片机开发在走PC.手机等以CPU为核心的产品 ...
- STM32的HAL库分析及使用
STM32的三种开发方式 通常新手在入门STM32的时候,首先都要先选择一种要用的开发方式,不同的开发方式会导致你编程的架构是完全不一样的.一般大多数都会选用标准库和HAL库,而极少部分人会通过直接配 ...
最新文章
- live555 编译 linux,在树莓派上搭建LIVE555 Streaming Media服务器端
- 【机器学习PAI实践八】用机器学习算法评估学生考试成绩
- HTML之页面结构分析
- javascript对象和json字符串之间转换的问题
- 学习,编译ffmpeg tutorial
- linux idea 快捷键,Linux 下 IDEA 的 Ctrl+Alt+S
- 使用C#和Excel进行报表开发(四)-复制单元格 【转】
- c语言api函数写病毒,C语言病毒代码,及写病毒简单介绍
- android ip地址扫描仪,通过IP地址添加网络扫描仪(适用于CC2软件Mac OS)
- 南京装修公司排名十大口碑排行榜(教你如何选择)
- Python 进行 Cholesky分解
- 2018蓝桥杯 明码 解题方法
- X线、CT、B超、核磁共振区别
- python自动化操作网页(谷歌浏览器)
- 注册表(安全 活动桌面)
- Python之利用marshmallow实现序列化与反序列化
- CUDA安装成功测试
- 小鱼的航程(两种解决方法)
- 菜鸟初识脚本 and 脚本语言
- UG8.5 正式版安装方法