OpenEdv-开源电子网

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

STM32F407用PA2口控制舵机,舵机偏转的角度很小,按理说应该偏转90度的

[复制链接]

3

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2019-5-21
在线时间
22 小时
发表于 2019-8-6 10:10:35 | 显示全部楼层 |阅读模式
5金钱
PWM.C

#include "PWM.H"


void TIM9_PWM_Init(u32 arr,u32 psc)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
        TIM_OCInitTypeDef TIM_OC1InitStcuctre;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM9,ENABLE);
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
       
  //GPIOA2,A7初始化设置
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//普通复用模式
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO
       
        GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_TIM9);
       
        TIM_TimeBaseInitStructure.TIM_Period = arr;         //自动重装载值
        TIM_TimeBaseInitStructure.TIM_Prescaler=psc;  //定时器分频
        TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
        TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
        TIM_TimeBaseInit(TIM9,&TIM_TimeBaseInitStructure);//初始化TIM9
       
        TIM_OC1InitStcuctre.TIM_OCMode=TIM_OCMode_PWM1;
        TIM_OC1InitStcuctre.TIM_OutputState=TIM_OutputState_Enable;
        TIM_OC1InitStcuctre.TIM_OCPolarity=TIM_OCPolarity_Low;
        TIM_OC1Init(TIM9,&TIM_OC1InitStcuctre);
       
        TIM_OC1PreloadConfig(TIM9,TIM_OCPreload_Enable);
       
        TIM_ARRPreloadConfig(TIM9,ENABLE);
       
        TIM_Cmd(TIM9,ENABLE);
       
}


main.c文件

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "pwm.h"

int main(void)
{

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
        delay_init(168);  //初始化延时函数
        TIM9_PWM_Init(2000-1,84-1);//50Hz
        LED_Init();
   while(1)
        {
                LED0=0;
//                delay_ms(1000);       
//                TIM_SetCompare1(TIM9,100);       
        delay_ms(500);       
                TIM_SetCompare1(TIM9,100);       
        delay_ms(500);       
        TIM_SetCompare1(TIM9,200);       
                delay_ms(500);
        }//修改比较值,修改占空比
}




























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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2019-8-7 02:14:16 | 显示全部楼层
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2019-9-20
在线时间
1 小时
发表于 2019-10-23 11:04:08 | 显示全部楼层
麻烦问一下如果用TIM9的话,对应的PA7引脚上没有TIM9的通道啊?
回复

使用道具 举报

28

主题

294

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1790
金钱
1790
注册时间
2018-3-26
在线时间
294 小时
发表于 2019-10-23 14:41:48 | 显示全部楼层
TIM9 的 PA2 PA3对应CH1 CH2  ,PE5 PE6对应的CH1  CH2,没有PA7
茵茵猪头
回复

使用道具 举报

28

主题

294

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1790
金钱
1790
注册时间
2018-3-26
在线时间
294 小时
发表于 2019-10-23 14:43:34 | 显示全部楼层
并且初始化中,TIM9_PWM_Init(2000-1,84-1); 是对应500Hz 不是 50Hz。
茵茵猪头
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2019-11-23
在线时间
3 小时
发表于 2019-11-23 22:01:04 | 显示全部楼层
帮顶。。。。。
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2019-11-25
在线时间
5 小时
发表于 2019-11-27 09:37:37 | 显示全部楼层
你这……真的大材小用呀,407搞这个……,51都能做,我这儿有一个程序,上周在公司做的,有手动和自动模式,你要的话我发你
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
22
金钱
22
注册时间
2019-11-25
在线时间
5 小时
发表于 2019-11-27 09:38:17 | 显示全部楼层
CardType 发表于 2019-11-27 09:37
你这……真的大材小用呀,407搞这个……,51都能做,我这儿有一个程序,上周在公司做的,有手动和自动模式 ...

我是用的mini板子做的  
回复

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
48
金钱
48
注册时间
2019-8-23
在线时间
15 小时
发表于 2019-11-30 21:06:08 | 显示全部楼层
楼主你舵机应该不是偏转很小,应该是一动不动吧?楼上大神说了应该是500hz,这个范围应该在 TIM9,1100~1999舵机才有反应   
回复

使用道具 举报

1

主题

41

帖子

0

精华

高级会员

Rank: 4

积分
504
金钱
504
注册时间
2019-3-21
在线时间
103 小时
发表于 2019-12-3 10:13:15 | 显示全部楼层
检查波形是否正确,波形没问题就是电源的问题
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2019-12-4
在线时间
2 小时
发表于 2019-12-6 10:40:54 | 显示全部楼层
arr设到了2000,但ccr设到200,太小了,反应不出来啊。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-23 15:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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