STM32单片机(六)TIM定时器 -> 第四节:TIM输出比较练习3(PWM驱动直流电机)

news2024/11/20 6:30:27

❤️ 专栏简介:本专栏记录了从零学习单片机的过程,其中包括51单片机和STM32单片机两部分;建议先学习51单片机,其是STM32等高级单片机的基础;这样再学习STM32时才能融会贯通。
☀️ 专栏适用人群 :适用于想要从零基础开始学习入门单片机,且有一定C语言基础的的童鞋。
🌙专栏目标:实现从零基础入门51单片机和STM32单片机,力求在玩好单片机的同时,能够了解一些计算机的基本概念,了解电路及其元器件的基本理论等。

⭐️ 专栏主要内容: 主要学习STM32单片机的功能、各个模块、单片机的外设、驱动等,最终玩好单片机和单片机的外设,全程手敲代码,实现我们所要实现的功能。
🌴 专栏说明 :如果文章知识点有错误的地方,欢迎大家随时在文章下面评论,我会第一时间改正。让我们一起学习,一起进步。
💑专栏主页:http://t.csdn.cn/HCD8v

本学习过程参考:https://space.bilibili.com/383400717

STM3单片机安装软件、各种资料以及源码的路径:
链接:https://pan.baidu.com/s/1snD0uuTfMhchFqOMWvAiHA?pwd=asdf#list/path=%2F
提取码:asdf

链接里压缩包的解压密码:32

本大节主要学习TIM定时器的相关知识,包含八小节:
第一小节主要学习定时器基本定时的功能,第二小节是对第一小节的内容写两个程序进行练习,分别是定时器定时中断和定时器外部时钟;
第三小节主要学习定时器输出比较的功能,第四小节是对第三小节的内容写三个程序进行练习,分别是PWM驱动LED呼吸灯、PWM驱动舵机以及PWM驱动直流电机;
第五小节主要学习定时器输入捕获的功能,第六小节是对第五小节的内容写两个程序进行练习,分别是输入捕获模式测频率和PWMI模式测频率占空比;
第七小节主要学习定时器的编码器接口功能,第八小节是对第七小节的内容写一个程序进行练习,即编码器接口测速;
最终附上所有的源代码;

本小节是对第三小节TIM输出比较的内容写三个程序进行练习,分别是PWM驱动LED呼吸灯、PWM驱动舵机以及PWM驱动直流电机;也就是使用STM32输出PWM波形,来驱动舵机和直流电机;

文章目录

  • 一、本节目标
  • 二、示例3:PWM驱动直流电机
    • 2.1 接线图
    • 2.2 程序源码

一、本节目标

目标:PWM驱动直流电机

现象:OLED显示当前电机的速度值,按下按键,电机速度由0变为20,再按一下变为40;以此类推,等加到一百后,电机转速达到正向的最大值;如果继续按,则速度变为-100,即反向的最大值,再按,-80,再按-60,以此类推,直到0,电机停止;

在这里插入图片描述

二、示例3:PWM驱动直流电机

2.1 接线图

在这里插入图片描述

  • 红色的是TB6612电机驱动模块,第一个引脚VM,电机电源,同样的也是接在STLINK的5V引脚;第二个VCC,逻辑电源,接在面包板3.3V正极;第三个GNC,电源负极,接在面板吧的负极;之后AO1、AO2,电机输出端,接电机的两根线;STBY,待机控制脚,不需要待机,直接接逻辑电源正3.3V;剩下的三个是控制引脚,AIN1和AIN2是方向控制,任意接两个GPIO就行,这里我们接的是PA4和PA5两个脚;最后一个PWMA是速度控制,需要接PWM的输出脚,这里我们接在了PA2这个引脚;

硬件接线图如下:

在这里插入图片描述

2.2 程序源码

代码路径:

  • STM32入门教程资料\程序源码\STM32Project\6-5 PWM驱动直流电机\User
  • STM32入门教程资料\程序源码\STM32Project\6-5 PWM驱动直流电机\Hardware

具体代码:

#include "stm32f10x.h"                  // Device header
#include "Delay.h"
#include "OLED.h"
#include "Motor.h"
#include "Key.h"

