stm32f407驱动20KG 270度舵机

本文详细介绍了如何使用STM32F407ZGT6单片机通过PWM技术驱动20KG 270度舵机。内容涵盖PWM原理、舵机工作原理、STM32F407的定时器配置、占空比概念以及代码实现,包括定时器分频、自动重装载值的计算和PWM模式选择。
摘要由CSDN通过智能技术生成

这里写自定义目录标题

前言

在学习的过程中发现,及时复习是一个好的学习习惯,本文记录使用STM32F407ZGT6控制20KG 270度舵机的学习过程,以便日后复习。

PWM概述

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。广泛应用在从测量、通信到功率控制与变换的许多领域中。简单一点,就是对脉冲宽度的控制,PWM 原理如图:
请添加图片描述
“图一”

其中:
CNT:计数器

ARR:重装值寄存器

CCRx:比较寄存器

通过参考手册中可知,stm32f407出了定时器6,7没有产生PWM功能,其他定时器都有。我上网看了一些教程,发现大多都是利用PA0
的定时器2通道1产生PWM,但是我PA0使用了按键触发外部中断,所以换成了PA1定时器2通道2。
在这里插入图片描述
在配置PWM之前,再来说一个知识,占空比。
占空比:占空比是指在一个脉冲循环内,通电时间(可能是高电平也可能是低电平)相对于总时间所占的比例。
在这里插入图片描述
这里我上网找了一张图片,其实很简单,就是脉冲宽度占总时间的比例,就是占空比。

代码讲解

废话不多说,我们以便将代码,一边说,上代码:
首先初始化结构体,开启定时器2和端口A的时钟,这没什么好说的。

	GPIO_InitTypeDef 			GPIO_InitStructure;
	TIM_TimeBaseInitTypeDef  	TIM_TimeBaseStructure;
	TIM_OCInitTypeDef  			TIM_OCInitStructure;
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);  	//TIM2时钟使能  
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); 	//使能PORTA时钟

然后看stm32f407ZGT6的引脚定义,这小小的一步其实很关键,记得刚开始学习的时候没有看引脚定义,当时用到了PA14,但是PA14主功能并不是普通的GPIO,所以怎么都不能成功看到效果,我找到了PA1的引脚定义如下图
在这里插入图片描述
另外,我还找到了全面的STM32F407ZGT6引脚功能表,大家要使用请自动移步(好吧,只是我懒,懒得在搬过来了,见谅)https://blog.csdn.net/u011510016/article/details/100404880
通过图中可以看出PA1的主功能就是PA1,但是我们要使用它的定时器功能,所以要复用一下,关于复用的概念,我就不在此赘述了
直接上代码:

GPIO_PinAFConfig(GPIOA,GPIO_PinSource1,GPIO_AF_TIM2); //GPIOA1复用为定时器2

这个函数很好理解啊,就是把A端口1号引脚复用为定时器2模式
在这里插入图片描述
这里我帮大家找到了这个函数的注释,大家英语水平都很好,咱也就不翻译了,直接看就好,是不是嘎嘎简单!
接下来就是引脚的配置了

	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;  
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值