Files
Gamble/MPU6050/System/Delay.c
2023-12-18 14:36:22 +08:00

48 lines
1.2 KiB
C

#include "delay.h"
/******************************************************************************/
//延迟nus
void delay_us(unsigned long nus)
{
unsigned long temp;
SysTick->LOAD =nus*9; //9=??72MHz
SysTick->VAL =0;
SysTick->CTRL =SysTick_CTRL_ENABLE_Msk; //HCLK/8
do
{
temp=SysTick->CTRL;
}while((temp&0x01)&&!(temp&(1<<16)));
SysTick->CTRL=0;
SysTick->VAL =0;
}
/******************************************************************************/
//延迟nms
//最大延时时间=0xFFFFFF/9MHz=1864ms
void delay_ms(unsigned short nms)
{
unsigned long temp;
SysTick->LOAD=(u32)nms*9000; //9=??72MHz
SysTick->VAL =0;
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //HCLK/8
do
{
temp=SysTick->CTRL;
}while((temp&0x01)&&!(temp&(1<<16)));
SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
SysTick->VAL =0;
}
/******************************************************************************/
//0xFFFFFF到0循环计数
void systick_CountMode(void)
{
SysTick->LOAD = 0xFFFFFF-1; //set reload register
SysTick->VAL = 0;
SysTick->CTRL = SysTick_CTRL_ENABLE_Msk; //Enable SysTick Timer
}
/******************************************************************************/