STM32单片机驱动L298N
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相关推荐
- K_A08_001 基于 STM32等单片机驱动L298N模块按键控制直流电机启停正反转加减速
目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 L298N模块驱动时序 对应程序: ENA ENB输出PWM 四.部分代码说明 接线说明 1.STC89C52RC+L298N模 ...
- STM32单片机驱动全彩LED模块遍历百万种颜色
一.使用硬件 分享一个趣味的实验,单片机PWM驱动全彩LED模块,快速遍历100万种颜色. 单片机为STM32F103C8T6,三色LED模块如下图(图片来源于网络) 二.STM32CubeMx配置 ...
- STM32单片机驱动LCD12864(型号:OCM J4X8C)
0.内容简介 软件:Keil uVision5.Image2LCD 2.9 硬件:STM32F103C8T6.LCD12864(金鹏OCM J4X8C,控制芯片ST7920) 描述:STM32F103 ...
- STM32单片机驱动DS18B20
为了方便移值,把ds18b20驱动用ds18b20.c 和ds18b20.h封装起来 ds18b20.c代码如下 #include "ds18b20.h"unsigned char ...
- 基于STM32单片机驱动HX711的代码分享,仅供参考
最近在搞一个需要加入称重模块的项目,在调试的时候也是遇到了很够狗血的问题,也参考了别的工程师的设计.所以,闲话少叙,上代码 /************************************ ...
- STM32单片机LED显示屏驱动原理与实现
STM32单片机驱动LED显示屏的原理与实现方法与Arduino类似,但涉及到的具体硬件资源和库函数可能会有所不同.下面是一个详细的介绍: 原理: STM32单片机驱动LED显示屏的原理是通过控制GP ...
- 基于STM32单片机一氧化碳(CO)气体监控系统proteus仿真设计
本设计是基于STM32单片机CO气体检测系统仿真设计(仿真+程序+原理图+仿真视频) 仿真图proteus 8.9 程序编译器:keil 5 编程语言:C语言 设计编号:C0045 主要功能: 1.S ...
- K_A08_009 基于 STM32等单片机驱动TB6612模块按键控制直流电机正反转加减速启停
目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 TB6612模块驱动说明 对应程序: ENA ENB输出PWM 四.部分代码说明 接线说明 1.STC89C52RC+TB661 ...
- K_A08_005 基于 STM32等单片机驱动XY-160D模块按键控制直流电机正反转加减速启停
目录 一.资源说明 二.基本参数 四.部分代码说明 接线说明 1.STC89C52RC+XY-160D模块 2.STM32F103C8T6+XY-160D模块 五.基础知识学习与相关资料下载 六.视频 ...
- K_A08_004 基于 STM32等单片机驱动MX1919模块按键控制直流电机正反转加减速启停
目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 1.MX1919模块驱动时序 2.对应程序: 3.PWM信号 四.部分代码说明 接线说明 1.STC89C52RC+MX1919 ...
最新文章
- leetcode解题文件夹
- 数据库表及字段命名、设计规范
- 沟通科技:将引领接入革命第三次浪潮
- Springboot之actuator配置不当漏洞(autoconfig、configprops、beans、dump、env、health、info、mappings、metrics、trace)
- linux根据进程名称,查看后台任务的运行目录
- linux目录创立文件硬链接,在Linux中创建文件目录软链接、硬链接的方法
- android 5.0三星,转自【XDA】安卓(Android 5.0)L主题
- 贺州计算机学院,贺州学院
- 演练:在 ASP.NET 中缓存应用程序数据
- pmp 资料_1年 = 15300订阅 + 超100万次收听 (感恩有您,这些PMP备考资料您值得拥有!)...
- php 取出最后一数组元素,PHP取出数组中最后一个元素的方法汇总
- python--爬虫51job(3.1)
- C++四书五经_完整版(侯捷)
- 大众碰到点评的一个字体反爬,落地技术也是绝了
- 云原生|容器和应用安全运营实践思考
- 华为手机忘记密码如何解开,有什么相关教程吗
- 小程序点击按钮分享功能
- Static Clutter Removal DPU
- 同比、定比和环比分析
- 朴素贝叶斯——垃圾邮件过滤
热门文章
- mmdetection tools工具梳理
- 网课答题查询助手(免费)
- 自考本科的单科成绩包括英语和计算机吗,自考问题自考统考科目(例如:英语,计算机等 – 手机爱问...
- Unity面试题加强版之三《Unity脚本基础》
- Unity Shader 一 激光特效Shader
- composition api在项目中的使用总结
- 知识图谱概述(金融场景图谱)
- Codeforces Problem-705A Hulk
- 计算机整个桌面偏左,教你win10电脑屏幕往左偏怎么办
- 【转载】C++编码规范与指导