delay.c代码如下
#include "./delay/delay.h"
/*** 功能:SysTick定时器初始化函数* 参数:None* 返回值:None*/
void initSysTick(void)
{SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //设置时钟源8分频SysTick->CTRL |= SysTick_CTRL_TICKINT_Msk; //使能中断SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; //开定时器SysTick->LOAD = 9; //随意设置一个重装载值
}
/*** 功能:微秒级延时函数* 参数:xus :具体延时时间 (单位:微秒)* 返回值:None*/
void delay_us(u32 xus)
{SysTick->LOAD = 9 * xus; //计9次为1us,xus则重装载值要*9SysTick->VAL = 0; //计数器归零while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk)); //等待计数完成
}
/*** 功能:毫秒级延时函数* 参数:xms :具体延时时间 (单位:毫秒)* 返回值:None*/
void delay_ms(u32 xms)
{SysTick->LOAD = 9000; //计9次为1us,1000次为1msSysTick->VAL = 0; //计数器归零while (xms--){while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk)); //等待单次计数完成}
}
delay.h代码如下
#include "stm32f10x.h"void initSysTick(void);
void delay_us(u32 xus);
void delay_ms(u32 xms);