STM32之定时器--PWM控制SG90舵机

目录

1、PWM介绍

1.STM32F103C8T6 PWM资源:

2.PWM输出模式

3.PWM周期与频率

4.不同IO口输出PWM相对应连接到定时器的那一路

 2、sg90舵机介绍及实战

1.sg90舵机介绍

2.代码实现

1.codeMX配置

2.用到的HAL库函数

1.开始产生PWM信号

返回状态值

2.修改比较值,修改占空比 

 具体代码

看这篇文章之前如果对PWM波和SSG90舵机不熟悉可以先看我之前51的文章

51—PWM开发SG90舵机

在51的时候因为芯片没有集成PWM功能,所以我们当时是使用IO口模拟的,在STM32上芯片已经集成了PWM功能,所以我们直接使用即可。

1、PWM介绍

1.STM32F103C8T6 PWM资源:

  • 高级定时器(TIM1):7
  • 通用定时器(TIM2~TIM4):各4

(这是我的单片机的,这个可以在芯片手册查看)

2.PWM输出模式

  • PWM模式1:在向上计数时,一旦 CNT < CCRx 时输出为有效电平,否则为无效电平; 在向下计数时,一旦 CNT > CCRx 时输出为无效电平,否则为有效电平。
  • PWM模式2:在向上计数时,一旦 CNT < CCRx 时输出为无效电平,否则为有效电平; 在向下计数时,一旦 CNT > CCRx 时输出为有效电平,否则为无效电平。

3.PWM周期与频率

【公式】:f=1/T,单位是s,单位是HZ。(其中大写字母T,表示周期,小写字母f表示频率)

PWM占空比由TIMx_CCRx寄存器决定

4.不同IO口输出PWM相对应连接到定时器的那一路

 这个我们可以查看产品手册(都是可以查看到的)

 2、sg90舵机介绍及实战

1.sg90舵机介绍

注意接线

PWM波的频率不能太高,大约50HZ,即周期=1/频率=1/50=0.02s20ms左右。 

确定周期/频率

如果周期为20ms,则 PSC=7199ARR=199(这两个值也可以是其它的)

 角度控制

  • 0.5ms-----------0度; 2.5% 对应函数中CCRx5
  • 1.0ms-----------45度; 5.0% 对应函数中CCRx10
  • 1.5ms-----------90度; 7.5% 对应函数中CCRx15
  • 2.0ms-----------135度; 10.0% 对应函数中CCRx20
  • 2.5ms-----------180度; 12.5% 对应函数中CCRx25

2.代码实现

需求:每隔1s,转动一个角度:0 --> 45 --> 90 --> 135 --> 180 --> 0

1.codeMX配置

2.用到的HAL库函数
1.开始产生PWM信号

HAL_StatusTypeDef HAL_TIM_PWM_Start(TIM_HandleTypeDef *htim, uint32_t Channel)

参数1:定时器句柄

参数2:使用通道

返回状态值
2.修改比较值,修改占空比 

#define __HAL_TIM_SetCompare            __HAL_TIM_SET_COMPARE

#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__)  

参数1:定时器句柄

参数2:使用通道

参数3:指定捕获比较寄存器的新值(占空比)

 具体代码

	HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_3);//启动定时器while (1){HAL_Delay(1000);__HAL_TIM_SetCompare(&htim4,TIM_CHANNEL_3,5);HAL_Delay(1000);__HAL_TIM_SetCompare(&htim4,TIM_CHANNEL_3,10);HAL_Delay(1000);__HAL_TIM_SetCompare(&htim4,TIM_CHANNEL_3,15);HAL_Delay(1000);__HAL_TIM_SetCompare(&htim4,TIM_CHANNEL_3,20);HAL_Delay(1000);__HAL_TIM_SetCompare(&htim4,TIM_CHANNEL_3,25);}

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

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

相关文章

AST反混淆实战|hcaptcha验证码混淆js还原分析

关注它&#xff0c;不迷路。 本文章中所有内容仅供学习交流&#xff0c;不可用于任何商业用途和非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff0c;请联系作者立即删除&#xff01; 1.实战地址 https://newassets.hcaptcha.com/c/bc8c0a8/hsw.js 将上面…

Mysql——替换字段中指定字符(replace 函数)

一、简介 函数将字符串中出现的所有子字符串替换为新的子字符串。 REPLACE() 函数是基于字符的替换&#xff0c;并且替换字符串时是区分大小写的。 二、语法 这里是 MySQL REPLACE() 函数的语法&#xff1a; REPLACE(str, from_str, to_str)参数 str 必需的。 原字符串。 …

【华为OD题库-047】求最小步数-java

题目 求从坐标零点到坐标点n的最小步数&#xff0c;一次只能沿横坐标轴向左或向右移动2或3. 注意:途径的坐标点可以为负数 输入描述 坐标点n 输出描述 输出从坐标零点移动到坐标点n的最小步数 备注 1< n < 10^9 示例1: 输入 4 输出 2 说明 从坐标零点移动到4&#xff0c;…

Python+requests+Jenkins接口自动化测试实例

