L298N的工作原理及电路接线以在之前一章博客中讲解完毕,讲解了三种接线方式的区别,及建议。https://blog.csdn.net/m0_59113542/article/details/121038048?spm=1001.2014.3001.5501

本文章主要讲解STM32的驱动程序

一、L298N的逻辑控制

众所周知,L298N可以驱动两个电机,分别为通道A、通道B。

ENA是通道A的使能端,也就是通道A使能的跳线帽(跳线帽插着就是使能,大家不用管它);

IN1、IN2:逻辑输入引脚(板子上那四个排针就是,其中左侧两个为通道A的IN1、IN2;右侧的为通道B的,大家使用那个通道就用对应两个引脚控制),根据表格控制这两个引脚的高低电平就可控制电机正反转转;

二、注意事项

L298N可以使用我那篇文章介绍的三种方式,但其GND一定要与单片机的GND相连,确保共地,从而有参考电平。

三、STM32驱动程序

使用PWM占空比进行控制其转速,PA4→IN1、PA5→IN2的逻辑电平控制其正反转。

main.c文件

#include "delay.h"
#include "usart.h"
#include "timer.h"int main(void){     delay_init();                                        //延迟函数初始化    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);    //中断优先级分组设置uart_init(115200);                                   //串口初始化设置TIM3_PWM_Init(450,7199);   //PWM输出初始化while(1){//设置通道2的占空比实现PWM调速,这里是100,在0~450间,越小速度越快TIM_SetCompare2(TIM3,100);GPIO_SetBits(GPIOA,GPIO_Pin_4); GPIO_ResetBits(GPIOA,GPIO_Pin_5);  delay_ms(3000);TIM_SetCompare2(TIM3,100);GPIO_SetBits(GPIOA,GPIO_Pin_5); GPIO_ResetBits(GPIOA,GPIO_Pin_4);delay_ms(3000);}     }

time.c文件

#include "timer.h"
#include "led.h"
#include "usart.h"//TIM3 PWM部分初始化
//PWM输出初始化
//arr:自动重装载值
//psc 时钟预分频系数
void TIM3_PWM_Init(u16 arr,u16 psc)
{  GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;TIM_OCInitTypeDef  TIM_OCInitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);   //使能定时器3时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);  //使能GPIO外设时钟//初始化IOPA4GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);GPIO_ResetBits(GPIOA,GPIO_Pin_4);       //初始化IOPA5GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_ResetBits(GPIOA,GPIO_Pin_5);      //初始化IOPA7GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   //复用推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化TIM3TIM_TimeBaseStructure.TIM_Period = arr; //自动重装载值TIM_TimeBaseStructure.TIM_Prescaler =psc; //预分频系数TIM_TimeBaseStructure.TIM_ClockDivision = 0; //设置时钟分割TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //向上计数模式TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure); //初始化TIM3 Channel2     TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择PWM模式2TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low ; //输出比较极性地TIM_OC2Init(TIM3, &TIM_OCInitStructure);  TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);  //使能定时器3通道2预装载寄存器TIM_Cmd(TIM3, ENABLE);  //使能TIM3
}

time.h文件

#ifndef __TIMER_H
#define __TIMER_H
#include "sys.h"void TIM3_PWM_Init(u16 arr,u16 psc);
#endif

以上是简单的代码实现,大家可以根据自己实际情况调整修改。

欢迎大家指正交流,有空可以一起讨论代码啊。

制作不易,感谢大家支持,感谢!!!!!!

--------------一个正在努力的人

