在 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
|
|