stm32 12路pwm舵机控制器

STM32f103ZET6定时器TIM3使用通道1输出PWM程序(已验证) 总结: TIM3_CH1输出口为PA6(重映射为PB4),PB5位DS0接口。 1.使用重映射之后,原始IO口不再有输出;本例子中,若使用部分重映射,则 PA6映射到PB4中,所以仅仅PB4有波形输出;飞线连接PB4与PB5即可观察PWM呼吸灯效果。 2.使用IO口前务必初始化,本例子中开始仅仅初始化了PB5口,而没有初始化PA6导致一直验证失败;正点原子给出程序中是由通道2直接映射到PB5... 阅读详情

用于以pwm信号控制模拟舵机
使用

//@stm32f103 72mhz
PWM_Init(1000-1,1440-1);//开12路pwm 50hz,arr=1000
RATIO_0(150);//设置位置,对模拟舵机CCR:100右极限,200左极限 

h文件

#ifndef __pwm_H
#define __pwm_H
#include "sys.h"
/*
使用
PWM_Init(1000-1,1440-1);//开12路pwm 50hz,arr=1000,对模拟舵机
CCR:100右极限,200左极限 RATIO_0(150);//...
*/
#define RATIO_0(RATIO) TIM_SetCompare1(TIM3, RATIO)   // PA6
#define RATIO_1(RATIO) TIM_SetCompare2(TIM3, RATIO)   // PA7
#define RATIO_2(RATIO) TIM_SetCompare3(TIM3, RATIO)   // PB0
#define RATIO_3(RATIO) TIM_SetCompare4(TIM3, RATIO)   // PB1
#define RATIO_4(RATIO) TIM_SetCompare1(TIM4, RATIO)   // PB6
#define RATIO_5(RATIO) TIM_SetCompare2(TIM4, RATIO)   // PB7
#define RATIO_6(RATIO) TIM_SetCompare3(TIM4, RATIO)   // PB8
#define RATIO_7(RATIO) TIM_SetCompare4(TIM4, RATIO)   // PB9
#define RATIO_8(RATIO) TIM_SetCompare1(TIM5, RATIO)   // PA0
#define RATIO_9(RATIO) TIM_SetCompare2(TIM5, RATIO)   // PA1
#define RATIO_10(RATIO) TIM_SetCompare3(TIM5, RATIO)  // PA2
#define RATIO_11(RATIO) TIM_SetCompare4(TIM5, RATIO)  // PA3

void PWM_Init(u16 arr, u16 psc);  //频率为7200000/psc/arr
#endif

// TIM_SetCompare2(TIM3,led0pwmval);调占空比

c文件

#include "pwm.h"

//TIM_SetCompare2(TIM3,led0pwmval);调占空比
//PWM频率 = 72M / ((arr+1)*(psc+1))(单位:Hz)
//PWM占空比 = TIM3->CCR1 / arr(单位:%)

//TIM3 TIM4 TIM5 12路 PWM初始化 
//PWM输出初始化
//arr:自动重装值
//psc:时钟预分频数
void PWM_Init(u16 arr,u16 psc)
{  
	GPIO_InitTypeDef GPIO_InitStructure;
	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
	TIM_OCInitTypeDef  TIM_OCInitStructure;
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3|RCC_APB1Periph_TIM4|RCC_APB1Periph_TIM5, ENABLE);	//使能定时器345时钟
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB| RCC_APB2Periph_AFIO, ENABLE);  //使能GPIO外设和AFIO复用功能模块时钟
	
   //设置该引脚为复用输出功能,输出TIM3 CH2的PWM脉冲波形	GPIOA.7
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_6|GPIO_Pin_7; //A组上管脚
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA组
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;//B组上管脚
	GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化GPIOB组
 
   //初始化TIM3,4,5
	TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
	TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值 
	TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割:TDTS = Tck_tim
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式
	TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
	TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
	TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
	
	//初始化TIM3,4,5 Channel,2,3,4 PWM模式	 
	TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //选择定时器模式:TIM脉冲宽度调制模式2
 	TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
	TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性:TIM输出比较极性高
	//根据T指定的参数初始化外设通道,共12个
	TIM_OC1Init(TIM3, &TIM_OCInitStructure);
	TIM_OC2Init(TIM3, &TIM_OCInitStructure);
	TIM_OC3Init(TIM3, &TIM_OCInitStructure);
	TIM_OC4Init(TIM3, &TIM_OCInitStructure);
	TIM_OC1Init(TIM4, &TIM_OCInitStructure);
	TIM_OC2Init(TIM4, &TIM_OCInitStructure);
	TIM_OC3Init(TIM4, &TIM_OCInitStructure);
	TIM_OC4Init(TIM4, &TIM_OCInitStructure);
	TIM_OC1Init(TIM5, &TIM_OCInitStructure);
	TIM_OC2Init(TIM5, &TIM_OCInitStructure);
	TIM_OC3Init(TIM5, &TIM_OCInitStructure);
	TIM_OC4Init(TIM5, &TIM_OCInitStructure);
	//使能TIM 在CCR1,2,3,4上的预装载寄存器
	TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);
	TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
	TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);
	TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);
	TIM_OC1PreloadConfig(TIM4, TIM_OCPreload_Enable);
	TIM_OC2PreloadConfig(TIM4, TIM_OCPreload_Enable);
	TIM_OC3PreloadConfig(TIM4, TIM_OCPreload_Enable);
	TIM_OC4PreloadConfig(TIM4, TIM_OCPreload_Enable);
	TIM_OC1PreloadConfig(TIM5, TIM_OCPreload_Enable);
	TIM_OC2PreloadConfig(TIM5, TIM_OCPreload_Enable);
	TIM_OC3PreloadConfig(TIM5, TIM_OCPreload_Enable);
	TIM_OC4PreloadConfig(TIM5, TIM_OCPreload_Enable);

	//使能TIM3,4,5
	TIM_Cmd(TIM3, ENABLE); 
	TIM_Cmd(TIM4, ENABLE);
	TIM_Cmd(TIM5, ENABLE);
	

}



