我是靠谱客的博主 自由烧鹅,最近开发中收集的这篇文章主要介绍L298N——驱动AB相编码器电机并测速一、基础知识及原理二、连线图三、遇到问题的解决办法四、程序源码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、基础知识及原理

【STM32小案例 04 】STM32简单使用L298N电机驱动模块 控制直流电机正反转

二、连线图

连线图

三、遇到问题的解决办法

L298N——真正的玄学驱动板

四、程序源码

附主函数:

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "pwm.h"
#include "timer.h"
#include "stm32f4xx_rcc.h"

RCC_ClocksTypeDef get_rcc_clock;    //获取系统时钟状态

int main(void)
{ 
	RCC_GetClocksFreq(&get_rcc_clock);

	int encoder;
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
	LED_Init();
	delay_init(168);  //初始化延时函数
	uart_init(115200);//初始化串口波特率为115200
 	TIM14_PWM_Init(500-1,84-1);	//84M/84=1Mhz的计数频率,重装载值500,所以PWM频率为 1M/500=2Khz. 

	encoder_tim3_init();
	
   while(1) //实现比较值从0-300递增,到300后从300-0递减,循环
	{
		GPIO_SetBits(GPIOF,GPIO_Pin_0); //正转
	  GPIO_ResetBits(GPIOF,GPIO_Pin_1);
		
		TIM_SetCompare1(TIM14,0);	//修改比较值,修改占空比
		delay_ms(1000);
		encoder = read_encoder();
    printf("t:%drn",encoder);
		
		TIM_SetCompare1(TIM14,400);	//修改比较值,修改占空比
		delay_ms(1000);
		encoder = read_encoder();
    printf("t:%drn",encoder);

	  GPIO_ResetBits(GPIOF,GPIO_Pin_0); //停止
		GPIO_ResetBits(GPIOF,GPIO_Pin_1);
		delay_ms(1000);
		encoder = read_encoder();
    printf("t:%drn",encoder);
		
	  GPIO_ResetBits(GPIOF,GPIO_Pin_0); //反转
		GPIO_SetBits(GPIOF,GPIO_Pin_1);
		
		TIM_SetCompare1(TIM14,0);	//修改比较值,修改占空比
		delay_ms(1000);
		encoder = read_encoder();
    printf("t:%drn",encoder);
		
		TIM_SetCompare1(TIM14,400);	//修改比较值,修改占空比
		delay_ms(1000);
		encoder = read_encoder();
    printf("t:%drn",encoder);
	}
}

最后

以上就是自由烧鹅为你收集整理的L298N——驱动AB相编码器电机并测速一、基础知识及原理二、连线图三、遇到问题的解决办法四、程序源码的全部内容,希望文章能够帮你解决L298N——驱动AB相编码器电机并测速一、基础知识及原理二、连线图三、遇到问题的解决办法四、程序源码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部