2025-06-27 00:32:57 +08:00
|
|
|
|
/***
|
|
|
|
|
***************************************************************************
|
|
|
|
|
* @file delay.c
|
2025-10-18 13:58:40 +08:00
|
|
|
|
* @version V1.0.0
|
2025-06-27 00:32:57 +08:00
|
|
|
|
* @brief delay接口相关函数
|
|
|
|
|
***************************************************************************
|
|
|
|
|
* @description
|
|
|
|
|
*
|
|
|
|
|
* SysTick定时器配置为1ms中断,实现毫秒延时
|
2025-10-18 13:58:40 +08:00
|
|
|
|
*
|
2025-06-27 00:32:57 +08:00
|
|
|
|
***************************************************************************
|
|
|
|
|
***/
|
|
|
|
|
|
|
|
|
|
#include "delay.h"
|
|
|
|
|
|
2025-10-18 13:58:40 +08:00
|
|
|
|
static __IO uint32_t TimingDelay; //计数变量
|
2025-06-27 00:32:57 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 函数:延时初始化
|
|
|
|
|
// 说明:配置 SysTick 为1ms中断,并启动定时器
|
|
|
|
|
//
|
|
|
|
|
void Delay_Init(void)
|
|
|
|
|
{
|
|
|
|
|
SysTick_Config(SystemCoreClock / 1000); //配置SysTick时钟为1ms中断
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 函数:计时函数
|
|
|
|
|
// 说明:在 SysTick 中断服务函数里被调用
|
|
|
|
|
//
|
|
|
|
|
void OS_CPU_SysTickHandler(void)
|
|
|
|
|
{
|
|
|
|
|
if (TimingDelay != 0)
|
2025-10-18 13:58:40 +08:00
|
|
|
|
{
|
2025-06-27 00:32:57 +08:00
|
|
|
|
TimingDelay--;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 函数:毫秒延时
|
|
|
|
|
// 参数:nTime - 延时时间,单位ms
|
2025-10-18 13:58:40 +08:00
|
|
|
|
// 说明:每次调用都会重新给TimingDelay赋值,实现 n 毫秒的延时,最大延时 4294967295 ms。
|
2025-06-27 00:32:57 +08:00
|
|
|
|
//
|
2025-10-18 13:58:40 +08:00
|
|
|
|
void Delay_ms(uint32_t nTime)
|
|
|
|
|
{
|
2025-06-27 00:32:57 +08:00
|
|
|
|
TimingDelay = nTime;
|
|
|
|
|
|
|
|
|
|
while(TimingDelay != 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|