金牌会员
 
- 积分
- 1635
- 金钱
- 1635
- 注册时间
- 2012-8-28
- 在线时间
- 71 小时
|
发表于 2020-12-20 20:26:24
|
显示全部楼层
 这句错了吧? TIM1->CCER |= 0x1ddd; 你默认的是高电平吗?比较值后,你又输出高电平?你试试PWM2模式
TIM1->CCER |= 0x1ddd;//使能比较输出
TIM1->BDTR|=0xCD;     // 死区时间设定
这2个寄存器验证过没?你cubemax先取消刹车脚,把CH通道设置空闲高电平,向上计数,CCER配置成比较器后低电平。(cc1p设置成1试试)
这样启动定时器,是先高电平(空闲,cnt值小于ccr值),之后CNT大于CCR值会输出低电平。唯一区别是BDTR的MOE要置1
可以看看f103参考手册245页,那张表格解释了通道输出的必要条件。
好多设置会翻转电平,比如空闲你设置低电平,比较输出后你又设置低电平,这会导致没有输出。
我也郁闷了几天,之前操作寄存器都成功开启pwm,结果换HAL库就是不行,2个例程仿真后发现CCER寄存器没开。
希望我的回答帮到你。
一般PWM控制舵机,定时器72MHZ你就要分频72得到1us变化一次,你再设置重载值20000这样每20000us就CNT循环一次。比较器你设置500这样就相当于20ms周期,0.5ms比较。(20000us=20ms)
舵机是20ms周期,0.5~2.5ms的高电平控制偏转角度(一般对应0~180度) |
|