|
在編寫用PWM來控制舵機轉(zhuǎn)動的32程序中,因為找不到如何讓它轉(zhuǎn)動適當(dāng)?shù)慕嵌,所以詢問了學(xué)長,知道了舵機轉(zhuǎn)動0度代表它的占空比是2.5%,轉(zhuǎn)動180度代表它的占空比是12.5%。
即設(shè)arr(自動重裝載值)為x時。
轉(zhuǎn)動角度所對應(yīng)的值=(x+1)*(1-占空比)(將PWM極性設(shè)置為TIM_OCPolarity_High時)
程序如下:
int main(void)
{
delay_init(); //延時函數(shù)初始化
LED_Init(); //LED端口初始化
TIM2_PWM_Init(1999,719); //不分頻,PWM頻率=72000000/720/2000=50hz
while(1)
{
TIM_SetCompare2(TIM2,1950); //對應(yīng)0度 2.5%
delay_ms(1000);
TIM_SetCompare2(TIM2, 1900); //對應(yīng)45度 5%
delay_ms(1000);
TIM_SetCompare2(TIM2, 1850); //對應(yīng)90度 7.5%
delay_ms(1000);
TIM_SetCompare2(TIM2, 1800); //對應(yīng)135度 10%
delay_ms(1000);
TIM_SetCompare2(TIM2,1750); //對應(yīng)180度 12.5%
delay_ms(1000);
}
}
轉(zhuǎn)動角度所對應(yīng)的值=(x+1)*占空比(將PWM極性設(shè)置為TIM_OCPolarity_Low時),程序如下:
int main(void)
{
delay_init(); //延時函數(shù)初始化
LED_Init(); //LED端口初始化
TIM2_PWM_Init(1999,719); //不分頻,PWM頻率=72000000/720/2000=50hz
while(1)
{
TIM_SetCompare2(TIM2,250); //對應(yīng)180度 12.5%
delay_ms(1000);
TIM_SetCompare2(TIM2, 200); //對應(yīng)135度 10%
delay_ms(1000);
TIM_SetCompare2(TIM2, 150); //對應(yīng)90度 7.5%
delay_ms(1000);
TIM_SetCompare2(TIM2, 100); //對應(yīng)45度 5%
delay_ms(1000);
TIM_SetCompare2(TIM2,50); //對應(yīng)0度 2.5%
delay_ms(1000);
}
}用詞如有不妥,請及時指出,多謝
|
評分
-
查看全部評分
|