#include "delay.h"
void delay_Init(void){
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK); // 配置SysTick时钟源为HCLK(系统主频72MHZ)
}
void delay_us(u16 us){
//若 HCLK 为 72MHz,SysTick 的计数周期为 1/72MHz ≈ 13.89ns,则计数 72 次的时间为 72 × 13.89ns ≈ 1μs。
SysTick->LOAD = 72 * us; // 加载倒计时重载值(72 * us 对应 us 微秒)
SysTick->VAL = 0x00; // 清零当前计数值,并清除COUNTFLAG标志
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; // 使能SysTick定时器,开始倒计时.
//SysTick 是一个 24 位递减计数器,当计数到 0 时,会触发COUNTFLAG标志
while(!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk)); // 等待倒计时结束
SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; // 关闭SysTick定时器
}
void delay_ms(u16 ms){
while(ms--)
{
delay_us(1000); //1000us = 1 ms 1000ms = 1s
}
}
07-27
761

06-11
1132

05-14
723

05-08
2174

03-14
618

05-10