寄存器的 pwm输出控制舵机,舵机一直抖,求教错哪了?拜托
#include"stm32f10x.h"#include"delay.h"
#include"mokuai.h"
#include"usart.h"
void TIM1_PWM_Init(u16 arr,u16 psc) //周期分频
{ //定时器1 的CH2PWM输出初始化
RCC->APB2ENR|=1<<11; //定时器1使能
RCC->APB2ENR|=1<<2; //IO口A时钟使能
GPIOA->CRH&=0XFFFFFF0F; //设置A9为推挽复用输出
GPIOA->CRH|=0X000000B0;
GPIOA->ODR=1<<9;
TIM1->ARR|=arr;
TIM1->PSC|=psc;
TIM1->CCMR1=6<<12; //PWM 模式1
TIM1->CCMR1=1<<11; //预装载使能
TIM1->CCER|=1<<4; //CO1输出使能
TIM1->CR1=0x0080; //设置第7位 使能缓冲器
TIM1->CR1|=0x01;
}
int main(void)
{
Stm32_Clock_Init(9);
delay_init(72);
TIM1_PWM_Init(14400,99); //周期20ms
while(1)
{
delay_ms(500);
TIM1->CCR2=1080;
delay_ms(500);
TIM1->CCR2=1700;
delay_ms(500);
TIM1->CCR2=500;
}
}
麻烦帮我看看我错哪了,我查了网上别人写的,没什么不一样的啊,帮我看一下吧,谢谢了 最简单接示波器看输出波形靓不靓,空载看和接电机看,没做隔离的话会不会是电极那边的干扰 主循环里不就是让它抖吗,抖动周期 1.5秒啊 delay_ms(500);
TIM1->CCR2=1080;
delay_ms(500);
TIM1->CCR2=1700;
delay_ms(500);
TIM1->CCR2=500;
这个 不是一个周期性 变化的吗。 加delay然后占空比突变,不抖动就才怪 试一下用,PWM慢慢累加,不要突然变化。 ->加减速! 检查循环,看看是不是第一个或最后一个错行 PWM频率太低了。 查问题需要看波形,这是最快方法
页:
[1]