在做功能测试的基础上&#xff0c;我平时也会用postman测试接口&#xff0c;不过postman只能测试一个一个接口&#xff0c;不能连贯起来&#xff0c;特别是我们公司的接口很多都是要用到token的&#xff0c;导致我每次测个需要登录的接口都要去获取到token&#xff0c;做了很多…

Excle无法在受保护的视图中打开该文件

Excle无法在受保护的视图中打开该文件 解决方案&#xff1a;

MAC笔记本里Spyder python 的安装问题 和 虚拟环境VENV的创建

芙Spyder 作为python的开发环境还是很好用的&#xff0c;在MAC笔记本里直接下载Spyde安装即可。 安装完成以后目录在&#xff1a; /Applications/Spyder.app/Contents 此目录下有几个子目录如下&#xff1a; Frameworks Info.plist MacOS PkgInfo Resources…

【算法】链表-20231124

这里写目录标题 一、83. 删除排序链表中的重复元素二、206. 反转链表三、234. 回文链表 一、83. 删除排序链表中的重复元素 简单 1.1K 相关企业 给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。 示例…

Mybatis 使用枚举作为查询条件

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

(4)BUUCTF-web-[极客大挑战 2019]EasySQL1

前言&#xff1a; 觉得这个题目挺有意义的&#xff0c;因为最近在学数据库&#xff0c;但是不知道在现实中有什么应用&#xff0c;所以学起来也没有什么兴趣&#xff0c;做了这个题目&#xff0c;发现数据库还是挺有用处的&#xff0c;哈哈 知识点&#xff1a; mysql 中and和…

速记:一个保险丝检测电路

一个保险丝检测电路 保险丝熔断&#xff1a;红灯亮 保险丝正常&#xff1a;绿灯亮 同样的&#xff0c;仿真中的指示灯可以换成其他指示器件。

PTA-2023年软件设计综合实践_9(动态规划法)

7-1 数塔 数塔如图所示&#xff0c;若每一步只能走到相邻的结点&#xff08;图中有数字的方格&#xff09;&#xff0c;则从最顶层走到最底层所经过的所有结点的数字之和最大是多少&#xff1f;测试数据保证结果不大于231−1。 C #include <bits/stdc.h> using namespa…

python每日一题——14合并区间

题目 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1&#xff1a; 输入&#xff1a;intervals …

AIGC:文本生成视频

项目1&#xff1a;GitHub - ai-forever/KandinskyVideo: KandinskyVideo — multilingual end-to-end text2video latent diffusion model 效果未知

IDEA插件:Apipost Helper使用

Apipost-Helper是由Apipost推出的IDEA插件&#xff0c;写完接口可以进行快速调试&#xff0c;且支持搜索接口、根据method跳转接口&#xff0c;还支持生成标准的API文档&#xff0c;注意&#xff1a;这些操作都可以在代码编辑器内独立完成&#xff0c;非常好用&#xff01;这里…

YOLOv8改进 | 2023 | DWRSeg扩张式残差助力小目标检测 (附修改后的C2f+Bottleneck)

论文地址&#xff1a;官方论文地址 代码地址&#xff1a;该代码目前还未开源&#xff0c;我根据论文内容进行了复现内容在文章末尾。 一、本文介绍 本文内容给大家带来的DWRSeg中的DWR模块来改进YOLOv8中的C2f和Bottleneck模块&#xff0c;主要针对的是小目标检测&#xff0c…

【GraphQL】什么是Prisma?

本页提供了Prisma及其工作原理的高级概述。 什么是Prisma&#xff1f; Prisma是一个开源的下一代ORM。它由以下部分组成&#xff1a; Prisma客户端&#xff1a;Node.js和TypeScript的自动生成和类型安全查询生成器Prisma迁移&#xff1a;迁移系统Prisma Studio:GUI&#xff0…

JVM——内存溢出和内存泄漏

目录 1. 内存溢出和内存泄漏内存泄漏的常见场景解决内存溢出的思路1.发现问题 – Top命令2.发现问题 – VisualVM3.发现问题 – Arthas4.发现问题 – Prometheus Grafana5.发现问题 – 堆内存状况的对比![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/058d113715b…

BIO、NIO、selector、Netty代码Demo示例

文章目录 &#xff08;一&#xff09;BIO&#xff08;Blocking I/O 阻塞I/O&#xff09;&#xff08;二&#xff09;NIO&#xff08;Non-Blocking I/O 非阻塞I/O&#xff09;&#xff08;三&#xff09;IO多路复用--Selector&#xff08;四&#xff09;Netty &#xff08;一&am…

【hacker送书第5期】SQL Server从入门到精通(第5版)

第5期图书推荐 内容简介作者简介图书目录参与方式 内容简介 SQL Server从入门到精通&#xff08;第5版&#xff09;》从初学者角度出发&#xff0c;通过通俗易懂的语言、丰富多彩的实例&#xff0c;详细介绍了SQL Server开发所必需的各方面技术。全书分为4篇共19章&#xff0c;…

C陷阱与缺陷——第5章库函数

1. 返回整数的getchar函数 #include <stdio.h>main() {char c;while((c getchar()) ! EOF){putchar(c);} } 上述函数是错误的&#xff0c;原因在于程序中的变量c被声明为char类型&#xff0c;而不是int类型&#xff0c;这意味着c无法容下所有可能的字符&#xff0c;特…