手把手入门STM32 ——步进电机操作

2023-05-16

Uln2003驱动五线四向布进电机

(按一次按键步进电机约旋转60°)

Uln2003.h

#ifndef __ULN_H
#define __ULN_H

#include "Systick.h"
#include "stm32f10x.h"

#define IN1_PORT_CLK  RCC_APB2Periph_GPIOA
#define IN1_PORT			 GPIOA
#define IN1_PORT_PIN  GPIO_Pin_4

#define IN2_PORT_CLK  RCC_APB2Periph_GPIOA
#define IN2_PORT			 GPIOA
#define IN2_PORT_PIN  GPIO_Pin_5

#define IN3_PORT_CLK  RCC_APB2Periph_GPIOA
#define IN3_PORT			 GPIOA
#define IN3_PORT_PIN  GPIO_Pin_6

#define IN4_PORT_CLK  RCC_APB2Periph_GPIOA
#define IN4_PORT			 GPIOA
#define IN4_PORT_PIN  GPIO_Pin_7



void ULN_Init(void); //IO初始化
void Stepper(void);
#endif

Uln2003.c

#include "uln2003.h"

//按键初始化函数
void ULN_Init(void) //IO初始化
{
	GPIO_InitTypeDef GPIO_InitStructure;

	RCC_APB2PeriphClockCmd(IN1_PORT_CLK | IN2_PORT_CLK | IN3_PORT_CLK | IN4_PORT_CLK, ENABLE); //使能PORTA,PORTC时钟

	GPIO_InitStructure.GPIO_Pin  = IN1_PORT_PIN;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Init(IN1_PORT, &GPIO_InitStructure);//初始化GPIO

	GPIO_InitStructure.GPIO_Pin  = IN2_PORT_PIN;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Init(IN2_PORT, &GPIO_InitStructure);//初始化GPIO

	GPIO_InitStructure.GPIO_Pin  = IN3_PORT_PIN;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Init(IN3_PORT, &GPIO_InitStructure);//初始化GPIO

	GPIO_InitStructure.GPIO_Pin  = IN4_PORT_PIN;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Init(IN4_PORT, &GPIO_InitStructure);//初始化GPIO
}


void Stepper()
{
		u8 i;
		for(i=0;i<86;i++)
		{
				GPIO_SetBits(GPIOA, GPIO_Pin_4);	
				Delay_ms(4);
				GPIO_ResetBits(GPIOA, GPIO_Pin_4);	
				GPIO_SetBits(GPIOA, GPIO_Pin_7);	
				Delay_ms(4);
				GPIO_ResetBits(GPIOA, GPIO_Pin_7);	
				GPIO_SetBits(GPIOA, GPIO_Pin_6);	
				Delay_ms(4);
				GPIO_ResetBits(GPIOA, GPIO_Pin_6);	
				GPIO_SetBits(GPIOA, GPIO_Pin_5);	 
				Delay_ms(4);
				GPIO_ResetBits(GPIOA, GPIO_Pin_5);	
		}
}

注:INT1(PA^4)

INT2(PA^5)

INT3(PA^6)

