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

[复制链接]
538|0
 楼主| 好几遍vh 发表于 2024-2-23 23:28 | 显示全部楼层 |阅读模式
本帖最后由 好几遍vh 于 2024-2-23 23:35 编辑

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


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


  1. void delay_us(uint32_t us) {
  2.     // 配置定时器
  3.     configure_timer();

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

  6.     // 启动定时器
  7.     start_timer();

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

  12.     // 停止定时器
  13.     stop_timer();
  14. }

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

本版积分规则

32

主题

252

帖子

0

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