OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5587|回复: 5

写的舵机程序没用,舵机就是不转啊,代码如下,大佬们帮我看看。

[复制链接]

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2021-3-28
在线时间
27 小时
发表于 2021-7-12 14:33:33 | 显示全部楼层 |阅读模式
1金钱
void TIM3_PWM_Init(u16 arr,u16 psc)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
        TIM_OCInitTypeDef TIM_OCInitStructure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
       
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
       
        GPIO_Init(GPIOA,&GPIO_InitStructure);
        GPIO_ResetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_7);
       
        GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);
       
        TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
        TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;//计数模式.向上计数
        TIM_TimeBaseInitStructure.TIM_Period=arr;
        TIM_TimeBaseInitStructure.TIM_Prescaler=psc;//预分频系数
       
        TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);
       
        TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;//设置输出比较模式.模式2
        TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//设置输出极性
        TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//输出状态.输出
        TIM_OCInitStructure.TIM_Pulse=1;
       
        TIM_OC1Init(TIM3,&TIM_OCInitStructure);
        TIM_OC2Init(TIM3,&TIM_OCInitStructure);
       
        TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable);
        TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);
       
        TIM_Cmd(TIM3,ENABLE);
}

int main(void)
{
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        delay_init();
        TIM3_PWM_Init(19999,71);
        while(1)
        {       
                TIM_SetCompare1(TIM3,500);
                TIM_SetCompare2(TIM3,500);
                delay_ms(1000);
                TIM_SetCompare1(TIM3,1500);
                TIM_SetCompare2(TIM3,1500);
                delay_ms(1000);

        }
}



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

3386

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8625
金钱
8625
注册时间
2020-5-11
在线时间
4056 小时
发表于 2021-7-13 10:57:42 | 显示全部楼层
有拿示波器看输出方波了吗?
专治疑难杂症
回复

使用道具 举报

13

主题

644

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1995
金钱
1995
注册时间
2021-4-16
在线时间
509 小时
发表于 2021-7-13 11:11:38 | 显示全部楼层
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);重映射了后CH1和CH2重映射到了PB4、PB5,你的接线是否正确呢?
回复

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2021-3-28
在线时间
27 小时
 楼主| 发表于 2021-7-14 17:43:30 | 显示全部楼层
疾如风 发表于 2021-7-13 11:11
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);重映射了后CH1和CH2重映射到了PB4、PB5,你的接线是 ...

是正确的,while(1)循环有问题,舵机只会转一下之后回零,不知道为什么
回复

使用道具 举报

4

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2021-3-28
在线时间
27 小时
 楼主| 发表于 2021-7-14 17:45:33 | 显示全部楼层
LcwSwust 发表于 2021-7-13 10:57
有拿示波器看输出方波了吗?

while里面用一个for循环就会有方波,不用就没有。这是为什么?
回复

使用道具 举报

82

主题

550

帖子

0

精华

高级会员

Rank: 4

积分
778
金钱
778
注册时间
2014-9-30
在线时间
133 小时
发表于 2021-7-14 19:32:05 | 显示全部楼层
fjhdfu 发表于 2021-7-14 17:45
while里面用一个for循环就会有方波,不用就没有。这是为什么?

我的个天:输出 900uS 到 2100uS  占空比 的 方波 。

老式 舵机 重复频率 只能 50Hz  新式舵机 可以 333Hz
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-8 11:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表