INT4(PA^7)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手把手入门STM32 ——步进电机操作 的相关文章

  • STM32在Debug时程序运行时间不对,Debug时定时器中断每次进入断点时间不对,定时器一开启就进入中断的解决办法

    一 Debug时程序时间不对解决办法 1 点击魔术棒 2 点击Debug 点击Settings 3 点击Trace 在Core Clock里修改为你的系统时钟 二 Debug时定时器中断每次进入断点时间不对 在Debug时 程序停下来 定时
  • 51单片机 数码管中断操作

    实践目的 1 掌握中断的概念和思想 2 掌握51单片机中断系统和相关软硬件设计 实践内容 1 利用单片机的P0口接数码管的字段脚 P1 0脚接共阴极 P3 2 P3 3引脚接独立按键产生外部中断信号 编写程序 当程序正常运行时数码管显示H字
  • 如何更改闪存的起始地址?

    我正在使用 STM32F746ZG 和 FreeRTOS Flash的起始地址是0x08000000 但我想把它改成0x08040000 我通过谷歌搜索了这个问题 但没有找到解决方案 我更改了链接器脚本 如下所示 MEMORY RAM xr
  • 在地址“0xXXXXXX”处中断,没有可用的调试信息,或在程序代码之外

    配置 使用 Nucleo L476RG 使用 GNU ARM Eclipse 我从 STM32CubeMX 生成了一个极简代码 我已经在我的板载 ST Link 中刷新了 J link 驱动程序 一直在尝试为我的代码运行调试器 但我的程序计
  • 在没有 IDE 的情况下如何使用 CMSIS?

    我正在使用 STM32F103C8T6 并想使用 CMSIS 这本质上只是寄存器定义 没有代码 让我的生活更轻松 同时仍保持在较低水平 问题是我不知道如何安装该库以便在命令行上使用 Makefile 使用 所有文档似乎都与特定于供应商的 I
  • CMSIS 库是否应该包含在版本控制中? [复制]

    这个问题在这里已经有答案了 通常 我曾经在版本控制中包含芯片供应商 ST 提供的设备特定标头和源以及 CMSIS Core 标头 数量不多 也没有更新的习惯 我使用STM32微控制器 但我不使用立方体框架 or the 标准外设库 最近 我
  • 优化 ARM Cortex M3 代码

    我有一个 C 函数 它尝试将帧缓冲区复制到 FSMC RAM 这些函数将游戏循环的帧速率降低至 10FPS 我想知道如何分析反汇编的函数 我应该计算每个指令周期吗 我想知道CPU把时间花在哪里 在哪个部分 我确信该算法也是一个问题 因为它的
  • [MM32硬件]搭建灵动微MM32G0001A6T的简易开发环境

    作为学习单片机的经典 自然是通过GPIO点亮LED 或者是响应按钮的外部中断例程 这我们看看SOP8封装的芯片MM32G0001A6T得引脚 除了VDD和GND固定外 我们可以使用PA14 PA1 PA13 PA15 PA2 PA3这六个G
  • 解决KEIL编译慢问题

    两种方案 使用v6版本的ARM Compiler 如果v6版本编译不过 必须使用v5版本的 则可以勾选掉Browse Information选项 提升很明显 1分多钟能优化到几秒 看代码量 但是这个有个弊端 在KEIL中会影响函数跳转 建议
  • 最终启动顺序错误 - STM32L476 的 Eclipse System Workbench 调试

    我正在尝试调试和运行 STM32L476 的简单汇编代码 我已经设置了 Eclipse Oxygen 在 Eclipse 中安装了最新版本的 System Workbench 插件并安装了 ST Link 驱动程序 IDE 成功构建了程序
  • 毕设开题分享 单片机智能教室系统(智能照明+人数统计)

    1 简介 Hi 大家好 今天向大家介绍一个学长做的单片机项目 单片机智能教室系统 智能照明 人数统计 大家可用于 课程设计 或 毕业设计 项目分享 https gitee com feifei1122 simulation project
  • Freertos低功耗管理

    空闲任务中的低功耗Tickless处理 在整个系统运行得过程中 其中大部分时间都是在执行空闲任务的 空闲任务之所以执行 因为在系统中的其他任务处于阻塞或者被挂起时才会执行 因此可以将空闲任务的执行时间转换成低功耗模式 在其他任务解除阻塞而准
  • CMSIS & STM32,如何开始? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在 STM32 上使用 CMSIS 启动项目 网上一搜 没找到具体的教程 有些使用 SPL 开始项
  • 核心耦合内存在 STM32F4xx 上可执行吗?

    尝试从 STM32F429s CCM 运行代码 但每当我命中 CCM 中的第一条指令时 我总是会遇到硬故障 并且 IBUSERR 标志被设置 该指令有效且一致 STM32F4xx 是否可能不允许从 CCM 执行 数据访问效果良好 alios
  • 通过JTAG恢复STM32 MCU磨掉的标记

    我有一块可能带有 STM32 MCU 的板 我想为该板制作定制固件 因为库存板有很多问题 不幸的是 电路板制造商很友善地磨掉了所有标记 有没有办法通过 jtag 获取设备 系列 ID 并将其交叉引用到型号 我能找到的一切都是关于获取芯片的唯
  • 嵌入式 C++11 代码 — 我需要 volatile 吗?

    采用 Cortex M3 MCU STM32F1 的嵌入式设备 它具有嵌入式闪存 64K MCU固件可以在运行时重新编程闪存扇区 这是由闪存控制器 FMC 寄存器完成的 所以它不像a b那么简单 FMC 获取缓冲区指针并将数据刻录到某个闪存
  • STM32 上的位置无关代码 - 指针

    我已成功在 STM32 上构建并运行位置无关的代码 向量表和 GOT 已修补 一切正常 但我对这样的代码有问题 double myAdd double x return x 0 1 double ptrmyAdd double myAdd
  • 在 Contiki 程序中使用 malloc

    考虑以下 Contiki 程序 include
  • 使用 STM32F0 ADC 单独读取不同的输入

    STM32F072CBU 微控制器 我有多个 ADC 输入 并且希望单独读取它们 STMcubeMX 生成样板代码 假设我希望按顺序读取所有输入 但我无法弄清楚如何纠正这个问题 这篇博文 http blog koepi info 2015
  • stm32l0: 执行MI命令失败。使用 vFlashErase 数据包擦除闪存时出错

    我正在使用 Nucleo STM32L031 和 AC6 STM32 工作台 eclipse 我编写应用程序并进入调试模式 一切正常 直到我在应用程序中添加另一个功能 我注意到当我删除 评论 新函数 软件可以再次进入调试模式 但是当我添加

