2.SG90舵机模块

当我们输出一段脉冲信号的时候就可以调节舵机的角度

我们可以从原理图可以看到舵机的脚在PA6

从芯片手册我们又可以看到PA6对应TIM3_CH1,并且不用开启部分重映像就能使用

新建Servo.c存放PWM初始化

配置PWM

void Servo_TIM3_Init(u16 arr,u16 psc)
{//开启TIM3的时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO,ENABLE);    //PWM脚在GPIOA上,并开启AFIO复用//配置端口//PA6GPIO_InitTypeDef GPIO_Structure;GPIO_Structure.GPIO_Mode = GPIO_Mode_AF_PP;    //复用推挽输出GPIO_Structure.GPIO_Pin = GPIO_Pin_6;    //TIM1_CH1 | TIM1_CH4GPIO_Structure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_Structure);//初始化TIM3TIM_TimeBaseInitTypeDef TIM3_Structure;TIM3_Structure.TIM_Period = arr;    //设置在下一个更新事件装入活动的自动重装载寄存器周期的值TIM3_Structure.TIM_Prescaler = psc;    //设置用来作为TIMx时钟频率除数的预分频值TIM3_Structure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_timTIM3_Structure.TIM_CounterMode = TIM_CounterMode_Up;    //TIM向上计数TIM_TimeBaseInit(TIM3,&TIM3_Structure);//初始化TIM3_CH1 PWM模式TIM_OCInitTypeDef TIM_OC_Structure;TIM_OC_Structure.TIM_OCMode = TIM_OCMode_PWM2; //选择定时器模式:TIM脉冲宽度调制模式2TIM_OC_Structure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能TIM_OC_Structure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性:TIM输出比较极性低TIM_OC1Init(TIM3,&TIM_OC_Structure);TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable); TIM_Cmd(TIM3,ENABLE);}

封装角度函数

这样直接输入想要的角度就行了,不用再每次看手册来设置

void Servo_TIM_SetCompare1(uint16_t Num)
{switch(Num){case 0:    TIM_SetCompare1(TIM3,25);break;case 45:TIM_SetCompare1(TIM3,50);break;case 90:TIM_SetCompare1(TIM3,75);break;case 135:TIM_SetCompare1(TIM3,100);break;case 180:TIM_SetCompare1(TIM3,125);break;default:TIM_SetCompare1(TIM3,25);break;}
}

main.c进行调用测试

//初始化PWM
Servo_TIM3_Init(999,1439);
//直接调节TIM3通道1的占空比就可以摇头,加上我们前面封装的函数直接输入角度就行
Servo_TIM_SetCompare1(TIM3,0);
delay_ms(900);
Servo_TIM_SetCompare1(TIM3,45); 
delay_ms(900);
Servo_TIM_SetCompare1(TIM3,90); 
delay_ms(900);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/819823.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GIS入门,Java不使用任何第三方库实现射线穿越法计算某个点是否与多边形相交,比普通射线法提升了计算性能

前言 在上一章中《GIS入门,Java不使用任何第三方库实现判断一个经纬度点是否在多个经纬度点组成的多边形内,计算某个点是否与多边形相交》,我们使用了一个最简单的算法“射线法”来计算一个点到是否与多边形相交,但是对于多边形非常多的顶点时,计算就会力有不逮。 本章将…

嵌入式工程师如何利用周末提升自己?

提升自己一定要趁早,这是作为中年人的我,对年轻人的忠告。 以前年轻,觉得时间多,总是幻想着,很多人也大器晚成啊,晚点努力也不晚。 前阵子小米汽车火了,雷总说这是他最后一次重大创业&#xff0…

富 格 林:规避虚假暗箱制胜法宝

富 格 林认为,现货黄金是众多黄金产品中交易规则优势较为明显的存在,尤其是进来的行情走势十分强劲,这给予了投资者更充足的做单机会。不过,机会的增加不意味着就一定可以制胜。要知道规避虚假暗箱才是制胜最有效的法宝。富 格 林…

禅道登录/创建版本/编辑版本接口 【禅道版本 18.12/18.11】

登录获取token import requestsurl = "http://192.168.1.234:6060/api.php/v1/tokens" payload = {"account": "jenkins","password": "jenkins123" } headers = {}response = requests.request

轻松上手MYSQL:MYSQL初识(上)

​🌈 个人主页:danci_ 🔥 系列专栏:《MYSQL入门》 💪🏻 制定明确可量化的目标,坚持默默的做事。 轻松上手MYSQL:从零开始构建你的数据库世界 🚀 🚀欢迎来到My…

多维时序 | Matlab实现TCN-LSTM时间卷积长短期记忆神经网络多变量时间序列预测

多维时序 | Matlab实现TCN-LSTM时间卷积长短期记忆神经网络多变量时间序列预测 目录 多维时序 | Matlab实现TCN-LSTM时间卷积长短期记忆神经网络多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【Matlab实现TCN-LSTM时间卷积长短期记忆神经网络多变量…

轻松上手MYSQL:MYSQL初识(下)

​🌈 个人主页:danci_ 🔥 系列专栏:《MYSQL入门》 💪🏻 制定明确可量化的目标,坚持默默的做事。 轻松上手MYSQL:从零开始构建你的数据库世界 🚀 🚀欢迎来到My…

稀疏数组思想

稀疏数组的处理方法是: 1)记录数组一共有几行几列,有多少个不同的值 2)思想:把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模 例如下面原数组对应稀疏数组:

uni-starter的微信登录拿不到登录者的昵称,头像,手机号问题记录

uni-starter的微信登录竟然拿不到登录者的昵称,头像,手机号 获取手机号的方法在另外一篇文章中,需要认证,需要有营业执照 uni.login({"provider": type,"onlyAuthorize": true,// #ifdef APP"univerif…

2024认证杯A题完整论文教学分享

大家好,从昨天肝到现在,终于完成了2024认证杯A题 保暖纤维的保暖能力的完整论文啦。 给大家看一下目录吧: 目录 摘 要: 10 一、问题重述 13 二.问题分析 14 2.1问题一 14 2.2问题二 14 2.3问题三 14 三、模型…

算法打卡day31

今日任务: 1)435.无重叠区间 2)763.划分字母区间 3)56.合并区间 435.无重叠区间 题目链接:435. 无重叠区间 - 力扣(LeetCode) 给定一个区间的集合,找到需要移除区间的最小数量&…

React中子传父的方式及原理

方式挺多的,先说最常用的通过props进行父子组件的数据传递和修改以及原理 在React中,props不仅用于传递数据,它们也可以传递可以执行的函数,这使得子组件能够间接更新父组件的状态。这种方法强化了React的单向数据流策略&#xf…

【北京迅为】《iTOP-3588开发板系统编程手册》第5章 文件IO缓存

RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

Cocos Creator 3D游戏成像全过程详解与Shader详解

前言 Cocos Creator是一款由Cocos2d-x团队开发的游戏开发引擎,它不仅支持2D游戏的开发,还能够创建3D游戏。在本文中,我们将详细介绍Cocos Creator 3D游戏成像的全过程,并深入探讨Shader的实现细节。 对惹,这里有一个…

【刷题】代码随想录算法训练营第十三天|239、滑动窗口最大值,347、前K个高频元素,总结

目录 39、滑动窗口最大值347、前K个高频元素栈与队列总结 39、滑动窗口最大值 讲解:https://programmercarl.com/0239.%E6%BB%91%E5%8A%A8%E7%AA%97%E5%8F%A3%E6%9C%80%E5%A4%A7%E5%80%BC.html 使用单调队列。 在代码随想录里好好理解一下单调队列处理这道滑动窗口最…

龙智 DevSecOps 解决方案:集成 Jira/Confluence/HelixCore/SonarQube 等知名工具的技术实践与协作场景演示

随着企业数字化转型的深入推进,传统的研发流程已难以适应快速变化的市场需求,企业需要更加高效、协同且安全的研发模式来确保产品的质量和竞争力。DevSecOps 作为一种创新的研发方法论,将安全性融入 DevOps 工作流程中,实现从代码…

使用keil开发stm32串口

1,初始化IO串口1,pclk2:PCLK2时钟频率(Mhz),波特率9600, 中断向量一般配置用中断方式接收数据 I/O口配置:TXD配置为复用推挽输出(GPIO_Mode_AF_PP),RXD配置为浮空输入(GPIO_Mode_IN_FLOATING); void uart_init(u32 pclk2,u32 bound) { float temp;u16 mantissa;…

WebApis知识总结以及案例(续3)

综合案例 小兔鲜页面注册 分析业务模块 发送验证码模块 用户点击之后,显示05 秒后重新获取 时间到了,自动改为重新获取 //1.发送短信验证码模块const codedocument.querySelector(.code)let flagtrue//通过一个变量来控制 节流阀 // 1.1 点击事件co…

Unity URP 2021 Release-Notes

🌈Unity URP 2021 Release-Notes 版本更新内容2021.3.32URP: Vulkan URP will use MSAA samples count fallback from player settings. Prior to this x2 fallback would have been to upgrade to x4.(UUM-741)2021.3.29URP: 2D - Fix additional draw call when F…

【MATLAB源码-第51期】基于matlab的粒子群算法(PSO)的栅格地图路径规划。

操作环境: MATLAB 2022a 1、算法描述 粒子群算法(Particle Swarm Optimization,简称PSO)是一种模拟鸟群觅食行为的启发式优化方法。以下是其详细描述: 基本思想: 鸟群在寻找食物时,每只鸟都…