57 lines
1.3 KiB
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;
|
||
|
}
|