STM32——MG90S数字舵机驱动
引脚介绍:
引脚都是兼容的三根线排列一致,分别是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数字舵机驱动相关推荐
- stm32按键控制mg90s数字舵机、pwm调节舵机转动角度
昨天做了一个简答的小实验,我感觉挺有意思的跟大家分享一下. 我用了按键控制mg90s数字舵机,前不久一直研究模拟舵机,数字舵机与模拟舵机的控制方式是一样的pwm时序. 数字舵机接线方面: 与模拟舵机一 ...
- 舵机使用基础(SG90模拟舵机和MG90S数字舵机为例)(附驱动程序)
工作环境(蓝色粗体字为特别注意内容) 1.系统环境:SG90模拟舵机.MG90S数字舵机.12C5A60S2单片机 2.参考文献: 很多不是航模或者机器人爱好者的同学可能舵机了解比较少,笔者也一样,只 ...
- STM32的SG90舵机驱动
今天来讲一下如何使用STM32来驱动SG90舵机 舵机:舵机是一种位置(角度)伺服的驱动器,适用那些需要角度不断变化并可以保持的控制系统.舵机只是一种通俗的叫法,其实质是一个伺服马达. 驱动SG90舵 ...
- STM32CubeMX(09)MG90S舵机驱动实验
文章目录 前言 一.舵机是什么? 二.STM32CubeMX配置 2.1时钟树配置 2.2定时器配置 2.3生成代码 三.代码编写 四.测试结果 注意: 总结 前言 今天我们来学习使用一下舵机,并用S ...
- 串行舵机/数字舵机的替代方案,低成本的舵机级联方案。数字舵机的驱动芯片。普通舵机改数字舵机
数字舵机顾名思义就是用数字的信号去驱动,多数的为UART总线,通讯模式为一主多从,总线上可以挂载多个设备,每个设备都有固定的IP地址,只有收到匹配对应的地址的设备,后面的数据才有效.一共用了TX,VC ...
- STM32 F767控制舵机
STM32 F767 控制舵机 前两天用阿波罗f7的开发板做了一下舵机控制,写个笔记做个记录以便以后复习,有错误的地方希望大家批评指正. 1. 舵机介绍 2. PWM信号产生原理 3. STM32 F ...
- STM32 PWM控制舵机——原理、接线、源程序
STM32--PWM 控制舵机 通用定时输出PWM PWM的工作原理 PWM的模式 TIM_OCMode_PWM1 (边沿对齐模式) TIM_OCMode_PWM2(中央对齐模式) 占空比 舵机 实物 ...
- Baize_ServoDriver_esp8266-(arduino32路舵机驱动板)(开源可自制,附程序和固件以及烧录方法)
导航在这里:白泽六足机器人_arduino_v1 介绍 先放资料 github:GitHub - Allen953/Baize_ServoDriver_esp8266 立创开源地址:https://o ...
- 舵机应该如果选择?讲讲模拟舵机,数字舵机和总线舵机的区别
推荐视频:模拟舵机,数字舵机和总线舵机科普 :舵机从入门到放弃: 很多时候,我们购买舵机就只知道考虑扭矩以及控制方式.对舵机的分类有所耳闻,但是不清楚其中的区别.接下来我将详细说明模拟舵机,数字舵机和 ...
最新文章
- TensorFlow——入门基础
- 面临找工作,要记住给自己的这些话。
- 使用 Google Calendar 免费自动发送手机短信、Email 的方法
- 阅读微信支付demo收获
- php使用redis生成自增序列号码,Redis使用Eval多个键值自增的操作实例
- css预编译工具less使用心得
- 739. 每日温度 golang
- Arrays类的排序(sort、parallelsort)
- (43)生成时钟Generated Clock简介
- 常用docker命令
- Nginx查看并发链接数
- erlang注意(经典)
- 你想进BAT吗?告诉你一个秘密,面试成功率能提高到99%!
- Netflix推出Hollow,处理内存数据集的Java库
- Tomcat监控利器Probe
- linux 单网卡 双ip,Linux操作系统单网卡双IP的设置
- hd4400 显卡opencore 下的 8个苹果问题解决方法
- pcie link/lane number negotiation
- 如何使用代理服务器上网
- 『UE4数字孪生』开发流程浅析(持续更新)
热门文章
- UILabel的使用
- 新整理常见互联网公司职级和薪资一览!
- Apriori算法和FP-Tree算法简介
- self.canv.bookmarkPage(key, left=inch*0.5) ,为什么在reportlab中设置的缩进不生效?
- c语言s10 是什么意思啊,【S10】A.FortunatelyB.ComparativelyC.ConsequentlyD.Conversely - 试题答案网问答...
- vscode 中C++运行编译运行多文件问题总结
- unity字体外发光_【Unity学习心得】Sprite外发光的制作
- mysql新加一列_mysql如何增加表中新的列?
- chrome firefox 获取模拟微信浏览器
- 第十七届“科大讯飞杯”题解