文章目录

  • 前言
  • 一、硬件部分
    • 1.使用的硬件
    • 2.硬件连接
    • 3.总硬件连接图
  • 二、控制步进电机转动
  • 三、电机驱动代码
    • 1.GPIO.h
    • 2.timer.c
    • 3.main.c
  • 代码文件

前言

控制步进电机可以使用PWM、定时器中断、延时,这里用的就是
定时器中断来让它转动。

一、硬件部分

1.使用的硬件

板子用的是正点原子的STM32F103 mini板,驱动器是DM420(DM420驱动器资料),用开关电源供电,电机就是普通的42步进电机,步距角为1.8°,虽然按照图片来看它是个蠕动泵。如下图

2.硬件连接

PUL+——PB0,脉冲输入
DIR+——PB1,方向使能
ENA+——PB2,脱机使能,共阴极接法的话,输入低电平,让它无效。
这里连接驱动器采用共阴极接法,如图

3.总硬件连接图

二、控制步进电机转动

想让它转,简单的说就是高电平,低电平循环输入,产生脉冲,让它转动。
其转速与产生脉冲频率有关:

arr:自动重装载寄存器的值
psc:定时器频率
α为步距角(1.8°),x为驱动器细分倍数(设置为2,也就是说转动一圈需要400个脉冲,每个脉冲转动0.9度)
脉冲频率 = Fck_int(72MHZ) / ((arr+1)*(psc+1))
转速(r/min)= 脉冲频率 * 60 / ((360/α)*x)

假如我将arr设置为100-1,psc设置为7200-1,则脉冲频率为100Hz,转速为15r/min.

三、电机驱动代码

1.GPIO.h

#ifndef __GPIO_H
#define __GPIO_H
#include "sys.h"#define LED0 PAout(8) // PA8,测试是否进入中断#define PUL PBout(0)  //脉冲输出
#define DIR PBout(1)  //方向使能
#define ENA PBout(2)  //脱机使能void GPIO_Init(void);//端口初始化#endif

2.timer.c

#include "timer.h"
#include "led.h"void TIM3_Int_Init(u16 arr,u16 psc)
{TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能TIM_TimeBaseStructure.TIM_Period = arr;TIM_TimeBaseStructure.TIM_Prescaler =psc;TIM_TimeBaseStructure.TIM_ClockDivision = 0;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //TIM向上计数模式TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //初始化TIMx的时间基数单位TIM_ITConfig(TIM3,TIM_IT_Update ,ENABLE);NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  //TIM3中断NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  //先占优先级0级NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;  //从优先级3级NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能NVIC_Init(&NVIC_InitStructure);  //初始化外设NVIC寄存器TIM_Cmd(TIM3, ENABLE);  //使能TIMx外设}void TIM3_IRQHandler(void)
{if(TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)//是否发生中断{       PUL = !PUL;LED0 = !LED0;  }TIM_ClearITPendingBit(TIM3,TIM_IT_Update);  //清除TIMx的中断待处理位:TIM 中断源
}

3.main.c

#include "GPIO.h"
#include "delay.h"
#include "sys.h"
#include "timer.h"int main(void){ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2GPIO_Init();            //初始化连接的硬件接口ENA = 0; //脱机使能失效TIM3_Int_Init(99,7199);//72MHz / ((99+1)*(7199+1)) =100Hzwhile(1){;           }
}

代码文件

CSDN:https://download.csdn.net/download/weixin_51649181/32713617
对于一些积分/C币不够的小伙伴对于一些积分/C币不够的小伙伴,链接就放这了:
https://pan.baidu.com/s/12mM-IK6k8j8O1BH9czQbDA
提取码:rv6t
如果你觉得好的话可以给我点个赞!

