void DelayUs(uint32_t us)
{
uint32_t i;
for (i = 0; i < us / 1000; i++);
} 使用循环延时
c
void Delay(uint32_t nTime) {
while(nTime--) {
// 根据系统时钟频率调整延时时间
for (volatile uint32_t i = 0; i < SystemCoreClock / 1000000; ++i) {
__NOP(); // 空操作,用于防止编译器优化
}
}
} // 初始化SysTick定时器
void SysTick_Init(void) {
SystemCoreClockUpdate(); // 更新系统时钟
SysTick_Config(SystemCoreClock / 1000); // 设置每毫秒中断一次
}
// 毫秒级延时
void Delay_ms(uint32_t milliseconds) {
uint32_t start = SysTick->VAL;
uint32_t delayTicks = milliseconds * (SystemCoreClock / 1000);
while ((SysTick->VAL - start) < delayTicks) {
// 等待SysTick定时器达到指定延时
}
} 定时器 来生成一个精确的延时。在定时器中断处理程序中,可以实现需要延时的操作。 系统定时器实现延时功能。 提供实现延迟功能的函数。 延迟功能可以在系统中断服务程序中实现。 这种延时虽然简单,但是耗资源。 学习了 嵌入式的定时器模块,可以编写更切确的延时函数。 延迟功能可以通过使用计时器来实现。 上编写延时函数凡是有几种法子,详细的法子取决于您的需求以及利用场景。 定时器用于产生精确的延迟,在定时器中断处理程序中,可以实现需要延迟的操作。 体系定时器实现延时功效。 供给实现耽误功效的函数。 耽误功效可以在体系间断服务程序中实现。 虽然这种延迟很简单,但它会消耗资源。 一个嵌入式定时器模块可以用来编写更精确的延迟函数。 小华代理,有FAE,13538292986 这种不好用,还是用滴答定时器最方便
页:
1
[2]