金牌会员
 
- 积分
- 1455
- 金钱
- 1455
- 注册时间
- 2020-6-18
- 在线时间
- 225 小时
|
1金钱
是这样的,我用PA1输出一个频率F可调,多少个脉冲X里可以缺失几个脉冲Y(X和Y都可调)。
TIM5负责输出频率F,占空比50%。TIM2负责输出F/X频率,占空比(Y/X)%。
理想情况下是频率少许误差,但是脉冲必须精准,像图一,频率9990Hz,X=10,Y=1。(就是10个脉冲就会少一个)
。
但是现在就是会出现像图二这样,两个定时器的开启时间有少许偏差,导致PWM没有重叠在一起。
为了避免这个问题,我在配置完PWM后加入了以下代码
RCC->APB1ENR &= ~9; //TIM2时钟不使能TIM5时钟不使能
TIM5->CR1 &= ~0x01; //不使能定时器5
TIM2->CR1 &= ~0x01; //不使能定时器2
TIM5->CR1 |= 1 << 1; //禁止定时器5的UEV
TIM2->CR1 |= 1 << 1; //禁止定时器2的UEV
TIM5->CNT = 0; //清空定时器5的计数器
TIM2->CNT = 0; //清空定时器2的计数器
TIM5->CR1 &= ~(1 << 1); //允许定时器5的UEV
TIM2->CR1 &= ~(1 << 1); //允许定时器2的UEV
TIM5->CR1 |= 0x01; //使能定时器5
TIM2->CR1 |= 0x01; //使能定时器2
RCC->APB1ENR |= 9; //TIM2时钟使能TIM5时钟使能
但是没用,我猜测是这里除了计数器清空,还得把进给计数器的清空,但是不知道怎么搞,想请问一下。。。
|
|