【STM32】舵机控制——PWM输出、定时器输出比较功能 欢迎来到矽芯硬翌的科技主义教室! 记录STM32入土路上的艰苦旅程,加油UPUPUP! @Author: 精神小????君! ???? 想要我的财宝吗?想要的话可以全部给你,去找出来吧,这世上所有的一切都在那里! ???? ONE PIECE地址: ✨ 精神小????君的博客✨ /* * _oo0oo_ * o8888888o * 阅读详情

相关推荐

舵机角度精确控制

stm32f1xx使用PWM控制舵机前言0、自己学习过程一、PWM驱动二、使用步骤1.引入库2.读入数据总结 前言 提示:PWM肯定是要会的,不说有多精起码调节什么频率的,多少毫秒需要熟练掌握。如果不会可以参考我另一篇文章: https://blog.youkuaiyun.com/weixin_45061010/article/details/116234867?spm=1001.2014.3001.5501 首先需要明白且很重要的一点是舵机的角度跟脉宽是直接关系,占空比只是侧面反映出了舵机的角度问题。调节角度调节的

maosql 3万+

TB6612驱动和MG513P3012V电机

电机和驱动tbf6612

m0_53820941的博客 1万+

stm32中如何使用PCA9685控制舵机(详解)

PCA9685是一个基于IIC通信的16路PWM输出模块,可以在单片机资源不足的情况下进行扩展使用。i2c通信,只需要2根i2c线就可以控制16路pwm,周期和占空比都可控。可以多个模块级联。箭头部分可以更改设备id。可以控制16路输出端的开、关、pwm以及占空比。在datasheet 文件中可以看到地址定义信息表,这里剪一页到这里作为参考。

yingyang20010112的博客 9196

51单片机按键控制数码管0~9_51单片机PWM直流电机PID控制转速源程序

\AT89C51单片机PWM直流电机转速PID控制源程序,重点介绍利用MCS-51系列单片机控制PWM信号从而实现对直流电机转速进行控制的方法。设计中采用了专门的芯片组成了PWM信号的发生系统并且对PWM信号的原理、产生方法以及如何通过软件编程对PWM信号占空比进行调节从而控制其输入信号波形等均作了详细的阐述。另外本系统中使用了红外对管对直流电机的转速进行测量,经过整形电路后将测量值送到...

weixin_40009026的博客 2136

基于 STM32 的 PWM 信号舵机控制实现

通过以上的硬件连接、原理分析和代码实现,我们可以使用STM32F103系列微控制器产生PWM信号来精确控制舵机的转动角度。这种方法不仅简单有效,而且具有较高的灵活性和可扩展性,可以根据实际需求调整PWM信号的参数,实现更复杂的舵机控制任务。在实际应用中,还需要注意舵机的电源供应和信号干扰等问题,以确保系统的稳定性和可靠性。

zzssllxiaobai的博客 1434

STM32驱动舵机原理和实现

.

HW-BASE的博客 1489

PWM驱动舵机

【代码】PWM驱动直流电机。

qq_45973003的博客 1021

STM32--PCA9685驱动(16路舵机驱动模块)

PCA9685接线、PCA9685简介、PCA9685地址位寄存器、MODE1寄存器,地址0x00,可读、可写、寄存器地址、PCA9685代码注解、PCA9685数据写入、PCA9685数据读取、PCA9685的频率设置、PCA9685的PWM设置、舵机转动角度置换、PCA9685驱动代码:

dengn191020的博客 3万+

STM32(意法半导体推出的32位微控制器)通过HC-05主从机一体蓝牙模块实现对舵机(SG90)的控制(含源码)

基于蓝牙 2.0 协议标准的蓝牙串口模块,工作频率为 2.4GHz。通过蓝牙通信协议和串口通信协议实现数据传输,内部硬件结构支持这些协议的运行。所谓透传,即蓝牙接收到信息后,直接不加任何附加内容地原文转发出去,极大提高了其兼容性。常用于与单片机(如 Arduino、STM32 等)进行无线通信,例如智能家居应用、远程控制、数据记录应用、机器人、监控系统等领域。它可以将蓝牙模块与其他设备进行配对连接后,忽视蓝牙内部的通信协议,直接将其当做串口使用,实现设备之间的数据交换和通信。

JK03820的博客 2565

STM32F103微控制器实现4路PWM控制舵机实验指南

STM32F103微控制器是ST公司生产的一款基于ARM Cortex-M3核心的中高端32位微控制器,拥有广泛的性能和资源,适用于众多应用场景。接下来将详细介绍STM32F103微控制器的基础特性和如何搭建其开发环境。在开发STM32F103微控制器时,我们通常需要以下工具:集成开发环境(IDE): 如Keil MDK-ARM、IAR Embedded Workbench、STM32CubeIDE等。编译器: 支持ARM编译的编译器,通常与IDE软件配套提供。调试器/编程器。

weixin_29935511的博客 1142

STM32输出12路pwm程序

该程序可以适用各种系列的STM32单片机,在该程序中是利用3个定时器实现输出12可调节占空比的PWM;如果需要更多通道的PWM,可以依照程序中示例添加其他相对应的定时器去实现。

STM32 舵机控制器

这节的内容将为大家介绍用stm32单片机做一个舵机控制器,通过旋转电位器,来控制舵机的输出角度。 老规矩,先将源码工程拿出来跟大家一同分享, 关注微信公众号:广乙电子(dlrcclub),回复关键字:舵机测试仪。 在讲源码之前我们先复习一下舵机的控制原理,在频率50hz下,给一个0.5ms-2.5ms脉宽的占空比,就可以对舵机进行一个45°-180°的转动。 通过单片机我们该如何实现呢? 1、配置ADC模块,对电位器进行模拟量...

richardgann的博客 6447

嵌入式八股文-ARM

嵌入式八股文总结(ARM篇)-优快云博客现象:I2C死锁就是时钟线SCL一直处于高电平,数据线SDA一直处于低电平。从机拉低数据线SDA时(发送应答信号给主机时或发送数据0时)主机意外复位,主机复位后时钟线SCL就为高电平了,此时,SCL为高电平而SDA为低电平,主机就以为有其他设备占有了总线,而SCL为高电平时 数据位SDA不允许有变化,意思是:主机就一直等待时钟线SDA拉高,而从机就一直等待时钟线SCL拉高 就造成了死锁的现象。解决方法:1.选择带有复位功能的从设备,复位后SDA被拉高。

m0_63127436的博客 1257

STM32循迹PWM调速及阿克曼舵机转向

1,准备 红外循迹模块,L298N电机驱动模块,STM32C8T6最小系统,SG90舵机,KEIL5 2,涉及的理论知识 (1)红外循迹模块 一般就是数字红外输出和模拟红外输出,两种都可以,最终都是检测红外光返回是否符合要求。比如数字红外,当检测到黑线时,大部分红外光被吸收,红外模块引脚输出高电平1,当无黑线时,红外模块引脚输出低电平0。 (2)L298N驱动模块 这WE...

qq_41050642的博客 1万+

STA 静态时序分析 第三章——标准单元库中的高级功耗建模与优化策略

本文深入探讨了STA静态时序分析中标准单元库的高级功耗建模与优化策略。详细解析了动态功耗和漏电功耗的精细建模技术,包括基于波形敏感的CCS模型和温度敏感的漏电模型,并介绍了多工艺角功耗建模及低功耗设计优化策略,为纳米级芯片设计提供关键能效解决方案。

weixin_29290863的博客 224

Transformer——从原理、模型架构到内部细节介绍

Transformer模型是一种基于注意力机制的深度学习模型,最早由Google在2017年的论文《AttentionIsAllYouNeed》中提出。自其问世以来就迅速席卷了自然语言处理他(NLP)领域,并在各类主流任务上取得了新的突破,包括机器翻译、语言建模、序列标注和文本分类等。在NLP领域取得巨大成功后,迅速扩展到了计算机视觉(CV)领域,并带来了革命性的变化。这种基于自注意力机制的深度学习模型,不仅在NLP任务中力压群雄,也成为CV领域的新宠。

小拉拉的博客 1万+

关于16路舵机控制器、24路舵机控制器与总线舵机控制器

在开发机器人的过程中,可以采用舵机控制器去直接驱动舵机,开发者不需要在底层舵机驱动上消耗更多时间,这样可以用更多的精力去实现机器人的智能化功能。 幻尔出品了多款舵机控制器,供机器人开发者们选择。相信不少小伙伴会问,到底哪一款舵机控制器适合我呢? 为了解决大家的疑问,我们今天给大家介绍3款经典的舵机控制器,来帮助大家选项。 选型指南 16路舵机控制器(适用于PWN舵机) 16路舵机控制器可控制16路PWM舵机运动,速度可调节。它内置串口,可以与其他单片机相连接,提供Arduino/51/STM3

AIwonder的博客 6564

告别unittest!用Pytest+Fixture重构你的Python测试代码(附实战案例)

本文详细介绍了如何从unittest迁移到Pytest框架,重点解析了Pytest的Fixture机制如何提升测试效率和代码简洁性。通过实战案例展示了Pytest在减少代码量、提升调试效率和资源管理方面的优势,帮助开发者重构Python测试代码。

weixin_26749245的博客 206

蓝桥杯STM32 G431 hal库开发速成——按键+PWM综合案例——按键控制PWM驱动舵机

将按键与PWM结合起来使用,很好的练习项目

weixin_44860466的博客 3830

TBtools的序列提取步骤

本教程详细介绍了如何使用TBtools软件从原来的FASTA序列中提取特定的DNA序列。

weixin_47509995的博客 1万+

AI Agent的数据安全与隐私保护措施

AI Agent(人工智能代理)作为一种能够感知环境、做出决策并采取行动的智能实体,在现代社会的各个领域中得到了广泛的应用,如智能客服、自动驾驶、金融风险评估等。随着其应用的不断拓展,AI Agent处理和存储的数据量急剧增加,这些数据包含了大量的个人敏感信息和商业机密。因此,确保AI Agent的数据安全与隐私保护变得至关重要。本文的目的在于全面探讨AI Agent的数据安全与隐私保护措施,涵盖从数据的采集、存储、处理到传输的整个生命周期。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 2864

STM32F103控制舵机转动

舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180°角度伺服为例,那么对应的控制关系是: 舵机转动0°代表它的占空比是2.5%,转动180°代表它的占空比是12.5%。 设arr(自动重装载值)为x时 转动角度所对应的值=(x+1)*(1-占空比)(将pwm极性设置为TIM_OCPolarity_High时) 转动角度所对应的值=(x+1)*占空比(将pwm极性设置为TIM_OCPolarity_Low时) PWM信

WZH2014825的博客 1万+

CorelDraw插件开发-Cdr插件-CPG插件-GMS插件-安装位置

文章目录1.gms格式插件2.cpg格式插件3.作者答疑   CorelDraw软件是一款使用非常广泛的矢量图形软件,系统本身提供了非常便利的二次开发环境,制作插件的格式有两种,一种是gms格式的脚本插件,另外一种是cpg格式dll插件。 1.gms格式插件   gms格式插件是使用微软的 VBA 技术,编写和调试都比较方便,从9的版本开始支持。   安装:把gms文件复制到程序所安装的目录 gms 下,一般在C:\Program Files\Corel\CorelDRAW Graphics Suite 1

插件开发 2748

用PWM控制舵机(以是stm32为例)

因为做校创需要用到舵机,以前知道大致的理论,因此看了一些帖子,总结一下被以后查看。 什么是PWM波 PWM就是脉冲宽度调制,也就是占空比可变的脉冲波形. pwm的占空比,就是指高电平保持的时间,与该pwm时钟周期时间之比。 在应用中就是通过调节pwm占空比来控制,也就是一个周期中高电平所占的百分比来控制舵机的转角的。   舵机的控制原理         控制舵机所用pwm占空...

Under the Pine 3万+

撸毛笔记-电信营业厅 v5.03

电信营业厅 v5.03签到和完成部分金豆任务, 喂宠物7天,15天,28天连签抽奖, 宠物等级权益兑换自己设置电信的服务密码, 把 手机号#服务密码 填到变量里:每天运行一两次const $ = new Env("电信营业厅");

xiaoshun007的专栏 4494

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

基于STM32 SG90 9g舵机控制

产品参数名称:9克舵机180度尺寸:23mm X 12.2mm X 29mm重量:9克扭矩:1.5kg/cm工作电压:4.2 - 6V温度范围:0 - 55℃运行速度:0.3s/60℃死带宽:10ms暗灰:GND红色:VCC 4.8V - 7.2V橙黄线:脉冲输入在机器人机电控制系统中,舵机控制效果是性能的重要影响因素。舵机可以在微机电系统和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。

Bit_Dong的博客 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: stm32 运行时间测量与间隔执行
下一篇: 机器学习预备-Pandas数据预处理
leida_wt
博客等级 码龄10年 420粉丝 77原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值