TIM1_PWM_Init(4999,287);//50hz
while(1)
{
delay_ms(100);
if(dir) t=t+20;
else t=t-20;
if(t>660)dir=0;
if(t==140)dir=1;
// printf("t:%d\n",t);
TIM_SetCompare1(TIM1,t);
}
} 这段程序还能使舵来回转,pwm波形正确
但这段程序用示波器检测pwn都没有,舵机不动,用串口打印调试如图所示
while(1)
{
delay_ms(100);
dianpin= GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1);//红外检测是否有人,有人输出高电平
printf("%d\n",dianpin);用串口调试,观看对着人与不对着人的电平高低变化
if(!dianpin)//没检测到人,让舵机转动检测
{
delay_ms(20000);
if(dir) t=t+20;
else t=t-20;
if(t>660) dir=0;
if(t==140)dir=1;
TIM_SetCompare1(TIM1,t);
}
else//检测到人,舵机在原来的位置停止
{
delay_ms(1000);
TIM_SetCompare1(TIM1,t);
}
printf("t:%d\n ",t); //用串口调试观察t的值
}
}
不对着人,串口打印如图所示 对着人打印如下:
|