stm32/App/delay/delay.c

57 lines
1.3 KiB
C

#include "delay.h"
//********************************************************************//
//! 函数名:delay_us
//! 功能:延时us函数
//! 输入:i:延时微秒数
//! 输出:none
//********************************************************************//
void delay_us(u32 i)
{
u32 temp;
//! 设置重装数值,72MHz时
SysTick->LOAD=9*i;
//! 使能,减到零是无动作,才用外部时钟源
SysTick->CTRL=0X01;
//! 清零计数器
SysTick->VAL=0;
do
{
//! 读取当前倒计数值
temp=SysTick->CTRL;
}
//! 等待时间到达
while((temp&0x01)&&(!(temp&(1<<16))));
//! 关闭计数器
SysTick->CTRL=0;
//! 清空计数器
SysTick->VAL=0;
}
//********************************************************************//
//! 函数名:delay_ms
//! 功能:延时ms函数
//! 输入:i:延时毫秒数
//! 输出:none
//********************************************************************//
void delay_ms(u32 i)
{
u32 temp;
//! 设置重装数值,72MHz时
SysTick->LOAD=9000*i;
//! 使能,减到零是无动作,才用外部时钟源
SysTick->CTRL=0X01;
//! 清零计数器
SysTick->VAL=0;
do
{
//! 读取当前倒计数值
temp=SysTick->CTRL;
}
//! 等待时间到达
while((temp&0x01)&&(!(temp&(1<<16))));
//! 关闭计数器
SysTick->CTRL=0;
//! 清空计数器
SysTick->VAL=0;
}