随机推荐

  • linux突然所有命令未找到,显示bash: xxxxx: command not found...

    出现这个问题是因为系统的环境变量没有正确配置造成的 xff0c 造成这个原因有很多 xff0c 解决的方式有两种 一 xff1a 直接在linux命令行界面输入如下 xff0c 然后回车 xff08 导入环境变量 xff0c 以及shell
  • HTML5——如何在网页中加入图片和超链接。

    声明 xff1a 此页内容极度简单 xff0c 觉得low的话我可以不看 寻找图片 xff0c 把图片的位置记好 xff0c 并且重命名 xff0c 方便寻找 写出基本框架 xff0c 引用 lt img gt 标签 找出你需要跳转的网页
  • MacOS VsCode C++连接mysql

    使用Cmake 1 CmakeLists txt配置 cmake minimum required VERSION 3 18 project MYSQL include directories 34 usr local mysql 8 0
  • Linux系统MySQL8版本修改密码的方法

    MySQL8和MySQL5修改密码的sql差别很大 xff0c 用了MySQL5的修改方法还可能掉坑里面 xff0c 本文介绍8版本的修改方法 1 登录MySQL mysql uroot p密码 2 切换到user数据库 use mysql
  • 用warp给minio测压

    拉取Docker镜像 看到拉取的warp镜像已经跑起来了 这里的docker run minio warp v0 4 5 h 就是查看 help文档 xff0c 上面那条语句原型是docker run minio warp v0 4 5 w
  • SpringBoot中的service报空指针异常

    SpringBoot中的service报空指针异常 异常排查 xff1a 1 检查Service是否加了 64 Service注解 2 Controller中的属性service是否加了 64 Autowired注解 3 检查所写的对外接口
  • 本地上运行正常,但是部署到了服务器却一直验证码错误(Nginx反向代理导致的session丢失问题)

    最近做一个课程项目 xff0c 在本地开发完后部署到服务器上 xff0c 一切都比较顺利 但是在登录用户的时候却一直显示验证码错误 xff01 xff01 xff01 排错过程 1 代码检查2 参数检查3 外层检查4 直接访问5 通过Ngi
  • 如何在Golang中使用MongoDB的事务

    如何在Golang中使用MongoDB的事务 一 Mongo中的事务1 Mongo新特性2 基于会话的事务3 事务相关命令 二 搭建Mongo副本集1 安装MongoDB2 环境变量配置3 创建副本集目录3 1 创建主节点相关目录3 2 创
  • Golang中AK/SK认证的实现

    Golang实现AK SK认证 一 AK SK概述1 什么是AKSK2 AK SK认证过程 二 AK SK认证例子1 设计ak sk的请求参数2 数据库中保存sk3 客户端生成签名4 服务端校验签名 一 AK SK概述 1 什么是AKSK
  • BC20 AT指令测试

    1 准备工作 1 1 单片机型号 1 2 软件准备 下载链接 xff1a https pan baidu com s 1uLPwV2OuvxP6X6eq Eplow 提取码 xff1a rc77 1 3 程序下载 在网盘资料中下载名为dem
  • 模拟Docker为容器建立bridge网络

    模拟Docker为容器建立bridge网络 1 安装docker2 创建Nginx容器3 手动为容器设置网络4 验证网络 在阅读本文之前 xff0c 请先了解一下linux的namespace机制 1 安装docker Centos下安装
  • Golang服务端对接Google Play结算系统订阅

    Google订阅 公司产品需要需对Google订阅 xff0c 查了很多资料和相关文档 xff0c 最终总结出以下内容 如果本文中存在任何不准确的地方 xff0c 请不吝指出 xff0c 我会尽快改正 Google相关文档 xff1a 销售
  • (八) OAuth 2.0 认证成功,认证失败,退出成功

    认证成功 监听AuthenticationSuccessEvent xff0c 注意在刷新令牌 xff0c 校验令牌 xff0c 登录密码校验成功都会发布这个事件 xff0c 所以我们需要在监听器里面做一些排查判断 successHandl
  • 单片机组合实验二——定时器,数码管显示

    题目 xff1a 两个数码管 xff0c K1 K2两个按键 xff0c 完成K1启动计数 xff0c K2暂停计数 xff0c 每一秒钟数码管增加1 xff0c 60秒钟后 xff0c 蜂鸣器响一声 xff0c 数码管回归0 xff0c
  • 串口控制蜂鸣器

    题目 xff1a 通过串口助手发送1 xff0c 蜂鸣器以400ms频率发声 xff1b 发送2 xff0c 以200ms频率发声 xff1b 发送3 xff0c 以100ms频率发声 xff1b 发送4 xff0c 蜂鸣器不发声 span
  • 51单片机——简易时钟

    代码 span class token macro property span class token directive keyword include span span class token string 34 reg51 h 34
  • 51单片机—按键控制点阵显示

    名称 xff1a 按键控制 8X8LED 点阵屏显 示图形 说明 xff1a 每次按下 K1 时 xff0c 会使 8X8LED 点阵屏循环显示不同图形 本例同时使用外部中断和定 时中断 span class token macro pro
  • 手把手入门stm32f4 (1)

    GPIO 1 一共有7组IO xff0c 每组有16个口 即一共有16 7 61 112个口 2 每个口基本上都可以触发中断 xff08 区别于51 xff0c 51只有P3 2 P3 2 xff09 3 共有8中输入输出模式 xff08
  • STM32F103 配置Systick

    Systick系统滴答时钟 Systick h ifndef SYSTICK H define SYSTICK H include 34 stm32f10x h 34 void SysTick Init void void Delay ms
  • 手把手入门STM32 ——步进电机操作

    Uln2003驱动五线四向布进电机 xff08 按一次按键步进电机约旋转60 xff09 Uln2003 h span class token macro property span class token directive keywor