前言
最近博主在尝试驱动SG90舵机的时候,发现网上教程都是通过定时器的方式,还要进行各种配置,太麻烦了,于是自己用延时简单写了一下,也能用。
舵机的控制
舵机控制就是需要一个20ms的脉冲信号,通过高电平的持续时间来转动不同的角度,很多人都说通过定时器来产生这个脉冲,但是如果只是简单的处理,直接用延时处理就行了
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190721173350167.gif#pic_center)
代码
void Init_SG90(void)
{
GPIO_InitTypeDef temp;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
temp.GPIO_Mode=GPIO_Mode_Out_PP;
temp.GPIO_Pin=GPIO_Pin_8;
temp.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&temp);
}
void Control_SG90(uint32_t us)
{
int i=0;
for(i=0;i<10;i++)
{
if(us<=20000)
{
PBout(8)=1;
delay_us(us);
PBout(8)=0;
delay_us(20000-us);
}
}
}
直接通过延时模拟就行,注意不要直接使用delay_ms,参数都说uint类型的,2.5这种浮点数会被隐式转换掉然后导致转动角度不符合。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)