当前位置: 首页 > news >正文

HAL STM32 SG90舵机驱动控制

HAL STM32 SG90舵机驱动控制


  • 🔖测试对象:STM32F103
  • SG90舵机
    在这里插入图片描述

🌼功能实现:通过串口指令,控制SG90舵机转动到指定角度。

在这里插入图片描述

  • ✨在实际硬件舵机驱动过程中,使用SG90普通舵机空载运转情况下,电流在180mA左右,建议采用独立供电,光依赖开发板供电来驱动,可能带不动。

  • 🌿SG90舵机驱动,PWM控制参数:50hz=20ms,定时器计数值设定值:10000,舵机转动角度与PWM占空比关系如下表:


0.5ms-------------0度; 2.5% 对应函数中占空比为2501.0ms------------45度; 5.0% 对应函数中占空比为5001.5ms------------90度; 7.5% 对应函数中占空比为7502.0ms-----------135度; 10.0% 对应函数中占空比为10002.5ms-----------180度; 12.5% 对应函数中占空比为1250

🛠STM32CubeMX配置

  • 🌿PWM频率=72000000/(143+1)/(9999+1)=50hz
    在这里插入图片描述

📘功能代码实现

  • 🌿main函数:
int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_TIM2_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */htim2.Instance->CCR1 = 250; //对应舵机0角度	
//__HAL_TIM_SET_COMPARE(&htim1, TIM_CHANNEL_1, 250); //设置CH1->PWM脉冲宽度,同上
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); //开启PWM输出通道3,PA0 -->50Hz	HAL_UART_Receive_IT(&huart1, &rx_buf, 1); //开启串口接收中断printf("TIM2 PWM SG90 Test\r\n");/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */if(Rece_flag){Rece_flag = 0;__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1,PWM_ANGLE[Rece_Data-'0']); printf("舵机转动到:%d°\r\n",SG_ANGLE[Rece_Data-'0']);GPIOC->ODR ^=LED_Pin; //翻转led//HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);//同上}}/* USER CODE END 3 */
}
  • 🌿串口接收中断:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if(huart->Instance == USART1) {
//				HAL_UART_Transmit(&huart1, &rx_buf, 1, 1000);//串口转发数据int receivedNum = rx_buf - '0'; // 将字符转换为数字// 检查接收到的数字是否在0到4之间if (receivedNum >= 0 && receivedNum <= 4) {Rece_Data =	 rx_buf;Rece_flag = 1; }			HAL_UART_Receive_IT(&huart1, &rx_buf, 1);//再次调用串口接收中断,否则下次无法接收到数据}}
  • 🌿串口控制:0 - 4数字指令
    在这里插入图片描述

  • 📚驱动代码:
通过网盘分享的文件:STM32F1_TIM2_PWM_SG90.rar
链接: https://pan.baidu.com/s/1OHFs1YMrV1qmPvAvjc0W2w?pwd=7e2a 提取码: 7e2a

相关文章:

HAL STM32 SG90舵机驱动控制

HAL STM32 SG90舵机驱动控制 &#x1f516;测试对象&#xff1a;STM32F103SG90舵机 &#x1f33c;功能实现&#xff1a;通过串口指令&#xff0c;控制SG90舵机转动到指定角度。 ✨在实际硬件舵机驱动过程中&#xff0c;使用SG90普通舵机空载运转情况下&#xff0c;电流在180mA…...

【Kubernetes】k8s集群图形化管理工具之rancher

目录 一.Rancher概述 1.Rancher简介 2.Rancher与k8s的关系及区别 3.Rancher具有的优势 二.Rancher的安装部署 1.实验准备 2.安装 rancher 3.rancher的浏览器使用 一.Rancher概述 1.Rancher简介 Rancher 是一个开源的企业级多集群 Kubernetes 管理平台&#xff0c;实…...

AI编程系列一1小时完成链家房价爬虫程序

背景 AI编程实在太火&#xff0c;写了很多年的Java&#xff0c;现在Python 和Go 简单好用&#xff0c;今天结合智谱清言快速完成一个程序爬虫程序&#xff0c;没有任何Python 编程经验&#xff0c;只需要会提问&#xff0c;熟悉简单HTML结构即可。未来一定是有业务能力者的福…...

【JavaEE初阶】文件内容的读写—数据流

目录 &#x1f4d5; 引言 &#x1f334; 数据流的概念 &#x1f6a9; 数据流分类 &#x1f333; 字节流的读写 &#x1f6a9; InputStream&#xff08;从文件中读取字节内容) &#x1f6a9; OutputStream&#xff08;向文件中写内容&#xff09; &#x1f384; 字符流的…...

Spring Boot项目中使用Sharding-JDBC实现读写分离

Sharding-JDBC是一个分布式数据库中间件&#xff0c;它不仅支持数据分片&#xff0c;还可以轻松实现数据库的读写分离。下面是如何在Spring Boot项目中集成Sharding-JDBC并实现读写分离的详细步骤&#xff1a; 目录 1. 引入依赖 2. 配置数据源 3. 配置Sharding-JDBC相关参数…...

【网络安全】SSO登录过程实现账户接管

未经许可,不得转载。 文章目录 正文正文 登录页面展示了“使用 SSO 登录”功能: 经分析,单点登录(SSO)系统的身份验证过程如下: 1、启动SSO流程:当用户点击按钮时,浏览器会发送一个GET请求到指定的URL: /idp/auth/mid-oidc?req=[UNIQUE_ID]&redirect_uri=[REDI…...

Admin.NET源码学习(3:LazyCaptcha使用浅析)

Admin.NET项目前端登录页面的验证码图片默认使用动态图&#xff0c;且图形内容为阿拉伯数字运算&#xff08;如下图所示&#xff09;&#xff0c;用户输入正确的计算结果才能正常登录。项目采用LazyCaptcha模块生成验证码及动态图。   在Admin.NET.Core项目中添加了Lazy.Cap…...

在原生未启用kdump的BCLinux 8系列服务器上启用kdump及报错处理

本文记录了在原生未启用kdump的BCLinux 8系列操作系统的服务器上手动启用kdump服务及报错处理的过程。 一、问题描述 BCLinux 8系列操作系统&#xff0c;系统初始化安装时未启用kdump服务&#xff0c;手动启动时报以下“No memory reserved for crash kernel”或“ConditionK…...

Android架构组件中的MVVM

Android架构组件中的MVVM&#xff08;Model-View-ViewModel&#xff09;模式是一种广泛应用的设计模式&#xff0c;它通过将应用程序分为三个主要部分&#xff08;Model、View、ViewModel&#xff09;来分离用户界面和业务逻辑&#xff0c;从而提高代码的可维护性、可扩展性和可…...

走向绿色:能源新选择,未来更美好

当前&#xff0c;全球范围内可再生能源正经历着从辅助能源向核心能源的深刻转型&#xff0c;绿色能源日益渗透至居住、出行、日常应用等多个领域&#xff0c;深刻影响着我们的生活方式&#xff0c;使我们能够更加充分地体验清洁能源所带来的优质生活。 一、绿色能源与“住” …...

鸿蒙装饰器的介绍

State装饰器&#xff0c; State装饰的变量&#xff0c;称为状态变量&#xff0c;与声明式范式中的其他被装饰变量一样&#xff0c;是私有的&#xff0c;只能从组件内部访问&#xff0c;在声明时&#xff0c;必须指定其类型和本地初始化。 Provide装饰器和Consume装饰器&#…...

零基础5分钟上手亚马逊云科技核心云架构知识 - 权限管理最佳实践

简介&#xff1a; 欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列&#xff0c;适用于任何无云计算或者亚马逊云科技技术背景的开发者&#xff0c;通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。 我会每天介绍一个基于亚马逊云科技…...

[数据库][知识]SQL Server、MySQL 和 Oracle 的默认端口和数据库链接

SQL Server、MySQL 和 Oracle 的默认端口号、连接 URL 和驱动类名。以下是对每个数据库连接信息的简要说明&#xff1a; SQL Server 默认端口号&#xff1a;1433JDBC URL 格式&#xff1a;jdbc:sqlserver://localhost:1433;DatabaseNamedbnameJDBC 驱动类名&#xff1a;com.mic…...

【Unity教程】使用 Animation Rigging实现IK制作程序化的动画

在 Unity 开发中&#xff0c;为角色创建逼真且自适应的动画是提升游戏体验的关键。在本教程中&#xff0c;我们将结合 Animation Rigging 工具和 IK&#xff08;Inverse Kinematics&#xff0c;反向运动学&#xff09;插件来实现程序化的动画。 视频教程可以参考b战大佬的视频 …...

OBS混音器(Mixers)的重要性和配置指南

在进行直播或录制时,音频管理是非常关键的一环,特别是在需要同时处理多个音频源的复杂设置中。OBS Studio提供了强大的音频管理工具,其中“混音器”功能扮演了核心角色。混音器(Mixers)在OBS中用于控制不同音频源的输出路由,允许用户精确控制哪些音源出现在最终的直播或录…...

Ubuntu安装Anaconda3

本文详细阐述了在 Ubuntu 系统中安装 Anaconda3 的完整流程。包括 Anaconda3 安装包的获取途径&#xff0c;具体安装过程中的每一个步骤及注意事项&#xff0c;还有安装后的环境变量设置和安装成功的验证方法。旨在为 Ubuntu 用户提供清晰、易懂且准确的 Anaconda3 安装指南&am…...

数据类型解码:INT、VARCHAR、DATETIME的深度解析与实践

标题&#xff1a;数据类型解码&#xff1a;INT、VARCHAR、DATETIME的深度解析与实践 在软件开发和数据库设计中&#xff0c;数据类型是构建数据模型的基础。准确理解和使用数据类型&#xff0c;如INT、VARCHAR、DATETIME&#xff0c;对于确保数据的完整性、性能和安全性至关重…...

基于单片机的智能晾衣系统设计

摘 要 &#xff1a;在网络信息技术的推动下&#xff0c;智能家居得到了广泛应用&#xff0c;文章根据当前的市场动态&#xff0c;针对基于单片机的智能晾衣系统设计展开论述&#xff0c;具体包括两个方面的内容———硬件设计和软件设计。 关键词 &#xff1a;单片机&#xff…...

Python实战项目:天气数据爬取+数据可视化(完整代码)

一、选题的背景 随着人们对天气的关注逐渐增加&#xff0c;天气预报数据的获取与可视化成为了当今的热门话题&#xff0c;天气预报我们每天都会关注&#xff0c;天气情况会影响到我们日常的增减衣物、出行安排等。每天的气温、相对湿度、降水量以及风向风速是关注的焦点。通过…...

知识改变命运 数据结构【链表面试题】

1. 删除链表中等于给定值 val 的所有节点。 OJ链接 public ListNode removeElements(ListNode head, int val) {if (headnull) {return null;}ListNode curhead.next;ListNode prehead;while(cur!null) {if(cur.valval) {pre.nextcur.next;curcur.next;}else {precur;curcur.ne…...

大模型微调实战:用百元级GPU打造专属AI助手

测试工程师的AI困局与破局在软件测试领域&#xff0c;我们每天都在与各种文本打交道——测试用例、缺陷报告、自动化脚本、需求文档、评审记录。大语言模型&#xff08;LLM&#xff09;的爆发让我们看到了提效的曙光&#xff0c;但很快就会发现&#xff0c;通用模型对测试业务的…...

实战指南 | Vivado自定义IP核在IP Catalog中“隐身”与“灰显”的排查与修复

1. 自定义IP核"隐身"与"灰显"问题全景解析 第一次在Vivado中封装自己的IP核时&#xff0c;那种成就感简直无法形容。但当兴冲冲地想在另一个工程中调用这个"宝贝"时&#xff0c;却发现它在IP Catalog中要么完全消失不见&#xff0c;要么像个害羞…...

Baichuan-7B开源大模型:从环境搭建、推理调优到LoRA微调实战

1. 项目概述&#xff1a;一个值得深入研究的开源大语言模型最近在开源社区里&#xff0c;Baichuan-7B这个名字的讨论热度一直不低。作为一个长期关注大模型技术动向的从业者&#xff0c;我自然也对它进行了一番深入的“把玩”和研究。简单来说&#xff0c;Baichuan-7B是由百川智…...

终于蹲到了!“能读一半就是赚到”的《编码》精装版来了

前言&#xff1a;介绍一本好书 《编码》的第1版出版于1999年9月&#xff0c;从非常简单的概念开始讲解计算机工作的基础原理&#xff0c;帮助零基础的读者理解计算机的底层逻辑&#xff0c;建立计算机世界观。出版后立即收获全球范围内的广泛好评&#xff0c;成为影响几代程序员…...

DDR内存RAS技术:原理、实现与优化实践

1. DDR内存RAS技术概述在现代计算架构中&#xff0c;内存子系统承担着数据暂存与高速交换的关键职能。随着DDR4/5内存接口速率突破6400MT/s&#xff0c;以及半导体工艺进入10nm以下节点&#xff0c;内存系统的可靠性&#xff08;Reliability&#xff09;、可用性&#xff08;Av…...

透明背景图片制作方法,一个小程序就能搞定!

最近&#xff0c;我被一个问题烦透了——每次需要制作透明背景图片时&#xff0c;总要在各种工具之间折腾半天。直到我发现了一个神器&#xff0c;才彻底改变了我的工作流程。今天&#xff0c;我就来分享一下我用过的所有透明背景图片制作方法&#xff0c;以及为什么我现在最常…...

告别Windows!手把手教你用Proxmox虚拟机零成本体验深度Deepin 20.6

在Proxmox虚拟环境中优雅体验Deepin&#xff1a;技术爱好者的零成本尝鲜指南 对于技术爱好者而言&#xff0c;尝试新操作系统总伴随着两难&#xff1a;既想深度体验系统特性&#xff0c;又担心影响现有工作环境。Proxmox VE作为开源的虚拟化平台&#xff0c;配合Deepin这一国产…...

小驴西藏旅游网站(10018)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

3个技巧快速掌握加密压缩包密码找回:ArchivePasswordTestTool新手指南

3个技巧快速掌握加密压缩包密码找回&#xff1a;ArchivePasswordTestTool新手指南 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 你是否曾…...

极域电子教室破解终极指南:5步重获电脑控制权

极域电子教室破解终极指南&#xff1a;5步重获电脑控制权 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 你是否曾在上机课时被极域电子教室的全屏广播困住&#xff0c;想要操作电…...