STM32之舵机转动————寄存器版

2023-10-28

以STM32F407VGT6单片机为例---------控制舵机转动的角度0-180°

#include "pwm.h"
/*
函数名:tim3_ch4_pwm
函数功能:舵机配置
返回值:void
形参:void
函数说明:
红色线 --- 5V
棕色线 --- GND
橘色线 --- PB1 --- TIM3_CH4
*/

void tim3_ch4_pwm(void)
{
	/*IO控制器配置*/
	//端口时钟使能
	RCC->AHB1ENR |= (1<<1);
	//端口模式配置-------复用模式
	GPIOB->MODER &= ~(3<<2);
	GPIOB->MODER |= (2<<2);                 //复用
	//输出类型
	GPIOB->OTYPER &= ~(1<<1); 
	//输出速度
	GPIOB->OSPEEDR &= ~(3<<2);
	//上下拉
	GPIOB->PUPDR &= ~(3<<2);
	//复用功能寄存器
	GPIOB->AFR[0] &= ~(0xf<<4);
	GPIOB->AFR[0] |= (2<<4);              //PB1复用到TIM13_CH1
	
	
	/*通用定时器控制器配置*/
	//定时器时钟使能
	RCC->APB1ENR |= 1 << 1;//打开TIM3时钟
	//CR1
	TIM3->CR1 &=~ (3 << 5);//选择边沿对齐模式
	TIM3->CR1 &=~ (1 << 4);//递增计数
	TIM3->CR1 &=~ (1 << 3);//循环计数
	//设置一个1ms周期    ARR:1000      PSC:84
	//PSC  
	TIM3->PSC = 840 - 1;
	//ARR  
	TIM3->ARR = 2000 - 1;
	/*输出比较配置*/
	//SMCR
	TIM3->SMCR &=~ (7 << 0);//选择内部时钟源
	
	//CCMRx
	TIM3->CCMR2 &=~ (3 << 8);//配置通道1为输出
	TIM3->CCMR2 |= 1 << 11;//使能通道1输出比较影子寄存器预装载
	TIM3->CCMR2 |= 6 << 12;//选择为PWM1模式
	//CCER
	TIM3->CCER |= 1 << 12;//使能输出比较
	TIM3->CCER &=~ (1 << 13);//有效电平为高电平
	//PSC
	//CCRx
	TIM3->CCR4 = 500;                    //比较寄存器初始值
	//EGR
	TIM3->EGR |= (1<<0);               //人为产生更新事件,更新到影子寄存器
	
	//使能通道1              
	//计数器使能
	TIM3->CR1 |= (1<<0);
}



void SetServoAngle(unsigned char angle)
{
	unsigned short pulse = 0;
	//针对舵机可转角度限辐
	if(angle <= 5)		angle = 5;
	if(angle >= 175)	angle = 175;
	//将角度值转换为脉冲值  
	pulse = (unsigned short)(50 + angle * 100 / 90.0);  //此转换公式需根据pwm的arr及psc配置来做相应变化
	
	TIM3->CCR4 = pulse;
}
#include "main.h"
#include "pwm.h"



int main()
{
	
	

	
	tim3_ch4_pwm();//舵机初始化
	printf("初始化成功!!!!!!!\r\n");
	
	SetServoAngle(90);//转动角度90°
	
	while(1)
	{
		
		
		
	}	
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32之舵机转动————寄存器版 的相关文章

  • chatgpt赋能python:Python求全排列的介绍

    Python求全排列的介绍 在计算机科学中 全排列是一种排列的形式 将一组元素按照固定的顺序安排 在Python中 可以使用递归和迭代来求解全排列问题 本文将介绍如何用Python求全排列以及如何在SEO方面优化文章 递归方法 递归方法是通
  • 新形势下,企业如何进行数字化转型 附下载地址

    2020年谈企业数字化转型 有一个不变和四个变 不变的是企业面临的整体宏观环境和企业 多年发展积累的运营模式和管理能力 因此企业数字化转型面临的固有难点依然存在 四个 变化因素是疫情影响 5G部署 人工智能 AI 加快应用 以及中美技术加速

随机推荐