#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; }