用STM32定时器中断产生PWM控制步进电机相关推荐

  1. STM32控制步进电机:基于定时器中断的ULN2003驱动器/步进电机驱动程序

    STM32控制步进电机:基于定时器中断的ULN2003驱动器/步进电机驱动程序 一.ULN2003驱动器 1.工作原理 2.步距角以及一圈所需步数的计算 二.硬件连接 三.STM32F103定时器中断 ...

  2. STM32定时器中断

    目录 一.关于STM32定时器中断 1.定时器分类 2.通用定时器的功能特点 3.定时器中断的触发 4.定时时钟计算方法 二.CubeMX初始化配置 1.芯片选型(我们这里运用的STM32F103C8 ...

  3. stm32定时器中断的配置步骤

    stm32定时器中断的配置步骤 1>TIM3 时钟使能 位于低速的APB1总线上(注意:高级定时器是在高速的APB2总线上): RCC_APB1PeriphClockCmd(RCC_APB1Pe ...

  4. STM32L475裸机例程学习 定时器中断和PWM输出实验

    定时器中断和PWM输出实验 所以阿-笔记的重要性哇!之前看过的内容在做后面的内容涉及到了发现没有笔记,看的时间太久远,竟然全部忘记了,真是个悲伤的故事:( 那就重来吧.由于这两个实验都跟TIM定时器关 ...

  5. 7. STM32——定时器中断(1秒闪烁灯)

    STM32--定时器中断(1秒闪烁灯) 基本框架 1. 配置定时器时钟 在 stm32f10x_rcc.h 头文件中查找相关函数函数 2. 配置定时器结构体 在 stm32f10x_tim.h 头文件 ...

  6. 【CubeMX配置stm32定时器中断】

    CubeMX配置stm32定时器中断 一.使用CubeMX对STM32进行基础的配置 1.选择需要使用的定时器 选择TIM2和TIM3示例, 注意: TIM2和其它定时器选择时钟的方法不同,TIM3等 ...

  7. stm32定时器中断配置及使用

    stm32定时器中断配置及使用 定时器中断就是:可以周期性的执行某些功能,而不受main函数的影响. 我们以通用定时器time3为例说明 1.首先配置时钟源为内部时钟,分频和充装载值根据自己需要填入, ...

  8. STM32定时器中断显示时间

    前言 利用STM32的定时器中断,实现时间的显示.我们知道利用定时器中断只能进行tick的计算,然而用来显示时间我们应该怎么办呢?经过项目的实际运用,我发现利用定时器中断配合串口通讯也能实现时间显示. ...

  9. C51使用定时器中断产生PWM方波信号

      使用定时器中断产生PWM方波信号,完成50个频率为1KZ的矩形脉冲输出,P20端口接LED闪烁,用于演示.   矩形脉冲频率为1KZ,周期则为1ms, 中断为0.5ms, 所以T0: TH0=(6 ...

最新文章

  1. 下载 NCBI sra 文件
  2. 判断某值是否属于枚举类中的值_编写高质量可维护的代码之优化逻辑判断
  3. DCMTK:DSRNumericMeasurementValue类的测试程序
  4. The World is a Theatre(组合数学)
  5. HDU 3966 Aragorn's Story (树链点权剖分,成段修改单点查询)
  6. boost.asio防止恶意空连接的方法
  7. 鼠标移动或者鼠标点击div消失不见排查
  8. 关于Cortex-M3处理器内核中断异常处理机制你了解多少?
  9. Java : ServiceLoader详解
  10. 百度 UEditor--自定义上传文件路径及读取文件
  11. 关于遥感图像的控制点片匹配算法的一点想法(一)
  12. C语言—预定义宏调试__LINE__、__func__
  13. 2017年数学建模美赛个人国际一等奖论文
  14. linux 下安装安装rzsz命令
  15. linux查看trunk信息,linux网卡启用trunk模式操作标准.docx
  16. Android开发前景及现状分析
  17. 计算机程序设计员英语单词,计算机程序设计员个人英文简历
  18. 揭秘世上唯一无癌国家吃什么?原来肿瘤也有克星
  19. 一步搞定IP地址查询:这个在线工具帮你快速掌握设备的位置信息!
  20. RFID防盗安全门在图书馆的应用

热门文章

  1. MacBook Pro拓展坞失灵问题的解决建议
  2. 从2020全球前十的数字货币交易所甄别风险
  3. Photoshop 去除图片中文字六个方法
  4. wilson免费视频学习网站
  5. C# AutoCAD二次开发: 读取DWG文件将全部实体变为一个块。
  6. [附源码]计算机毕业设计springboot房产中介管理系统
  7. thinksnsv4.6运行php,开源微博系统ThinkSNS电脑版
  8. 今夕何夕 今天是2017年8月6日,农历闰六月十五。 小度独自凭栏,望着一轮圆月,发出了“今夕何夕,见此良人”的寂寞感慨。
  9. 利用Java爬取基金网站的基金数据,快速筛选优质热门基金
  10. gstreamer之G_DEFINE_TYPE