STM32延迟功能的四种方法

延迟功能通常用于微控制器编程中。最常用的是微秒delay_us()和毫秒delay_ms()。
本文基于STM32F207,介绍了以4种不同方式实现的延迟功能。普通延迟当每个人都在51单片机中时,这种延迟方法应该是最早的延迟功能。
这是相对简单的。让微控制器做一些微不足道的工作来打发时间。
它通常通过循环来实现。在某些编译器下,将对代码进行优化,从而降低准确性。
它用于一般延迟,并且对精度不敏感。应用场景。
//微秒延迟void delay_us(uint32_t delay_us){volatile unsigned int num; volatile unsigned int t; for(num = 0; num& lt; delay_us; num ++){t = 11; while(t!= 0){t--;}}} //毫秒延迟void delay_ms(uint16_t delay_ms){volatile unsigned int num;对于(num = 0; num& lt; delay_ms; num ++){delay_us(1000); }}上述项目的源代码存储库:https://github.com/strongercjd/STM32F207VCT6/tree/master/02-Template(注意:官方帐户不支持外部链接,请将该链接复制到浏览器中进行下载)定时器中断定时器具有较高的精度,我们可以配置定时器中断,例如,配置一次1ms的中断,然后间接判断中断的数量,以达到准确延迟的目的。可以保证此方法的准确性,但是系统总是在中断,这不利于在其他中断中调用此延迟函数。
一些高精度的应用场景不合适,例如正在输出其他外围设备,并且不允许任何中断。 。
可以使用STM32的任何定时器。让我们以SysTick计时器为例进行介绍:初始化SysTick计时器:/ *将SysTick配置为1ms * / RCC_GetClocksFreq(& amp; RCC_Clocks); SysTick_Config(RCC_Clocks.HCLK_Frequency / 1000);中断服务函数:无效SysTick_Handler(void){TimingDelay_Decrement();} void TimingDelay_Decrement(void){if(TimingDelay!= 0x00){TimingDelay--; }}延迟函数:void Delay(__ IO uint32_t nTime){TimingDelay = nTime; while(TimingDelay!= 0);}上述项目的源代码存储库:https://github.com/strongercjd/STM32F207VCT6/tree/master/02-Template(注意:官方帐户不支持外部链接,请复制链接到浏览器以进行下载)查询计时器为了解决计时器频繁中断的问题,我们可以使用计时器,但是禁用中断并使用查询方法进行延迟。
这样可以解决频繁中断的问题,并保证准确性。可以使用STM32的任何定时器。
让我们以SysTick计时器为例进行介绍。 STM32的CM3核心处理器内部包含一个SysTick计时器。
SysTick是一个24位倒数计时器。当它计数到0时,它将自动从RELOAD寄存器中重新加载时序初始值。
只要不清除SysTick控制和状态寄存器中的启用位,它就永远不会停止。 SYSTICK时钟固定为HCLK时钟的1/8。
在这里,我们选择内部时钟源120M,因此SYSTICK时钟为(120/8)M,即SYSTICK定时器以(120/8)M的频率减少。 SysTick主要包含4个寄存器,例如CTRL,LOAD,VAL和CALIB。
▼CTRL:控制和状态寄存器▼LOAD:自动重载除数值寄存器▼VAL:当前值寄存器▼CALIB:不使用校准值寄存器,不再引入代码void delay_us(uint32_t nus){uint32_t temp; SysTick-& gt; LOAD = RCC_Clocks.HCLK_Frequency / 1000000/8 * nus; SysTick-& gt; VAL = 0X00; //清除计数器SysTick-> CTRL = 0X01; //启用,减小到零是没有作用,请使用外部时钟源CTRL; //读取当前的倒计时值)while((temp& amp; 0x01)& amp; amp;(!(temp& amp;(1& lt;& lt; 16)))); / /等待时间达到SysTick-> CTRL = 0x00; //关闭计数器SysTick-> VAL = 0X00; //清除计数器)void delay_ms(uint16_t nms){uint32_t temp; SysTick-> LOAD = RCC_Clocks.HCLK_Frequency / 1000/8 * nms; SysTick-& gt VAL = 0X00; //清除计数器SysTick-> CTRL = 0X01; //启用,减小到零是没有作用,请使用外部时钟源CTRL; //读取当前倒计时值)while((temp& amp; 0x01)& amp; amp;(!(temp& amp;(1& lt& lt; 16))))); //等待时间达到SysTick-CTRL = 0x00; //关闭计数器SysTick-& gt VAL = 0X00; //清空计数器}上面的项目源代码存储库:https://github.com/strongercjd/STM32F207VCT6/tree/master/04-Delay(注意:官方帐户不支持外部链接,请将链接复制到浏览器下载)汇编指令如果系统硬件资源紧张,或者没有提供其他计时器,并且您不希望方法1的普通延迟,则可以使用汇编指令进行延迟,。

公司: 深圳市捷比信实业有限公司

电话: 0755-29796190

邮箱: momo@jepsun.com

产品经理: 李经理

QQ: 2215069954

地址: 深圳市宝安区翻身路富源大厦1栋7楼

微信二维码

更多资讯

获取最新公司新闻和行业资料。

  • 如何在高速电路中合理选择零延迟与低延迟时钟缓冲器 高速电路设计中时钟缓冲器的选型策略随着集成电路工作频率不断攀升,时钟信号的延迟与抖动问题日益突出。正确选择零延迟缓冲器或低延迟时钟缓冲器,是确保系统稳定运行的关键环节。一、影响选型的关键参数1. 延迟(Lat...
  • 零延迟缓冲器与低延迟时钟缓冲器的技术原理及应用解析 零延迟缓冲器与低延迟时钟缓冲器的核心技术对比在高速数字系统设计中,时钟信号的完整性与传输延迟直接影响系统的性能与稳定性。零延迟缓冲器(Zero Delay Buffer, ZDB)和低延迟时钟缓冲器(Low Latency Clock Buffer)是两类关键的...
  • 如何设计高效的计时延迟控制电路以优化SCR性能 高效计时延迟控制电路的设计要点为了充分发挥计时延迟/SCR控制器的潜力,合理设计控制电路至关重要。一个优秀的控制系统不仅要求精度高,还需具备稳定性、抗干扰能力及良好的扩展性。1. 选择合适的延时元件常用的延时元...
  • 计时延迟与SCR控制器应用详解 在工业自动化和电力电子领域,计时延迟和SCR(Silicon Controlled Rectifier,可控硅整流器)控制器是两个非常关键的技术概念。它们被广泛应用于各种设备和系统中,从家用电器到大型工业设备,都离不开这两项技术的支持。下面我...
  • 零延迟缓冲器工作原理及应用 零延迟缓冲器是一种在信号处理领域广泛应用的技术,它主要用于消除信号传输过程中的延迟问题。在数字信号处理、音频工程以及视频处理等领域中,延迟是一个常见问题,可能导致信号失真或同步问题。零延迟缓冲器通过先...
  • 零延迟缓冲器的技术演进与未来趋势 零延迟缓冲器的技术演进与未来趋势近年来,随着半导体工艺进步与系统对时序精度需求的提升,零延迟缓冲器正从专用芯片向多功能集成化方向发展。本文将探讨其技术演进路径、当前主流方案及未来发展方向。1. 技术演进历...
  • 零延迟缓冲器与普通缓冲器的性能对比分析 零延迟缓冲器与普通缓冲器的性能对比分析在现代电子系统设计中,信号完整性与传输延迟是决定系统性能的关键因素。随着高速数字电路的发展,传统的普通缓冲器已逐渐暴露出其在低延迟、高稳定性方面的局限性。相比之下...
  • 深入解析计时延迟/SCR控制器的工作原理与应用优势 计时延迟/SCR控制器的核心工作原理计时延迟/SCR(Silicon Controlled Rectifier,可控硅)控制器是一种广泛应用于工业自动化、电力调节和照明控制领域的电子控制装置。其核心功能是通过精确控制电流的导通时间,实现对负载的定时...
  • TSS管与聚鼎PXXXX T/S电感的性能对比及应用解析 TSS管与聚鼎PXXXX T/S电感的核心技术优势在现代电子设备中,TSS管(Transient Suppressor Semiconductor)与聚鼎品牌PXXXX系列电感(包括T型与S型)因其卓越的瞬态抑制能力和高可靠性,广泛应用于电源管理、通信设备和工业控制领域。以下...
  • 如何选择合适的聚鼎PXXXX T/S电感与TSS管搭配方案 基于应用场景的TSS管与聚鼎电感选型策略在实际工程设计中,合理匹配TSS管与聚鼎PXXXX系列电感是保障系统可靠性的关键。以下是根据不同应用场景的推荐搭配方案。1. 高频开关电源系统推荐配置:选用聚鼎PXXXX-T型电感 + 高速响...
  • 聚鼎PXXXX T与S电感对比:性能差异与工程选型策略 聚鼎PXXXX T vs S电感:全面性能对比与工程实践指南面对日益复杂的电子系统设计需求,如何在“聚鼎PXXXX T”与“聚鼎PXXXX S”两款电感之间做出最优选择?本文从结构、性能、适用场景三个维度展开深度对比,并提供实用的工程选...
  • ABB塑壳断路器(S系列.T系列): 高效可靠的配电解决方案 ABB塑壳断路器以其卓越的性能和可靠性在电气行业中享有盛誉。S系列和T系列作为ABB断路器中的佼佼者,分别针对不同的应用领域提供了高效且灵活的解决方案。S系列塑壳断路器设计紧凑、功能全面,适用于各种工业及商业环境...
  • 计时延迟与SCR控制器在工业自动化中的应用及RS-232 EMC设计优化 计时延迟与SCR控制器在工业自动化中的核心作用在现代工业自动化系统中,计时延迟和可控硅(SCR)控制器是实现精确过程控制的关键组件。计时延迟用于调节信号响应时间,避免因瞬时干扰导致误触发;而SCR控制器则通过相位...
  • 深入解析SCR控制器与计时延迟协同机制及RS-232接口的电磁兼容设计实践 SCR控制器与计时延迟的协同工作机制在电力电子控制系统中,计时延迟与SCR控制器并非独立存在,而是通过时序逻辑紧密配合,共同实现精准的功率调节。例如在交流调功系统中,通过设定触发延迟角(firing angle),控制SCR导通...
  • 提高功率因数的几种方法 提高功率因数的几种方法可分为两种方法:提高自然功率因数和使用人工补偿:改善自然因素的方法:1) 合理选择电动机的容量,降低电动机的无功功率消耗,防止“大马拉小车”。2) 对于平均负载小于其额定容量约40%的轻负...
  • TSS管与聚鼎PXXXX T/S电感参数详解:选型指南与应用解析 TSS管与聚鼎PXXXX T/S电感参数深度解析在现代电子设备中,TSS管(Transient Suppressor Semiconductor)和聚鼎(Jude)系列电感元件是保障电路稳定性和抗干扰能力的关键组件。本文将围绕“TSS管”、“聚鼎PXXXX T”与“聚鼎PXXXX S”电感的参...
  • FGT数码3 1/2位真空压力开关:高精度与可靠性的工业解决方案 FGT数码3 1/2位真空压力开关是一种先进的设备,用于精确控制和监测真空环境下的压力变化。这种开关以其高精度和可靠性著称,在多种工业应用中发挥着重要作用。它能够提供3 1/2位数的显示精度,这意味着用户可以获取到非常...
  • 直角LED灯珠3.0X2.0mm与2.1X0.6mm应用解析:尺寸、性能与选型指南 直角LED灯珠3.0X2.0mm与2.1X0.6mm技术详解在现代电子设备中,LED灯珠因其高效能、低功耗和长寿命而被广泛应用。其中,直角设计的LED灯珠尤其适用于对空间要求严苛、需要精确布光的场景。本文将深入分析两种常见规格——3.0X2.0mm...
  • QA-/3 隔离开关熔断器组(上海人民):一种高效可靠的低压配电解决方案 QA-/3 隔离开关熔断器组是由上海人民电器厂生产的一种集开关与保护功能于一体的电器设备。这种装置广泛应用于低压配电系统中,作为线路及电气设备的不频繁接通和分断操作,并在过载或短路时通过熔断器进行保护。QA-/3 隔...
  • 功率电阻TR20 TO-220 20W性能解析与GB/T 10228标准应用 功率电阻TR20 TO-220 20W技术特性详解在工业电子设备、电源系统及大功率电路中,功率电阻扮演着至关重要的角色。其中,TR20 TO-220 20W型功率电阻因其优异的散热性能和稳定的电气参数,成为众多设计工程师的首选。1. 封装与结构...