我遇到了一个奇怪的问题,我似乎无法理解。我正在使用STM32F411开发板和ST32CubeIDE(基于日食)。我想使用PWM,因此我已使用cubeMX在PWM输出模式下配置TIM4,并具有适合我想要的PWM频率/脉冲宽度的预分频器和负载值。我还为TIM4启用了全局中断,因为稍后我想使用HAL_TIM_PWM_PulseFinishedCallback
函数。
在主循环之前,我这样初始化TIM4和所有4个通道:
HAL_TIM_PWM_Start_IT(&htim4, TIM_CHANNEL_1); //Start up PWM
HAL_TIM_PWM_Start_IT(&htim4, TIM_CHANNEL_2); //Start up PWM
HAL_TIM_PWM_Start_IT(&htim4, TIM_CHANNEL_3); //Start up PWM
HAL_TIM_PWM_Start_IT(&htim4, TIM_CHANNEL_4); //Start up PWM
然后在我手动设置PWM脉冲宽度之后:
htim4.Instance->CCR1 = 100;
htim4.Instance->CCR2 = 100;
htim4.Instance->CCR3 = 100;
htim4.Instance->CCR4 = 100;
但是,由于某些原因,当我将编译器优化设置为“优化速度-Ofast” *时,程序似乎在最后一行之后卡住了,而调试时却设置了CCR4,并且无法进行。
仅当启用编译器速度优化时,此仅发生。默认情况下,它设置为优化调试,这样很好。
答案 0 :(得分:1)
除调试之外的其他任何操作都会使调试器感到困惑。
您可以尝试的操作:(您没有指定工具链,我假设它是基于eclipse / gcc的。)