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);//设置系统中断优先级分组2LED_Init();delay_init(168);  //初始化延时函数uart_init(115200);//初始化串口波特率为115200TIM14_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:%d\r\n",encoder);TIM_SetCompare1(TIM14,400);	//修改比较值,修改占空比delay_ms(1000);encoder = read_encoder();printf("t:%d\r\n",encoder);GPIO_ResetBits(GPIOF,GPIO_Pin_0); //停止GPIO_ResetBits(GPIOF,GPIO_Pin_1);delay_ms(1000);encoder = read_encoder();printf("t:%d\r\n",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:%d\r\n",encoder);TIM_SetCompare1(TIM14,400);	//修改比较值,修改占空比delay_ms(1000);encoder = read_encoder();printf("t:%d\r\n",encoder);}
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部