当前位置:首页 > 问问

stm32精确延时一般用什么区别 STM32精确延时常用的区别

1、延时的原理

在单片机开发中,我们常常需要用到延时功能,例如控制LED闪亮、计时等。延时的原理就是利用单片机进行循环计数,每计数一个单位时间就可以使程序停留在某个时间。

但是,由于单片机的计数精度限制,实现精确延时需要选择更加合适的方法。

2、常见的延时方法

在stm32单片机中,延时方法可以分为大体的软件延时和硬件定时器延时。其中又可细分为以下几种常见的方法:

2.1、基于while循环的延时

这种方法是非常简单粗暴的,就是不断的循环等待一段时间。但是由于单片机的执行速度非常快,所以使用这种方法并不能得到较高的精度。在此不作展开。

2.2、使用systick定时器进行延时

使用systick定时器进行延时操作,是最常见的一种延时方法。该方法在底层驱动程序中已经实现了优化,具有较高的精确定时能力。在程序中使用的方法是设定定时器的reload值,并开启定时器中断,当系统时钟根据该reload值计数到0时,就会触发中断,从而进行延时操作。控制程序的停留时间间隔由IDL时间决定,可以通过对系统时钟源进行切换来调整IDL时间来实现不同精度的延时。

2.3、使用定时器模块的硬件计数器

该方法利用定时器模块的硬件计数器和中断功能,实现更加高效的延时操作。该方法的精度主要取决于定时器模块计数器的位数、控制数据更新的速度以及模块中断响应的速度等因素。相较于Systick定时器,定时器模块可以拥有更高的计数精度及响应速度,拥有更加求精的应用场景。

3、延时方法的选择原则

在实际应用中如何选择适合的延时方法呢?下面列举一些原则供参考:

3.1、精度要求

对于需要精准计数的场景,应该选用能够提供更高精度的计时模式,如定时器模块。若精度要求不是很高,则可以采用Systick定时器。

3.2、时钟资源占用

时钟源的切换及其对电源的影响,也是在工程中需要考虑的因素。为了尽量降低计数时的功耗,应尽量减少IDL时间的占用,避免让时钟处于空闲状态导致功耗过大。同时,如果其他模块需要使用时间相关的抽样指令,则需要根据需要的资源进行判断选择。

3.3、代码优化

不同的延时方法会影响代码的实现难度、代码量及其执行效率等问题。但是,在实际应用中,要优先考虑延时准确度等性能因素。其他因素可以在保证性能不降低的前提下再进行考虑。

3.4、使用闭环

对于需要极高延时精度的场合,还可以使用闭环延时。使用定时器模块自带的脉宽调制及输入捕捉功能来进行循环计数,结合中断响应实现更高的精确度。

总之,在stm32单片机的延时选择方面,应该结合实际应用场景和特点进行选择,以达到严格的计时及精度要求。

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com
标签:

  • 关注微信

相关文章