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

stm32 舵机 cubemx

文章目录

  • 前言
  • 一、cubemx配置
  • 二、代码
    • 1.serve.c
    • 2.serve.h
    • 3.主函数
  • 总结


前言

stm32对舵机进行控制,很简单直接一个pwm就可以实现
pwm的周期是50HZ占空比分别对应

一个0.5ms的高电平对应于0度
一个1.5ms的高电平对应于90度
一个2.5ms的高电平对应于180度
因此,您可以通过改变PWM信号的占空比来改变舵机的角度。占空比是PWM信号的高电平时间与PWM信号的总周期之比。在这里,PWM信号的总周期通常是20ms(对应于50Hz的频率),所以:
对于0度,占空比是0.5ms/20ms = 2.5%
对于90度,占空比是1.5ms/20ms = 7.5%
对于180度,占空比是2.5ms/20ms = 12.5%


一、cubemx配置

在这里插入图片描述
以我的c8t6为例
时钟频率是72MHZ
为了得到50HZ就设定为720-1 和 2000-1
其中2000-1的arr值后面还要用到。

二、代码

1.serve.c

#include "serve.h"Servo ser_1;void servo_init(Servo* servo, TIM_HandleTypeDef* htim, uint32_t channel, uint16_t arr) 
{servo->htim = htim;servo->channel = channel;servo->arr = arr;HAL_TIM_PWM_Start(htim,channel);	}void set_servo_angle(Servo* servo, uint8_t angle) 
{if (angle > 180) {// Angle out of rangeangle = 180;}if(angle<0){angle = 0;}servo->angle = angle;uint16_t pulse_length = (uint16_t)(servo->arr * 1.0 / 20 * (1.0 + angle / 180.0));__HAL_TIM_SET_COMPARE(servo->htim, servo->channel, pulse_length);
}

2.serve.h

typedef struct {TIM_HandleTypeDef* htim;uint32_t channel;uint16_t arr;uint8_t angle;
} Servo;extern Servo ser_1;void servo_init(Servo* servo, TIM_HandleTypeDef* htim, uint32_t channel, uint16_t arr) ;
void set_servo_angle(Servo* servo,uint8_t angle) ;

3.主函数

	servo_init(&ser_1,&htim1,TIM_CHANNEL_1,2000);set_servo_angle(&ser_1,180);

总结

over

http://www.lryc.cn/news/101737.html

相关文章:

  • 无涯教程-jQuery - Spinner组件函数
  • Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘
  • docker基于centos7镜像安装python3.7.9
  • JavaScript中的switch语句
  • Jquery笔记
  • 【C++】优先级队列的基本概念以及其模拟实现
  • TextClamp for Vue3.0(Vue3.0的文本展开收起组件)
  • 区间预测 | MATLAB实现VAR向量自回归时间序列区间预测
  • 在 Windows 上搭建 NTP 服务器
  • 应急响应经典案例-FTP 暴力破解
  • 41. linux通过yum安装postgresql
  • SpringBoot启动流程及自动配置
  • 【Linux】进程轻松入门
  • 【使用时空RBF-NN进行非线性系统识别】实现了 RBF、分数 RBF 和时空 RBF 神经网络,用于非线性系统识别研究(Matlab代码实现)
  • Tomcat 安装配置教程及成功后,启动失败报错解决方案
  • C#文件操作从入门到精通(2)——查看某个dll中有哪些函数
  • 二分查找算法(全网最详细代码演示)
  • draw up a plan
  • 抖音seo源码开发源代码开发技术分享
  • QEMU(Quick Emulator)
  • Gateway结合nacos(lb://xxx)无效问题
  • NODEJS笔记
  • 无涯教程-jQuery - html( )方法函数
  • Linux vsftp三种模式的简单配置部署
  • 6.1.tensorRT高级(1)-概述
  • 【Python】将M4A\AAC录音文件转换为MP3文件
  • 个性新颖纯css手风琴效果选项卡
  • js的sendBeacon方法介绍
  • 【Tomcat---1】IDEA控制台tomcat日志输出乱码解决
  • Redis学习路线(2)—— Redis的数据结构