方案一:基于延时函数的延时
#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库帮助系统
方案三:定时器中断延时
在st