STM32 HAL库中实现uS延迟的3种方法
传感器的数据读取过程对时序有严格的要求,而us延迟是必不可少的。基于此要求,我将介绍三种实现美国延迟的方法。
该方法也适用于标准库。缺点也请指出。
实验的目的是使用普通的定时器来实现我们的延迟。使用Systick功能实现我们的延迟。
使用for循环来实现我们的延迟。 1.普通计时器实现我们的延迟。
使用定时器TIM2来实现我们的延迟。使用cubemx配置项目。
时钟是MCU的心脏。首先配置时钟。
1.1。内部RC高速时钟也可以用于外部时钟选择。
这次我们主要介绍外部高速时钟的使用。上图:8M晶体焊接在我的板上。
如果板子不是8M,请根据自己的晶振频率进行配置。在左侧的圆圈1中,您可以根据自己的晶体频率输入相应的频率。
经过分频和倍频后,系统时钟频率最大设置为168MHZ,APB1的时钟频率为84MHZ,以后也将使用TIM2上安装的时钟源的频率。 1.2。
TIM2基本配置这比较简单,分频系数为83,计数单位为84MHZ / 84 = 1uS,向上计数模式,周期为65535,因为不使用中断,因此无需打开中断。时钟和计时器的配置已完成,以下是cubemx生成项目时的几种设置,建议您检查它们。
首先是HAL库是否需要包含所有文件。我们选择只需要使用的文件。
这样可以缩短项目的编译时间,仅编译我们使用的库文件,然后检查以为每个外围设备生成一个单独的.c。 .h文件,必须检查这个建议,这将使代码结构非常清晰,第三点非常重要,使用cubemx的朋友在重新生成项目后是否每次都遇到过,之前添加的文件都消失了,如果这项目被选中,用户文件将被保留。
然后是编译器的选择,您可以根据自己喜欢的IDE进行选择,我选择了KEIL5。至此,配置工作完成,可以生成项目。
1.3。代码实现/ *通用计时器实现了我们的延迟* / void user_delaynus_tim(uint32_t& ns){ //设置计时器2的技术初始值__HAL_TIM_SetCounter(& htim2,differ); //启动计时器HAL_TIM_Base_Start(& htim2); while(& nbsp;< 0xffff-5)& nbsp; {& nbsp;& nbsp; differ& nbsp; =& nbsp; __ HAL_TIM_GetCounter(& amp; htim2);& nbsp;}} ; //关闭计时器HAL_TIM_Base_Stop(& amp; htim2);} / * 普通计时器可以实现ms延迟,您可以直接使用HAL库函数HAL_delay()* / void delay_ms_tim(uint16_t& nbsp; nms ){  ; uint32_t& nbsp; i; for(i = 0; i1000);} 1.4。
通过延迟翻转IO来实现效果。逻辑分析仪测试延迟时间。
延迟时间分别为20us和500ms。以下是测量图:2. Systick函数实现我们使用Delay 2.1。
Systick CM3和CM4的简介包括系统计数器SysTick,它是一个24位倒数计时器。当计数达到0时,它将自动从RELOAD寄存器中重新加载时序初始值。
只需将其放入SysTick->清除CTRL中的启用位,它将始终存在。寄存器介绍:相应代码在core_cm4.h / **中。
rief& nbsp;& nbsp;结构& nbsp;类型& nbsp;访问& nbsp;系统& nbsp; Timer& nbsp;(SysTick)。& nbsp; * / typedef 结构{& nbsp; & nbsp; __ IOM& nbsp; uint32_t& nbsp; CTRL; / *!& lt;偏移量:0x000(R / W)SysTick控制和状态寄存器* / __IOM / *!& lt;偏移量:0x004(R / W)SysTick重载值寄存器* / __IOM / *!& lt;偏移量:0x008(R / W)SysTick当前值寄存器* / __IM / *!& lt;偏移量:0x00C(R /)SysTick校准寄存器* /} SysTick控制和状态寄存器(0xE000_E010):该寄存器的位0:指示SysTick使能位,0指示关闭; 0指示关闭。
1表示亮; SysTick_CTRL_ENABLE_Mask;位1:指示SysTIck中断使能位0-表示关闭中断; 1-打开中断; SysTick_CTRL_TICKINT_Mask位2:表示。
邮箱:momo@jepsun.com
联系人:汤经理 13316946190
联系人:陆经理 18038104190
联系人:李经理 18923485199
联系人:肖经理 13392851499
QQ:2215069954
地址:深圳市宝安区翻身路富源大厦1栋7楼
-
深入解析OPTIREG Lite SBC:如何在边缘计算中实现高效能与低延迟
OPTIREG Lite SBC:边缘计算时代的“智能神经中枢”在5G、AIoT和实时数据分析的推动下,边缘计算正从概念走向大规模落地。作为边缘节点的核心硬件,嵌入
-
惯性保险丝:电路保护中的延迟响应机制
惯性保险丝是一种特殊设计的安全装置,用于保护电路免受瞬时高电流的损害。它结合了普通保险丝的功能与惯性元件的特点,能够在检测到电流突然增
-
加压法求等效电阻:一种创新的教学实验方法
在物理教学中,为了帮助学生更好地理解复杂电路的计算,教师们常常会采用各种直观的方法。其中,利用加压法来求解等效电阻是一种非常实用且易于
-
使用电阻将24V降至5V:一种简易但非最佳实践方法
将24V电压降至5V通常不是通过单一电阻实现的,因为这会导致大量的功率损耗,并且无法精确控制输出电压。电阻降压是一种简单但效率极低的方法,不
-
使用CYBUS3384总线开关实现5V Cypress PROM与3.3V系统之间的接口
在现代电子设计中,不同电压级别的设备之间进行通信可能会遇到兼容性问题。特别是当需要将一个工作在5V电压下的Cypress PROM与一个仅支持3.3V信号的系
-
静电容寿命的影响因素及延长方法
静电容的寿命往往受到多种因素的影响,包括使用环境、工作电压、温度以及材料本身的特性等。一般来说,在正常的工作条件下,高质量的静电容可以
-
延时时钟芯片选型指南:如何选择低延迟高性能时钟解决方案
延时时钟芯片选型关键因素解析在现代高速数字系统设计中,时钟信号的稳定性和延迟控制至关重要。延时时钟芯片(Delay-Adjustable Clock IC)作为实现精确
-
延时继电器延时精度测试方法与行业应用实践
延时继电器延时精度测试方法与行业应用实践为确保延时继电器在复杂工业场景中的可靠表现,科学的延时精度测试是必不可少的一环。本文将介绍常见
-
单板计算机在边缘计算中的应用:高效、低延迟的智能解决方案
单板计算机在边缘计算中的核心作用随着物联网(IoT)和人工智能技术的迅猛发展,边缘计算正逐渐成为数据处理的新范式。在这一背景下,单板计算机
-
低延迟时钟芯片技术趋势:从传统方案到智能自适应架构
低延迟时钟芯片的技术演进与未来方向随着5G通信、自动驾驶、工业物联网等领域的快速发展,对时钟信号的响应速度和稳定性提出了更高要求。低延迟
-
深入理解零延迟缓冲器在高速数字系统中的作用
引言:为何需要“零延迟”?在现代高速数字系统中,时钟信号的同步性直接决定系统的可靠性与性能上限。传统的缓冲器虽然能传递信号,但不可避免
-
深入理解零延迟缓冲器在高速系统中的关键作用
深入理解零延迟缓冲器在高速系统中的关键作用随着集成电路向更高频率、更密集布局发展,信号传输的时序精度成为制约系统性能的关键因素。在此背
-
延时继电器延时精度测试方法与行业规范解析
延时继电器延时精度测试方法与行业规范解析为了保证延时继电器在实际应用中的性能稳定,必须通过科学的方法进行延时精度测试,并依据行业规范进
-
延时继电器延时精度测试方法与常见问题分析
延时继电器延时精度测试方法与常见问题分析为了确保延时继电器在实际运行中的可靠性,必须对其进行严格的延时精度测试。本文将介绍标准测试流程
-
零延迟缓冲器与普通缓冲器的性能对比:为何在高速系统中更优?
零延迟缓冲器与普通缓冲器的性能对比:为何在高速系统中更优?随着集成电路向高频、高精度方向发展,信号完整性成为系统设计的关键挑战。在这一
-
电池及配件维护技巧:延长使用寿命的实用方法
电池及配件维护技巧:延长使用寿命的实用方法即使购买了高性能电池和优质配件,若缺乏正确维护,仍可能快速衰减。掌握科学的保养方法,可显著提