[STM32F1] STM32延时函数三种实现方法

[复制链接]
6695|33
eefas 发表于 2024-5-13 22:56 | 显示全部楼层
这是一种最简单的延时方法,通过循环等待实现延时。但这种方**占用CPU资源,且延时的精度受系统时钟频率的影响。通常不建议在需要高精度延时的场合使用这种方法。
kkzz 发表于 2024-5-14 11:08 | 显示全部楼层
使用循环计数实现延时函数是一种简单的方法,但它的准确性取决于编译器优化和处理器速度。
vivilyly 发表于 2024-5-14 19:32 | 显示全部楼层
SysTick定时器是STM32内置的一个定时器,可以用来生成周期性中断。通过设置SysTick定时器的频率和计数值,你可以实现延时功能。
cashrwood 发表于 2024-5-15 11:59 | 显示全部楼层
void Delay_ms(uint16_t ms)
{
    uint32_t i, j;
    for(i = 0; i < ms; i++)
    {
        for(j = 0; j < 1000; j++)
        {
            // 这里的空循环消耗时间
        }
    }
}
saservice 发表于 2024-5-15 16:03 | 显示全部楼层
void delay_ms(uint32_t ms)
{
   uint32_t current_tick = SysTick->VAL;
   uint32_t delay_tick = SystemCoreClock / 1000 * ms;
   
   while(delay_tick > current_tick)
   {
       current_tick = SysTick->VAL;
   }
}
modesty3jonah 发表于 2024-5-15 19:13 | 显示全部楼层
STM32 内部集成了一个 SysTick 定时器,它是 ARM Cortex-M 系列处理器的一部分。这个定时器可以用来实现精确的延时功能。通过配置 SysTick 定时器的 reload 寄存器和控制寄存器,可以实现微秒、毫秒甚至是秒级别的延时。
alvpeg 发表于 2024-5-16 12:13 | 显示全部楼层
void delay_ms(uint16_t ms){   uint32_t i, j;   for(i = ms; i > 0; i--)       for(j = 0; j < 1000; j++);  // 这里根据实际CPU频率调整循环次数}
usysm 发表于 2024-5-16 16:09 | 显示全部楼层
普通延时法              
lzmm 发表于 2024-5-16 19:18 | 显示全部楼层
利用STM32的定时器功能,设置好相应的预分频和重载值,启动定时器后,定时器会自动计数,当达到预设的值时,可以通过中断或查询的方式来通知CPU延时结束。这种方法不占用CPU资源,可以实现精确延时。
louliana 发表于 2024-5-16 23:02 | 显示全部楼层
使用STM32的SysTick定时器或外部中断源,当某个事件触发或时间到达预设值时,产生中断信号,CPU响应中断服务程序来处理后续动作。这种方法同样可以实现较为精确的延时,并且可以在延时过程中让CPU去执行其他任务。
uytyu 发表于 2024-5-17 11:29 | 显示全部楼层
通用定时器(TIM),它们可以被配置为具有多种功能,其中包括延时功能。通用定时器通常可以产生比较精确的定时事件
wwppd 发表于 2024-5-17 14:34 | 显示全部楼层
void Delay_ms(uint32_t ms) {
    uint32_t i, j;
    for (i = 0; i < ms; i++) {
        for (j = 0; j< SystemCoreClock / 1000; j++) {
            __NOP();
        }
    }
}
天天向善 发表于 2024-5-21 14:09 | 显示全部楼层
延迟是通过循环等待来实现的,但是这种方法消耗了 CPU 资源,延迟的准确性受到系统时钟频率的影响。
Pretext 发表于 2024-6-22 15:57 | 显示全部楼层
延迟是通过循环等待来实现的,但是这种方**消耗 CPU 和资源,而且延迟的准确性会受到系统时钟速率的影响。
童雨竹 发表于 2024-9-6 07:02 | 显示全部楼层

这些引线越窄越好
童雨竹 发表于 2024-9-6 07:02 | 显示全部楼层

这些引线越窄越好
童雨竹 发表于 2024-9-6 07:02 | 显示全部楼层

这些引线越窄越好
Wordsworth 发表于 2024-9-6 08:05 | 显示全部楼层

图像由前景和背景组成,在灰度直方图上,前景和背景会形成高峰,在双峰之间的最低谷处就是阈值。
Clyde011 发表于 2024-9-6 09:08 | 显示全部楼层

要将多余空间去除。对于第一个字符从第一行开始向下扫描,把那些一行中所有的点的灰度值全为0的点去掉,直到扫描到有一行不全为0时为止。
公羊子丹 发表于 2024-9-6 10:01 | 显示全部楼层

输入滤波电容的公共端应作为其他交流电流地的唯一接点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部