陶 静
(全球能源互联网研究院,南京 210003)
一种采用SysTick中断实现精确延时的方法*
陶 静
(全球能源互联网研究院,南京 210003)
在使用STM32微控制器作为处理器的系统中,常采用递减函数实现延时,该方法适用于一般延时,实现精确延时时误差较大。本文介绍了一种采用SysTick中断实现精确延时的方法,该方法能大大提升延时精度。通过实验验证,SysTick中断方式可将1 μs延时的误差由26%降低至3%。
STM32;延时;SysTick
STM32是ST(意法半导体)公司发布的一款32位ARM微控制器,该微控制器基于针对高性能、低成本、低功耗的嵌入式应用设计的Cortex-M3内核。随着STM32在工业控制系统、无线网络与传感器等领域广泛应用,暴露出来的问题也越来越多,其中包含如何实现精确延时。常见的延时方法是调用递减函数,该方法能实现固定未知时间段的延时,但运用在对延时精度要求高的场合时(例如采用私有协议的高频通信、高频数据存储与解析等),误差较大。本文提出了一种基于SysTick的延时方式,能够很好地解决这个问题。
为了更好地说明并验证效果,本文以实现1 μs的延时为目标,以STM32F207ZGT6最小系统PCB板、Agilent Technologies MS07104B示波器、ST-LINK下载器为硬件环境,Keil μVision4为软件调试工具,进行程序编写及调试。
1.1 方法介绍
在一般对延时精确度要求不高的场合下,例如:以一定的频率设置GPIO口的电平高低来点亮或熄灭LED灯、产生占空比为50%的PWM波形、随机延时等,常使用设置一个参数并调用递减函数的方式来实现延时。使用这种方法时需要按照以下步骤进行:……p>