大家注意,STM32的HAL库有问题,所有的STM32的HAL库里的产生PWM时,如果要在TIMx_CHxN产生PWM时,都无法正常开启,我试了STM32F1系列的和STM32L4系列的,都会有有问题,如果使用在TIMx_CHx产生PWM时,不会有问题,发现HAL库中有个BUG,在stm32f1xx_hal_tim.c 中的TIM_OC1_SetConfig,TIM_OC2_SetConfig,TIM_OC3_SetConfig函数中有个 tmpccer &= ~TIM_CCER_CC1NE;需要改为 tmpccer |= TIM_CCER_CC1NE;才可以正常输出,大家使用是注意一下。 |
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3);
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1);
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_2);
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_3);
三个通道的PWM互补启动,添上这六句,就可以了
评分
查看全部评分
HAL把启动PWM这一步留给用户来操作,既然使用HAL,就不用进行寄存器操作模式了,而是:
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);
这应该不是bug吧!
评分
查看全部评分
用定时器产生PWM,用过的表示毫无问题。PWM是太常用的东西了,如果有BUG也老早就解决了!
毕竟是库,请尊重一下ST的工程师的。
评分
查看全部评分
至于tmpccer |= TIM_CCER_CC1NE,还要防止错误造成将辅助通道关闭而不是开启。
评分
查看全部评分
评分
查看全部评分
评分
查看全部评分
“尊重一下ST的工程师”,支持,按流行语就是圈起来,要考的
评分
查看全部评分
已经验证,四楼正解,库改为默认的,通过HAL_TIMEx_PWMN_Start()函数可以配置OK。
你好,请问能分享下用定时器产生PWM然后从端口输出的程序吗