引脚介绍:

 引脚都是兼容的三根线排列一致,分别是GND(棕色)、VCC(红色)、PWM(黄色)

时序

驱动程序

void TIM3_PWM_Init(u16 arr,u16 psc)
{  GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;TIM_OCInitTypeDef  TIM_OCInitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);   //使能定时器3时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外设和AFIO复用功能模块时钟GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3部分重映射  TIM3_CH2->PB5    //设置该引脚为复用输出功能,输出TIM3 CH2的PWM脉冲波形    GPIOB.5GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //TIM_CH2GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIO//初始化TIM3TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_timTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位//初始化TIM3 Channel2 PWM模式    TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性高TIM_OC2Init(TIM3, &TIM_OCInitStructure);  //根据T指定的参数初始化外设TIM3 OC2TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);  //使能TIM3在CCR2上的预装载寄存器TIM_Cmd(TIM3, ENABLE);  //使能TIM3
}
int main(void){      u16 led0pwmval=50;u8 dir=1;   delay_init();            //延时函数初始化    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);    //设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(115200);  //串口初始化为115200LED_Init();               //LED端口初始化TIM3_PWM_Init(1999,719);  //不分频。PWM频率=100000/2000=50hzwhile(1){delay_ms(100);   if(dir)led0pwmval++;else led0pwmval--;if(led0pwmval>249)dir=0;if(led0pwmval==50)dir=1;                                         TIM_SetCompare2(TIM3,led0pwmval);  printf("PWM:%d\r\n",led0pwmval);//查看占空比}   }

STM32——MG90S数字舵机驱动相关推荐

  1. stm32按键控制mg90s数字舵机、pwm调节舵机转动角度

    昨天做了一个简答的小实验,我感觉挺有意思的跟大家分享一下. 我用了按键控制mg90s数字舵机,前不久一直研究模拟舵机,数字舵机与模拟舵机的控制方式是一样的pwm时序. 数字舵机接线方面: 与模拟舵机一 ...

  2. 舵机使用基础(SG90模拟舵机和MG90S数字舵机为例)(附驱动程序)

    工作环境(蓝色粗体字为特别注意内容) 1.系统环境:SG90模拟舵机.MG90S数字舵机.12C5A60S2单片机 2.参考文献: 很多不是航模或者机器人爱好者的同学可能舵机了解比较少,笔者也一样,只 ...

  3. STM32的SG90舵机驱动

    今天来讲一下如何使用STM32来驱动SG90舵机 舵机:舵机是一种位置(角度)伺服的驱动器,适用那些需要角度不断变化并可以保持的控制系统.舵机只是一种通俗的叫法,其实质是一个伺服马达. 驱动SG90舵 ...

  4. STM32CubeMX(09)MG90S舵机驱动实验

    文章目录 前言 一.舵机是什么? 二.STM32CubeMX配置 2.1时钟树配置 2.2定时器配置 2.3生成代码 三.代码编写 四.测试结果 注意: 总结 前言 今天我们来学习使用一下舵机,并用S ...

  5. 串行舵机/数字舵机的替代方案,低成本的舵机级联方案。数字舵机的驱动芯片。普通舵机改数字舵机

    数字舵机顾名思义就是用数字的信号去驱动,多数的为UART总线,通讯模式为一主多从,总线上可以挂载多个设备,每个设备都有固定的IP地址,只有收到匹配对应的地址的设备,后面的数据才有效.一共用了TX,VC ...

  6. STM32 F767控制舵机

    STM32 F767 控制舵机 前两天用阿波罗f7的开发板做了一下舵机控制,写个笔记做个记录以便以后复习,有错误的地方希望大家批评指正. 1. 舵机介绍 2. PWM信号产生原理 3. STM32 F ...

  7. STM32 PWM控制舵机——原理、接线、源程序

    STM32--PWM 控制舵机 通用定时输出PWM PWM的工作原理 PWM的模式 TIM_OCMode_PWM1 (边沿对齐模式) TIM_OCMode_PWM2(中央对齐模式) 占空比 舵机 实物 ...

  8. Baize_ServoDriver_esp8266-(arduino32路舵机驱动板)(开源可自制,附程序和固件以及烧录方法)

    导航在这里:白泽六足机器人_arduino_v1 介绍 先放资料 github:GitHub - Allen953/Baize_ServoDriver_esp8266 立创开源地址:https://o ...

  9. 舵机应该如果选择?讲讲模拟舵机,数字舵机和总线舵机的区别

    推荐视频:模拟舵机,数字舵机和总线舵机科普 :舵机从入门到放弃: 很多时候,我们购买舵机就只知道考虑扭矩以及控制方式.对舵机的分类有所耳闻,但是不清楚其中的区别.接下来我将详细说明模拟舵机,数字舵机和 ...

最新文章

  1. TensorFlow——入门基础
  2. 面临找工作,要记住给自己的这些话。
  3. 使用 Google Calendar 免费自动发送手机短信、Email 的方法
  4. 阅读微信支付demo收获
  5. php使用redis生成自增序列号码,Redis使用Eval多个键值自增的操作实例
  6. css预编译工具less使用心得
  7. 739. 每日温度 golang
  8. Arrays类的排序(sort、parallelsort)
  9. (43)生成时钟Generated Clock简介
  10. 常用docker命令
  11. Nginx查看并发链接数
  12. erlang注意(经典)
  13. 你想进BAT吗?告诉你一个秘密,面试成功率能提高到99%!
  14. Netflix推出Hollow,处理内存数据集的Java库
  15. Tomcat监控利器Probe
  16. linux 单网卡 双ip,Linux操作系统单网卡双IP的设置
  17. hd4400 显卡opencore 下的 8个苹果问题解决方法
  18. pcie link/lane number negotiation
  19. 如何使用代理服务器上网
  20. 『UE4数字孪生』开发流程浅析(持续更新)

热门文章

  1. UILabel的使用
  2. 新整理常见互联网公司职级和薪资一览!
  3. Apriori算法和FP-Tree算法简介
  4. self.canv.bookmarkPage(key, left=inch*0.5) ,为什么在reportlab中设置的缩进不生效?
  5. c语言s10 是什么意思啊,【S10】A.FortunatelyB.ComparativelyC.ConsequentlyD.Conversely - 试题答案网问答...
  6. vscode 中C++运行编译运行多文件问题总结
  7. unity字体外发光_【Unity学习心得】Sprite外发光的制作
  8. mysql新加一列_mysql如何增加表中新的列?
  9. chrome firefox 获取模拟微信浏览器
  10. 第十七届“科大讯飞杯”题解