uint8_t KeyNum;
int8_t Speed;

int main(void)
{
	OLED_Init();
	Motor_Init();
	Key_Init();
	
	OLED_ShowString(1, 1, "Speed:");
	
	while (1)
	{
		KeyNum = Key_GetNum();
		if (KeyNum == 1)
		{
			Speed += 20;
			if (Speed > 100)
			{
				Speed = -100;
			}
		}
		Motor_SetSpeed(Speed);
		OLED_ShowSignedNum(1, 7, Speed, 3);
	}
}

Motor.c

#include "stm32f10x.h"                  // Device header
#include "PWM.h"

void Motor_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	PWM_Init();
}

void Motor_SetSpeed(int8_t Speed)
{
	if (Speed >= 0)
	{
		GPIO_SetBits(GPIOA, GPIO_Pin_4);
		GPIO_ResetBits(GPIOA, GPIO_Pin_5);
		PWM_SetCompare3(Speed);
	}
	else
	{
		GPIO_ResetBits(GPIOA, GPIO_Pin_4);
		GPIO_SetBits(GPIOA, GPIO_Pin_5);
		PWM_SetCompare3(-Speed);
	}
}

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

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

相关文章

防近视台灯有效果吗?专家公认的防近视台灯

答案是有的。主要是因为这种护眼台灯的光线都比较柔和,它主要是由发光源和灯具两部分组成。发光源呢主要是以LED灯作为光源,光线比较稳定均匀一点。而灯具的设计可以改善光线的分布,柔化光线,提高均匀度和光照面积等等&#xff0c…

重金属冶炼VR仿真实训教学提高了实验效率

有色金属冶炼VR虚拟实操软件是一种新型的教育工具,它通过VR虚拟现实技术,将学生带入到真实的有色金属冶炼过程中,让学生在模拟环境中进行实践操作,从而提高学生的实践能力和理论知识水平。相比传统的教学方式,有色金属…

vue属性中的数据绑定v-text与响应式操作v-html+vue中鼠标悬停显示效果+布尔值在vue中引用属性中的操作

1&#xff0c;vue属性中的数据绑定v-text与响应式操作v-html 当我们导入vue框架后&#xff0c;对于数据的绑定功能&#xff0c;我们使用v-text的语法功能&#xff1a; <div v-text "message"><div>在该情况下&#xff0c;我们可以输出对应属性的文本&a…

idea服务强制关闭导致mysql某条数据被锁

今天开发测试时候&#xff0c;idea debug模式下报错&#xff0c;数据库表事务没有提交&#xff0c;idea服务强制关闭&#xff0c;导致数据库表某一条记录被锁 1、查进程&#xff0c;查找被锁表的那个进程的ID show processlist;command 为waitting的就是锁住的表&#xff0c;…

LeetCode做题笔记第11题:盛最多水的容器

题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 来源&#xff1a;力扣&#xf…

uni-app 微信小程序端调用扫一扫识别小程序码(菊花码,太阳码)

返回值中&#xff0c;path就是小程序码对应的路径 扫描的码必须本小程序AppID和secret生成的&#xff0c;也可以在小程序后台-->工具-->填写小程序路径 生成进行测试 uni.scanCode({success(res) {console.log(res)} })

error: RPC failed; curl 28 OpenSSL SSL_read: Connection was reset, errno 10054

clone MiniGPT-4的时候报错 Cloning into MiniGPT-4... error: RPC failed; curl 28 OpenSSL SSL_read: Connection was reset, errno 10054 fatal: the remote end hung up unexpectedly解决办法 先 git config --global http.sslVerify "false"然后再clone就好了…

Android-推荐一个RecyclerView悬浮头部(StickyItemDecoration)

在日常Android列表开发当中&#xff0c;我们可能会遇到以下的需求&#xff1a; 我们在滑动列表的时候&#xff0c;头部View置顶不可以滑动. 我刚好看到有一个开源库可以帮我们快速实现,分享出来希望能提高看文章的小伙伴的开发效率. StickyItemDecoration StickyItemDecoration…

三极管开关电路限流电阻怎么选取

