单片机外设快速入门(三)——定时器篇

火影  金牌会员 | 2025-3-18 16:42:40 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 983|帖子 983|积分 2949

一. 定时器焦点概念

​定时器类型
​根本定时器(TIM6/TIM7)​:仅支持向上计数,用于简单计时。
​通用定时器(TIM2-TIM5)​:支持PWM、输入捕获、编码器模式。
​高级定时器(TIM1/TIM8)​:带死区控制,实用于电机控制。
​关键参数
​时钟源(Clock Source)​:内部时钟(APB总线)或外部信号。
​预分频器(Prescaler)​:将体系时钟分频后作为定时器时钟。
​自动重载值(AutoReload)​:界说计数器的最大值(决定溢出时间)。

二.底子设置步骤(以TIM2为例)


  • ​CubeMX设置
    ​Step 1:启用TIM2定时器,选择时钟源为内部时钟(Internal Clock)。
    ​Step 2:设置参数:
    Prescaler = 7199(若体系时钟72MHz → 72MHz/(7199+1)=10kHz)
    Counter Mode = Up(向上计数)
    AutoReload = 9999(计数器从0计数到9999)
    溢出时间 = (7199+1)*(9999+1)/72MHz = 1秒
    ​Step 3:启用中断(NVIC Settings → TIM2 global interrupt)。
    ​Step 4:天生代码。
  1. // main.c 中启动定时器
  2. HAL_TIM_Base_Start_IT(&htim2); // 启动定时器并启用中断
  3. // 定时器中断回调函数(在用户代码区添加)
  4. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
  5.     if (htim == &htim2) {
  6.         HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin); // LED每秒翻转一次
  7.     }
  8. }
复制代码
PWM输出设置(以TIM3_CH1为例)

  • ​CubeMX设置
    ​Step 1:启用TIM3,选择通道1为PWM Generation模式。
    ​Step 2:设置参数:
    Prescaler = 71(72MHz/(71+1) = 1MHz)
    AutoReload = 999(周期 = 1000个时钟 → 1MHz/1000 = 1kHz PWM频率)
    Pulse = 500(占空比 = 500/1000 = 50%)
    ​Step 3:天生代码。
  • ​代码实现
  1. // 启动PWM输出
  2. HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
  3. // 动态修改占空比(例如设置为75%)
  4. __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_1, 750); // Pulse值范围:0~999
复制代码
输入捕获(丈量脉冲宽度)

  • ​CubeMX设置
    ​Step 1:启用TIM4通道2为Input Capture模式。
    ​Step 2:设置边沿检测(Rising Edge或Falling Edge)。
    ​Step 3:启用捕获中断。
  1. // 启动输入捕获
  2. HAL_TIM_IC_Start_IT(&htim4, TIM_CHANNEL_2);
  3. // 输入捕获回调函数
  4. void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) {
  5.     if (htim == &htim4 && htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2) {
  6.         static uint32_t prev_value = 0;
  7.         uint32_t curr_value = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_2);
  8.         uint32_t pulse_width = curr_value - prev_value; // 计算脉冲宽度(单位:定时器时钟周期)
  9.         prev_value = curr_value;
  10.     }
  11. }
复制代码

三.定时器进阶利用





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

火影

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表