stm32f031 hal pwm周期频率计算和配置以及无输出的解决办法

单片机内部时钟pll到48

arr即 hal的AutoRload Register 这里我配置为499

psc即hal的Prescaler这里我配置为47

输出频率计算办法

那么频率最终就是Fclk/arr+1(1000 000/500=2000hz)

溢出时间Tout=((arr+1)*(psc+1))/Fclk 。单位 us.

Fclk单位是Mhz

这里500*48/48=500us;

stm32f031 hal pwm周期频率计算和配置以及无输出的解决办法

 

 

 stm32f031 hal pwm周期频率计算和配置以及无输出的解决办法

 

 

 但是死活没有输出,这就很奇怪

前几天用还好好好呢

挠破头也没搞定,后来把前几天的代码片段抄过来,可以了,经过仔细对比发现

原来是用了,选了HAL_TIMEx_PWMN_Start ,习惯输入前几个字母然后自动补全,于是乎,

 这两个函数没看清

HAL_TIM_PWM_Start(&htim17,TIM_CHANNEL_1);这个可以
HAL_TIMEx_PWMN_Start(&htim17,TIM_CHANNEL_1);这个不可以

 

stm32f031 hal pwm周期频率计算和配置以及无输出的解决办法然后根据需要调节占空比,hal没有提供函数,自己封装一个吧

void TIM_SetTIM17duty(uint16_t compare)
{
    TIM17->CCR1=compare;//tim17只有一个通道
}

 

 

占空比0stm32f031 hal pwm周期频率计算和配置以及无输出的解决办法

 

 占空比100%,并不能实现全部高电平,还会有一个小的低电平,1us

stm32f031 hal pwm周期频率计算和配置以及无输出的解决办法

 

 解决办法就是让ARR多增加1,arr现在配置为499,那么就让他加到500,这样就可以100%占空比了

stm32f031 hal pwm周期频率计算和配置以及无输出的解决办法

 

 

 

对于f031只有tim1才有n输出,其他的都是没有的

但是研究了一下

选中为了某通道就无法选中某通道的N

上一篇:TMS320F28388D 学习笔记2 高精度PWM (HRPWM)


下一篇:比例阀驱动电路后级PWM滤波尖刺如何消除?PWM通过RC低通滤波器模拟DAC