STM32单片机驱动L298N相关推荐

  1. K_A08_001 基于 STM32等单片机驱动L298N模块按键控制直流电机启停正反转加减速

    目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 L298N模块驱动时序 对应程序: ENA ENB输出PWM 四.部分代码说明 接线说明 1.STC89C52RC+L298N模 ...

  2. STM32单片机驱动全彩LED模块遍历百万种颜色

    一.使用硬件 分享一个趣味的实验,单片机PWM驱动全彩LED模块,快速遍历100万种颜色. 单片机为STM32F103C8T6,三色LED模块如下图(图片来源于网络) 二.STM32CubeMx配置 ...

  3. STM32单片机驱动LCD12864(型号:OCM J4X8C)

    0.内容简介 软件:Keil uVision5.Image2LCD 2.9 硬件:STM32F103C8T6.LCD12864(金鹏OCM J4X8C,控制芯片ST7920) 描述:STM32F103 ...

  4. STM32单片机驱动DS18B20

    为了方便移值,把ds18b20驱动用ds18b20.c 和ds18b20.h封装起来 ds18b20.c代码如下 #include "ds18b20.h"unsigned char ...

  5. 基于STM32单片机驱动HX711的代码分享,仅供参考

    最近在搞一个需要加入称重模块的项目,在调试的时候也是遇到了很够狗血的问题,也参考了别的工程师的设计.所以,闲话少叙,上代码 /************************************ ...

  6. STM32单片机LED显示屏驱动原理与实现

    STM32单片机驱动LED显示屏的原理与实现方法与Arduino类似,但涉及到的具体硬件资源和库函数可能会有所不同.下面是一个详细的介绍: 原理: STM32单片机驱动LED显示屏的原理是通过控制GP ...

  7. 基于STM32单片机一氧化碳(CO)气体监控系统proteus仿真设计

    本设计是基于STM32单片机CO气体检测系统仿真设计(仿真+程序+原理图+仿真视频) 仿真图proteus 8.9 程序编译器:keil 5 编程语言:C语言 设计编号:C0045 主要功能: 1.S ...

  8. K_A08_009 基于 STM32等单片机驱动TB6612模块按键控制直流电机正反转加减速启停

    目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 TB6612模块驱动说明 对应程序: ENA ENB输出PWM 四.部分代码说明 接线说明 1.STC89C52RC+TB661 ...

  9. K_A08_005 基于 STM32等单片机驱动XY-160D模块按键控制直流电机正反转加减速启停

    目录 一.资源说明 二.基本参数 四.部分代码说明 接线说明 1.STC89C52RC+XY-160D模块 2.STM32F103C8T6+XY-160D模块 五.基础知识学习与相关资料下载 六.视频 ...

  10. K_A08_004 基于 STM32等单片机驱动MX1919模块按键控制直流电机正反转加减速启停

    目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 1.MX1919模块驱动时序 2.对应程序: 3.PWM信号 四.部分代码说明 接线说明 1.STC89C52RC+MX1919 ...

最新文章

  1. leetcode解题文件夹
  2. 数据库表及字段命名、设计规范
  3. 沟通科技:将引领接入革命第三次浪潮
  4. Springboot之actuator配置不当漏洞(autoconfig、configprops、beans、dump、env、health、info、mappings、metrics、trace)
  5. linux根据进程名称,查看后台任务的运行目录
  6. linux目录创立文件硬链接,在Linux中创建文件目录软链接、硬链接的方法
  7. android 5.0三星,转自【XDA】安卓(Android 5.0)L主题
  8. 贺州计算机学院,贺州学院
  9. 演练:在 ASP.NET 中缓存应用程序数据
  10. pmp 资料_1年 = 15300订阅 + 超100万次收听 (感恩有您,这些PMP备考资料您值得拥有!)...
  11. php 取出最后一数组元素,PHP取出数组中最后一个元素的方法汇总
  12. python--爬虫51job(3.1)
  13. C++四书五经_完整版(侯捷)
  14. 大众碰到点评的一个字体反爬,落地技术也是绝了
  15. 云原生|容器和应用安全运营实践思考
  16. 华为手机忘记密码如何解开,有什么相关教程吗
  17. 小程序点击按钮分享功能
  18. Static Clutter Removal DPU
  19. 同比、定比和环比分析
  20. 朴素贝叶斯——垃圾邮件过滤

热门文章

  1. mmdetection tools工具梳理
  2. 网课答题查询助手(免费)
  3. 自考本科的单科成绩包括英语和计算机吗,自考问题自考统考科目(例如:英语,计算机等 – 手机爱问...
  4. Unity面试题加强版之三《Unity脚本基础》
  5. Unity Shader 一 激光特效Shader
  6. composition api在项目中的使用总结
  7. 知识图谱概述(金融场景图谱)
  8. Codeforces Problem-705A Hulk
  9. 计算机整个桌面偏左,教你win10电脑屏幕往左偏怎么办
  10. 【转载】C++编码规范与指导