打印
[STM32F1]

使用定时器进行延时,而不涉及中断

[复制链接]
330|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
好几遍vh|  楼主 | 2024-2-23 23:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 好几遍vh 于 2024-2-23 23:35 编辑

如果你要使用定时器进行延时,而不涉及中断,你可以使用定时器的计数功能直接进行延时。下面是一般的步骤:
  • 配置定时器: 配置定时器为定时模式,选择适当的时钟源和分频器以获得期望的定时器时钟。
  • 设置计数初值: 将定时器的计数初值设置为0。
  • 启动定时器: 启动定时器,开始计数。
  • 延时等待: 在一个循环中,检查定时器的当前计数值是否达到你期望的延时时间。如果未达到,继续等待。
  • 停止定时器: 当计数值达到预定的延时时间后,停止定时器。


下面是一个简单的伪代码示例:


void delay_us(uint32_t us) {
    // 配置定时器
    configure_timer();

    // 设置计数初值
    set_timer_initial_value(0);

    // 启动定时器
    start_timer();

    // 等待计数值达到指定的延时时间
    while (get_timer_count() < us) {
        // 等待
    }

    // 停止定时器
    stop_timer();
}

上述代码中,configure_timerset_timer_initial_valuestart_timerget_timer_countstop_timer等函数需要根据你的具体芯片和开发环境来实现。请根据你的具体情况替换这些函数,并确保它们正确地配置和控制定时器。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

225

帖子

0

粉丝