方案一:基于延时函数的延时
#include <stm32f10x.h>
//1ms延时函数
void delay_nms(u16 time)
{
u16 i = 0;
while (time--)
{
i = 12000;
while (i--);
}
}
示例:delay_nms(1000)//1ms
该方式不能够保证很高的延时精度
方案二:Systick中断延时
在stm32f10x_it.h中声明一个全局变量
extern __IO uint32_t TimingDelay;
在stm32f10x_it.c中定义中断函数
void SysTick_Handler(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}
在main.c中定义以下函数与一个全局变量
void Init_SysTick(void)
{
if (SysTick_Config(SysTickCoreClock / 1000))//1ms的时基
while (1);
}
//延时函数
__IO uint32_t TimingDelay;//定义全局变量
void delay_ms(__IO uint32_t nTime)
{
TimingDelay = nTime;
while (TimingDelay != 0);
}
关于SysTick_Config()函数可以参略V350库帮助系统文章来源:https://www.toymoban.com/news/detail-637443.html
方案三:定时器中断延时
在st文章来源地址https://www.toymoban.com/news/detail-637443.html
到了这里,关于【STM32调试案例】实现延时的3中常见方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!