STM32 F103C8T6学习笔记5:定时器输出不同占空比PWM驱动舵机旋转角度
现在学习使用STM32 F103C8T6的定时器PWM模式,使用PWM驱动舵机转动不同角度,文章提供源码,测试工程,测试动态效果图。
目录
基础原理:
实验目标:
测试视频结果:
测试工程下载:
基础原理:
这次依旧拿出之前学习过的舵机DS3115,它的基础原理不多加介绍,在往期讲MSP432的文章有所提及:
MSP432自主开发笔记4:DS3115舵机的0~180全角度驱动_NULL指向我的博客-CSDN博客
这里直接作总结:
舵机,一般接有三根线,其中俩根是供电使用,还有一根是信号线
我们需要给信号线一个相应频率PWM的信号,让其知道有控制信号要到来,然后同时调整PWM的占空比即可调整其旋转角度
需要知道的大致有三个重要点:1、电压电流 2、PWM频率 3、识别占空比范围
1.PWM频率范围50~330Hz
2.脉宽范围是500~2500 us
3.精度是3us
4.旋转方向是顺时针
实验目标:
使用STM32 C8T6的定时器3输出PWM驱动舵机转动,从0~180度,缓慢转动一周后再次返回0度开始,以此循环。
下面的代码是我初始化TIM3的1~3这三个通道来输出PWM控制舵机,
总体流程如下:
1.定义初始化结构体
2.打开APB2等总线的时钟,开启A\B端口
3.配置PWM输出管脚
4.配置TIM定时器ARR,PSC等
5.配置PWM模式
void Timer3_PWM_init(u16 arr,u16 psc)
{GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;//开时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //PWM输出管脚配置 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化定时器(配置定时器TIM3频率)TIM_TimeBaseStructure.TIM_Period = arr; TIM_TimeBaseStructure.TIM_Prescaler =psc; TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //PWM模式配置(分通道进行配置)TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High;TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;TIM_OC1Init(TIM3,&TIM_OCInitStructure); TIM_OC1PreloadConfig(TIM3,TIM_OCPreload_Enable); TIM_Cmd(TIM3,ENABLE); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC2Init(TIM3, &TIM_OCInitStructure); TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_Cmd(TIM3, ENABLE); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC3Init(TIM3, &TIM_OCInitStructure); TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); TIM_Cmd(TIM3, ENABLE);
}
#include "main.h"//211uint16_t t1,t2,t3;int main(void)
{ init_ALL(); //初始化所有函数:t1=150;t2=150;t3=150; while(1){ delay_ms(300);t1++;t2++;t3++;printf("%d",t1);//到达设定最大角度时返回到0度if(t1==263) {t1=150;}if(t2==263) {t2=150;}if(t3==263) {t3=150;}TIM_SetCompare1(TIM3,t1); //设置舵机占空比,控制舵机转动TIM_SetCompare2(TIM3,t2); //设置舵机占空比,控制舵机转动TIM_SetCompare3(TIM3,t3); //设置舵机占空比,控制舵机转动 }
}//初始化所有函数:
void init_ALL(void)
{Usart1_Init(115200); //初始化串口1printf("HELLO \r\n"); //串口1 测试重定向PrintfSysTick_Init(72);Timer2_Init();Timer3_PWM_init(2000,719); //初始化定时器3PWM}
测试视频结果:
STM32 F103C8T6控制舵机视频
测试工程下载:
https://download.csdn.net/download/qq_64257614/88206611?spm=1001.2014.3001.5503
相关文章:
STM32 F103C8T6学习笔记5:定时器输出不同占空比PWM驱动舵机旋转角度
现在学习使用STM32 F103C8T6的定时器PWM模式,使用PWM驱动舵机转动不同角度,文章提供源码,测试工程,测试动态效果图。 目录 基础原理: 实验目标: 测试视频结果: 测试工程下载: 基…...
液体神经网络:LNN是个啥概念?
一、说明 在在人工智能领域,神经网络已被证明是解决复杂问题的非常强大的工具。多年来,研究人员不断寻求创新方法来提高其性能并扩展其能力。其中一种方法是液体神经网络(LNN)的概念,这是一个利用动态计算功能的迷人框…...
开源数据库Mysql_DBA运维实战 (DCL/日志)
SQL(Structured Query Language 即结构化查询语言) a.DDL语句 数据库定义语言: 数据库,表,视图,索引,存储过程,函数,创建删除ALTER(CREATE DROP ALTER) b.DML语句 数…...
神经网络基础-神经网络补充概念-03-逻辑回归损失函数
概念 逻辑回归使用的损失函数通常是"对数损失"(也称为"交叉熵损失")或"逻辑损失"。这些损失函数在训练过程中用于衡量模型预测与实际标签之间的差异,从而帮助模型逐步调整权重参数,以更好地拟合数…...
基于深度信念神经网络的矿石产量预测,基于DBN的矿石产量预测,DBN的详细原理
目录 背影 DBN神经网络的原理 DBN神经网络的定义 受限玻尔兹曼机(RBM) DBN的矿石产量预测 基本结构 主要参数 数据 MATALB代码 结果图 展望 背影 DBN是一种深度学习神经网络,拥有提取特征,非监督学习的能力,是一种非常好的分类算法,本文将DBN算法进行矿石产量预测 DB…...
JavaWeb-Filter过滤器
目录 Filter过滤器 1. Filter的生命周期 2.Filter的配置 3.拦截路径 4.拦截具体的使用 5.拦截方式配置(资源被访问方式) 6.FilterChain拦截链 Filter过滤器 filter是过滤器,相比于Servlet的发送请求,filter是用于拦截请求。…...
python如何实现1ms内触发两个接口请求
在Python中,可以通过多线程或者协程来实现1ms内触发两个接口请求。以下是两种方法的示例代码: 1.多线程实现: import threading import requestsdef send_request(url):response requests.get(url)print(response.text)# 创建两个线程&…...
深入解析路由与网络:网络的脉络
目录 路由 广域网 公网 外网 局域网 内网 以太网 Wi-Fi CDN IPv4和IPv6 IP地址分类 无类别域间路由(CIDR) 路由 路由是指在计算机网络中,将数据包从源地址传递到目标地址的过程。在一个复杂的网络中,数据包需要经过多…...
spring.HttpMessageNotReadableException: JSON parse error
实体类如下: Value public class Search{//搜索内容String value;//是否模糊搜索boolean fuzzy true; //其实这样写并不是“默认”模糊搜索,而是“一定是”模糊搜索 }spring.HttpMessageNotReadableException: JSON parse error: Cannot construct ins…...
安全中间件的设计思路和简单实践
rasp 的侵入式特性和拦截特性导致开发和运维普通不太愿意配合,当生产环境出现问题时往往第一时间先把责任推给 rasp,逐渐的安全部门普遍只能把 rasp 设置为告警模式,而且越是大的集群拦截开的就越少,所以字节的 elkeid 和某外卖大…...
试卷扫描成电子版方法分享,这个方法不要错过
很多时候,为了方便传输我们需要将试卷扫描成电子版进行存档,以备不时之需。很多小伙伴如果遇到试卷需要扫描转成电子版可能就不知道该如何操作了,其实试卷扫描是一项非常重要的工作,因此需要注意一些方法和细节。以下是试卷扫描成…...
【PostgreSQL的CLOG解析】
同样还是这张图,之前发过shared_buffer和os cache、wal buffer和work mem的文章,今天的主题是图中的clog,即 commit log,PostgreSQL10之前放在数据库目录的pg_clog下面。PostgreSQL10之后修更名为xact,数据目录变更为pg_xact下面&…...
腾讯云国际站代充-阿里云ECS怎么一键迁移到腾讯云cvm?
今天主要来介绍一下如何通过阿里云国际ECS控制台一键迁移至腾讯云国际CVM。腾讯云国际站云服务器CVM提供全面广泛的服务内容。无-需-绑-定PayPal,代-充-值腾讯云国际站、阿里云国际站、AWS亚马逊云、GCP谷歌云,官方授权经销商!靠谱࿰…...
东方晶源亮相第十一届半导体设备年会,共话发展“芯”机遇
8月11日,以“协力同芯抢机遇,集成创新造设备”为主题的第十一届(2023年)中国电子专用设备工业协会半导体设备年会暨产业链合作论坛(CSEAC)在无锡太湖国际博览中心圆满闭幕。为期3天的CSEAC,通过…...
git修改历史commit信息
修改历史提交 commit 的信息 操作步骤: git rebase -i 列出 commit 列表找到需要修改的 commit 记录,把 pick 修改为 edit 或 e,:wq 保存退出修改 commit 的具体信息git commit --amend,保存并继续下一条git 4. 4. rebase --cont…...
基于K8S环境部署Dolphinscheduler及简单应用
一、Dolphinscheduler简介 Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。 Apache DolphinScheduler 旨在解决复杂的大数据任务依赖关系,并为应用…...
Linux的ln命令
ln是link的缩写,在Linux中 ln 命令的功能是为某一个文件在另外一个位置建立一个同步的链接,当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录࿰…...
深入了解Bear Necessities Hackathon黑客松的优胜者们
生态系统中的资深建设者皆知道Moonbeam是大型黑客松狂热爱好者,不论是线上虚拟的还是现场的。然而,很少有黑客松能达到Moonbeam和AWS举办的Bear Necessities黑客松这样的规模和吸引力。本次黑客松共有755人参与,共提交了62份参赛作品。其中22…...
mysql-tokudb使用qa
一、使用前提 安装tokudb引擎的前提条件是物理机要关闭大页,并需要注意物理机所剩内存和配置文件中tokudb_cache_size(内存主要占用部分),innodb_buffer_pool_size的使用,另外tokudb的安装一定要安装libjemalloc依赖&…...
对比学习论文综述总结
第一阶段:百花齐放(18-19中) 有InstDisc(Instance Discrimination)、CPC、CMC代表工作。在这个阶段方法模型都还没有统一,目标函数也没有统一,代理任务也没有统一,所以说是一个百花齐放的时代 1 判别式代理任务---个体判别任务 1.1 Inst Dict---一个编码器+一个memory…...
过期域名抢注对SEO优化有什么影响
过期域名抢注对SEO优化有什么影响 在互联网时代,域名作为网站的“地址”在搜索引擎优化(SEO)中占据重要地位。当一个域名过期且没有被注册,它就成为了一个“空壳”,任何人都可以抢注。过期域名抢注对SEO优化有什么影响…...
深入英飞凌HSM软件栈:手把手解析CryIf、vHsm_Core等核心模块的协作与定制
深入英飞凌HSM软件栈:手把手解析CryIf、vHsm_Core等核心模块的协作与定制 在汽车电子控制单元(ECU)开发领域,安全始终是首要考量。英飞凌HSM(Hardware Security Module)作为嵌入式安全解决方案的核心&…...
一、永磁材料
...
解决VirtualBox/VMware虚拟机在win10下运行ensp时AR启动卡死问题
未经授权,禁止转载!1.环境准备与确认首先 ,确认你的虚拟机是否是windows10,例如我的虚拟机操作系统如下:2.然后,确认你的环境是否正确,重点查看VirtualBox是否是"VirtualBox-5.2.44-139111…...
Lepton AI农业监测:作物生长分析服务构建实践
Lepton AI农业监测:作物生长分析服务构建实践 【免费下载链接】leptonai A Pythonic framework to simplify AI service building 项目地址: https://gitcode.com/gh_mirrors/le/leptonai Lepton AI是一个Pythonic框架,专为简化AI服务构建而设计&…...
突破音乐格式限制的全方位解决方案:让你的音频文件重获自由
突破音乐格式限制的全方位解决方案:让你的音频文件重获自由 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: …...
3分钟彻底移除Windows Edge浏览器:系统优化终极指南
3分钟彻底移除Windows Edge浏览器:系统优化终极指南 【免费下载链接】EdgeRemover A PowerShell script that correctly uninstalls or reinstalls Microsoft Edge on Windows 10 & 11. 项目地址: https://gitcode.com/gh_mirrors/ed/EdgeRemover 你是否…...
kys-cpp跨平台编译教程:Windows与Linux双平台部署指南
kys-cpp跨平台编译教程:Windows与Linux双平台部署指南 【免费下载链接】kys-cpp 《金庸群侠传》c复刻版,已完工 项目地址: https://gitcode.com/gh_mirrors/ky/kys-cpp kys-cpp是《金庸群侠传》的C复刻版,支持经典回合制与创新即时战斗…...
从231MB到69.5MB:我是如何优化Emby信息推送Docker镜像体积的(Python Alpine实战)
从231MB到69.5MB:Python Alpine实战中的Docker镜像瘦身艺术 在资源受限的云环境或边缘设备上部署服务时,Docker镜像体积直接决定了部署效率和资源利用率。一个典型的场景是:当你在凌晨三点通过SSH连接到树莓派部署更新时,发现需要…...
谷歌Gemini API新层级:机遇与挑战并存
谷歌为Gemini API添加Flex和Priority层级,可根据工作负载分配任务。同时发布Gemma 4。新层级虽简化开发工作,但也引发受监管行业担忧,对企业AI战略有重要意义。新层级助力开发者谷歌为Gemini API新增Flex Inference和Priority Inference层级&…...
