[STM32F4] STM32F407的输出比较单元

[复制链接]
8|0
地瓜patch 发表于 2026-4-25 05:16 | 显示全部楼层 |阅读模式
在 STM32F407G 探索板 上实现输出比较单元功能。我能在开发板上看到 GPIO 翻转的输出效果。
我配置了 TIM1 及其 4 个通道,用于生成不同频率、不同脉冲宽度的输出,模式设置为 匹配时翻转。
但是我只在 while (1) 循环里看到一次翻转。这段代码写在 main 函数里。
请教需要在哪里修改?需要调整哪些参数?
代码如下:

while (1)
{
  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */
  if(HAL_TIM_OC_Start(&htim1, TIM_CHANNEL_1) == HAL_OK)
  {
          HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
          HAL_Delay(100);
  }
  if(HAL_TIM_OC_Start(&htim1, TIM_CHANNEL_2) == HAL_OK)
            {
                    HAL_GPIO_TogglePin(LD4_GPIO_Port, LD4_Pin);
                    HAL_Delay(200);
            }
  if(HAL_TIM_OC_Start(&htim1, TIM_CHANNEL_3) == HAL_OK)
            {
                    HAL_GPIO_TogglePin(LD5_GPIO_Port, LD5_Pin);
                    HAL_Delay(300);
            }
  if(HAL_TIM_OC_Start(&htim1, TIM_CHANNEL_4) == HAL_OK)
            {
                    HAL_GPIO_TogglePin(LD6_GPIO_Port, LD6_Pin);
                    HAL_Delay(400);
            }
}
GPIO 只翻转一次,之后就不再继续循环了。
是不是需要重置比较寄存器?
需要生成的频率如下:
TIM_CH1:1000Hz
TIM_CH2:1500Hz
TIM_CH3:2000Hz
TIM_CH4:2500Hz

您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:出一块TI-PLABS-AMP-EVM

2567

主题

16921

帖子

30

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