这是一个MCU驱动小功率器件的电路&#xff0c;这里仅用小功率灯珠代替负载&#xff0c;电路中用到了一个NPN的三极管&#xff0c;这个三极管在这里充当一个开关。 三极管当作开关时其工作在饱和状态&#xff0c;BE间的电压要大于开启电压&#xff0c;同时BE间的电压大于CE间的电…

【MySQL】数据库 ⑤

✍导出数据 1、使用 SELECT ... INTO OUTFILE 语句导出数据 SELECT...INTO OUTFILE 是 MySQL 用于导出数据的语句&#xff0c;它允许将查询结果保存到指定的文件中。 该语句的基本语法如下&#xff1a; SELECT column1, column2, ... INTO OUTFILE file_path FIELDS TE…

你知道什么是大语言模型吗

在自然语言处理领域&#xff0c;大语言模型是一类十分重要的技术。顾名思义&#xff0c;大语言模型指的是比较“大”的&#xff08;神经网络&#xff09;语言模型&#xff0c;它们以自上文推理词语概率为核心任务。随着机器学习和深度学习技术的不断发展&#xff0c;人工智能的…

【样式静态】创建地址 省市区,详细地址,姓名,联系方式,电话

效果图 uview 2.0 <template><view class"addbox"><view class"order bgf common_p u-border-t"><view class"common_title"><text></text> 客户信息</view><view class"flex_align_cente…

再见Navicat,dbeaver才是真爱

数据库连接工具&#xff0c;后端程序员必须要用到工具&#xff0c;常用的是 Navicat&#xff0c;Navicat是收费工具&#xff0c;如果使用破解的方式可能会收到律师函&#xff0c;今天了不起给大家推荐一款开源免费的数据库连接工具 -- dbeaver。 功能特性 1、几乎支持所有数据…

百度内容审核接口测试

百度内容审核接口测试 1、成为开发者 三步完成账号的基本注册与认证&#xff1a; STEP1&#xff1a;点击百度AI开放平台导航右侧的控制台&#xff0c;选择需要使用的AI服务项。若为未登录状态&#xff0c;将跳转至登录界面&#xff0c;请您使用百度账号登录。如还未持有百度…

Hbase之获取表的Region分布

其实就是获取上图的start key和end key 代码: object HbaseRegions {def main(args: Array[String]): Unit {val hconf: Configuration HBaseConfiguration.create()hconf.set("hbase.zookeeper.property.clientPort", "2181")hconf.set("hbase.zo…

macOS编译开源全景拼接库OpenPano

1. 准备工具 clang与cmake 如果要处理png文件要下载安装libjpeg 安装相当依赖: brew install gnu-sed brew install libjpeg brew install eigen brew install libomp2.克隆源码 git clone --recursive https://github.com/ppwwyyxx/OpenPano.git 3.编译 mkdir build cd …

Pycharm如何完全卸载干净

卸载软件 打开 控制面板->程序和功能->右键卸载 清理缓存 删除本地缓存 删除用户目录下的jetbrains缓存&#xff0c;一般在AppData目录下&#xff0c;如图所示 删除注册表信息 WinR输入regedit&#xff0c;打开注册表&#xff0c;删除如下目录jetbrains文件夹 计算机…

微信小程序,PC端打开时,设置页面最大化和恢复功能

小程序根目录下的 app.json 文件用来对微信小程序进行全局配置&#xff1a;新增属性 "resizable": true, 1.代码示范&#xff1a; 2.官方文档属性

Java集合-HashMap-源码分析

目录 HashMap源码分析 HashMap内部定义的常量与Node节点 HashMap成员变量分析 构造方法 静态工具方法 hash方法 如何计算索引值 tableSizeFor方法 还有没有其他方法得到2的n次幂? 为什么HashMap的数组长度一定是2的n次幂? HashMap核心方法 put方法 将链表转换为…

Excel VBA 多列合并到一列中

有10列&#xff0c;13行数据&#xff0c;按列合并到新建工作表中&#xff0c;空值不添加 Sub 多列合并到同一列() Dim k As Integer Dim ws As Worksheet On Error Resume Next 如遇错误继续运行 Application.ScreenUpdating False 关闭屏幕刷新 Application.DisplayAlerts F…