newPtz/drivers/delay.c

32 lines
1.0 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "delay.h"
/*
@ brief 延时函数
@ param
@ return
@ note 2022-5-23
*/
void delay_us(int us)//100us以内
{
uint32_t start, now, delta, reload, us_tick;
start = SysTick->VAL;//记录进入函数时SysTick计数器的当前值。
reload = SysTick->LOAD;//SysTick的重载值即计数器从reload递减到0。
/* 240 */
us_tick = SystemCoreClock / 1000000UL;//每微秒对应的滴答数系统时钟频率除以1000000。SystemCoreClock是系统核心时钟频率单位Hz除以1000000得到每微秒的滴答数。
do
{
now = SysTick->VAL;//在循环中不断读取的SysTick当前值。
delta = start > now ? start - now : reload + start - now;//计算从start到now的时间间隔以滴答数计
} while (delta < us_tick * us);//直到经过的滴答数大于等于所需的微秒数对应的滴答数才退出。
}
void delay_ms(int ms)
{
for (int i = 0; i < ms; i++)
{
for (int j = 0; j < 1000; j++)
{
delay_us(1);
}
}
}