当前位置:   article > 正文

STM32F103控制舵机(1)_stm32f103 pid舵机

stm32f103 pid舵机

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;//配置GPIO引脚
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//配置GPIO速率
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//配置GPIO为复用推挽输出
GPIO\_Init(GPIOB,&GPIO_InitStructure);//GPIO初始化函数

TIM_TimeBaseStruct.TIM_Period=9999;//设置自动重装载的周期值,计算方法多了
TIM_TimeBaseStruct.TIM_Prescaler=143;//设置预分频系数
TIM_TimeBaseStruct.TIM_ClockDivision=0;//设置时钟分割,0同TIM\_CKD\_DIV1
TIM_TimeBaseStruct.TIM_CounterMode=TIM_CounterMode_Up;//向上计数模式
TIM\_TimeBaseInit(TIM4,&TIM_TimeBaseStruct);//定时器初始化函数

TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;//PWM模式1
TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;//比较输出使能
TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;//输出比较极性高
//多舵机,怎么控制,当然是同一个定时器下的4个通道了,所以,下面的8句就很重要。
TIM\_OC1Init(TIM4,&TIM_OCInitStructure);//比较输出初始化函数,通道1
TIM\_OC2Init(TIM4,&TIM_OCInitStructure);//比较输出初始化函数,通道2
TIM\_OC3Init(TIM4,&TIM_OCInitStructure);//比较输出初始化函数,通道3
TIM\_OC4Init(TIM4,&TIM_OCInitStructure);//比较输出初始化函数,通道4

TIM\_OC1PreloadConfig(TIM4,TIM_OCPreload_Enable); //输出比较1预装载寄存器使能
TIM\_OC2PreloadConfig(TIM4,TIM_OCPreload_Enable);//输出比较2预装载寄存器使能
TIM\_OC3PreloadConfig(TIM4,TIM_OCPreload_Enable);//输出比较3预装载寄存器使能
TIM\_OC4PreloadConfig(TIM4,TIM_OCPreload_Enable);//输出比较4预装载寄存器使能

TIM\_Cmd(TIM4,ENABLE);//TIM4使能,忘了就前功尽弃了
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

}


头文件



  • 1
  • 2
  • 3
  • 4
  • 5

#ifndef __SERVO_H
#define __SERVO_H

#include “stm32f10x.h”
#include “stm32f10x_rcc.h”
#include “stm32f10x_tim.h”

void Servo_PWM_Init(void);

#endif


最后,最关键的来了,如何使用呢?当然是一句函数了。修改定时器下某一个通道的函数,TIM\_SetCompare1(TIM4, 500); 注意:修改哪一个通道的占空比,就要把那个数字1修改为几。  
 main函数中调用



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

int main()
{
/*初始化此处省略*/
while(1)
{
TIM_SetCompare1(TIM4,400);//时间到关闭
delay_ms(500);//此处就看你舵机性能了,连续动作时,如果能反应过来,就不用加延时了,自己实践找规律吧。
TIM_SetCompare1(TIM4,1000);//时间到关闭
delay_ms(500);
//其它舵机也是一样的,TIM_SetCompareX(TIM4,Compare);//时间到关闭
}
}


3、备注  
 关于不同占空比,对应舵机的角度,这个自己探索吧。计算也很好理解。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20201121140534633.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoaXl1YW54dWFuMzY5,size_16,color_FFFFFF,t_70#pic_center)  
 4、如果有错误,请大家积极指出,多谢。



![img](https://img-blog.csdnimg.cn/img_convert/29b31c2bde7fb4ea034fc104515bcaf5.png)
![img](https://img-blog.csdnimg.cn/img_convert/3a36ea21989efdaeb1a07a3efc72e2c9.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新**

**需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618679757)**

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/938497
推荐阅读
相关标签
  

闽ICP备14008679号