单片机源程序如下:

#include "stm32f10x.h"

#include "stm32f10x_rcc.h"

#include "misc.h"

void RCC_Configuration(void);

void GPIO_Configuration(void);

void ZhengZhuan(u16 tt);

void FanZhuan(u16 tt);

void delay_ms(u16 nms);

/****************************************************************************

* 名    称:int main(void)

* 功    能:主函数

* 入口参数:无

* 出口参数:无

* 说    明:

* 调用方法:无

****************************************************************************/

int main(void)

{

RCC_Configuration();        //系统时钟设置及外设时钟使能

GPIO_Configuration();

while (1)

{

//读取PC5管脚的输入状态         K1

if (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_5) == Bit_RESET)

{

ZhengZhuan(5);//高速

}

//读取PC5管脚的输入状态           K2

if (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_1) == Bit_RESET)

{

FanZhuan(5);//高速

}

//读取PC2管脚的输入状态            K3

if (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_2) == Bit_RESET)

{

ZhengZhuan(10);//低速

}

//读取PC3管脚的输入状态            K4

if (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_3) == Bit_RESET)

{

FanZhuan(10);//低速

}

GPIO_ResetBits(GPIOD, GPIO_Pin_3);

GPIO_ResetBits(GPIOD, GPIO_Pin_6);

GPIO_ResetBits(GPIOD, GPIO_Pin_12);

GPIO_ResetBits(GPIOE, GPIO_Pin_4);

}

}

/****************************************************************************

* 名    称:void RCC_Configuration(void)

* 功    能:系统时钟配置为72MHZ, 外设时钟配置

* 入口参数:无

* 出口参数:无

* 说    明:

* 调用方法:无

****************************************************************************/

void RCC_Configuration(void)

{

SystemInit();

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE , ENABLE);

}

/****************************************************************************

* 名    称:void GPIO_Configuration(void)

* 功    能:LED控制口线及键盘设置

* 入口参数:无

* 出口参数:无

* 说    明:

* 调用方法:无

****************************************************************************/

void GPIO_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;                                //端口配置结构体

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;                        //PD3管脚

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //口线翻转速度为50MHz

GPIO_Init(GPIOD, &GPIO_InitStructure);                        //初始化端口

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;                        //PD6管脚

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //口线翻转速度为50MHz

GPIO_Init(GPIOD, &GPIO_InitStructure);                        //初始化端口

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;                //PD12管脚

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //口线翻转速度为50MHz

GPIO_Init(GPIOD, &GPIO_InitStructure);                        //初始化端口

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;                        //PE4管脚

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //口线翻转速度为50MHz

GPIO_Init(GPIOE, &GPIO_InitStructure);                        //初始化端口

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                        //PC5管脚

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                //输入上拉

GPIO_Init(GPIOC, &GPIO_InitStructure);                        //初始化端口

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;                        //PC1管脚

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                //输入上拉

GPIO_Init(GPIOC, &GPIO_InitStructure);                        //初始化端口

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;                        //PC2管脚

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                //输入上拉

GPIO_Init(GPIOC, &GPIO_InitStructure);                        //初始化端口

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;                        //PC3管脚

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;                //输入上拉

GPIO_Init(GPIOC, &GPIO_InitStructure);                        //初始化端口

}

//电机正转函数

void ZhengZhuan(u16 tt)

{

//1100

GPIO_SetBits(GPIOD, GPIO_Pin_3);

GPIO_SetBits(GPIOD, GPIO_Pin_6);

GPIO_ResetBits(GPIOD, GPIO_Pin_12);

GPIO_ResetBits(GPIOE, GPIO_Pin_4);

delay_ms(tt);

//0110

GPIO_ResetBits(GPIOD, GPIO_Pin_3);

GPIO_SetBits(GPIOD, GPIO_Pin_6);

GPIO_SetBits(GPIOD, GPIO_Pin_12);

GPIO_ResetBits(GPIOE, GPIO_Pin_4);

delay_ms(tt);

//0011

GPIO_ResetBits(GPIOD, GPIO_Pin_3);

GPIO_ResetBits(GPIOD, GPIO_Pin_6);

GPIO_SetBits(GPIOD, GPIO_Pin_12);

GPIO_SetBits(GPIOE, GPIO_Pin_4);

delay_ms(tt);

//1001

GPIO_SetBits(GPIOD, GPIO_Pin_3);

GPIO_ResetBits(GPIOD, GPIO_Pin_6);

GPIO_ResetBits(GPIOD, GPIO_Pin_12);

GPIO_SetBits(GPIOE, GPIO_Pin_4);

delay_ms(tt);

}

//电机反转函数

void FanZhuan(u16 tt)

{

//1001

GPIO_SetBits(GPIOD, GPIO_Pin_3);

GPIO_ResetBits(GPIOD, GPIO_Pin_6);

GPIO_ResetBits(GPIOD, GPIO_Pin_12);

GPIO_SetBits(GPIOE, GPIO_Pin_4);

delay_ms(tt);

//0011

GPIO_ResetBits(GPIOD, GPIO_Pin_3);

GPIO_ResetBits(GPIOD, GPIO_Pin_6);

GPIO_SetBits(GPIOD, GPIO_Pin_12);

GPIO_SetBits(GPIOE, GPIO_Pin_4);

delay_ms(tt);

//0110

GPIO_ResetBits(GPIOD, GPIO_Pin_3);

GPIO_SetBits(GPIOD, GPIO_Pin_6);

GPIO_SetBits(GPIOD, GPIO_Pin_12);

GPIO_ResetBits(GPIOE, GPIO_

关键字:

STM32控制

步进电机

计数器

编辑:什么鱼 引用地址:

http://news.eeworld.com.cn/mcu/ic502811.html

本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

步进电机c语言源代码 stm32,STM32控制步进电机源代码相关推荐

  1. STM32+TB6600控制步进电机调节转速

    1.用到的元器件 STM32F103C8T6 42步进电机 TB6600电机驱动器 2.步进电机相关知识 通用42步进电机: 步距角 1.8° 步距角精度 ±5% 相数 2相 励磁方式 混合式 转子齿 ...

  2. arduino步进电机程序库_Arduino入门教程15(步进电机驱动库的使用):Arduino Uno R3+ULN2003+步进电机 使用Stepper驱动库,控制步进电机转动角度...

    本篇介绍步进电机驱动库的使用,通过读取电位器输入,控制步进电机转动相应角度. Stepper库是官方提供的驱动库,我们启动Arduino IDE,点击「文件」-「示例」就能找到Stepper库,官方提 ...

  3. 基于STM32之控制步进电机,学到即赚到!(含主代码)

    目录 前言 一.关于步进电机那点事 二.接线问题 三.主要代码 四.总结 前言 最近发现电机类的步进电机挺有趣的,于是趁快开学了有空再码一篇,分享一下自己的学习心得,有哪里写的不好欢迎随时指正. 一. ...

  4. python控制步进电机驱动器_树莓派通过GPIO控制步进电机(python)

    步进电机的驱动程序一样是让我费了好大力气才使他正常工作,在代码上走了不少弯路 树莓派不建议直接使用舵机,虽然舵机方便,而且仅需要一根信号线,不过需要舒服pwm信号,而新版的b+板子已经没有了物理的pw ...

  5. 【C语言】STM32控制步进电机——一种S形加减速曲线的推导与实现

    目录 1 前言 2 理论分析 2.1 选择曲线 2.2 计算函数方程 2.3 单位分析 2.4 模拟验证 3 两种代码实现 3.1 速度与时间关系 3.1.1 原理 3.1.2 优点 3.1.3 缺点 ...

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

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

  7. K_A07_003 基于 STM32等单片机驱动DRV8825模块按键控制步进电机正反转

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

  8. stm32f302实现斩波控制步进电机_spwm超级无敌stm32步进电机控制教程

    spwm超级无敌stm32步进电机控制教程 [复制链接] 本帖最后由 huo_hu 于 2014-3-10 14:00 编辑 本教程介绍步进电机驱动和细分的工作原理,以及stm32103为主控芯片制作 ...

  9. 利用stm32控制步进电机 速度加速度控制

    因为想申请 CSDN 博客认证需要一定的粉丝量,而我写了五年博客才 700 多粉丝,本文开启关注才可阅读全文,很抱歉影响您的阅读体验 利用stm32控制步进电机 尝试用42系步进电机做倒立摆,总结步进 ...

最新文章

  1. vsftpd配置文件详解
  2. Django和uwsgi,配合nginx做静态缓存
  3. python对字符串和集合的内存垃圾回收机制
  4. SpringBoot+MyBatisPlus整合时提示:Invalid bound statement(not found):**.dao.UserDao.queryById
  5. 分布式资源管理框架YARN的运行流程
  6. android手机设置时间设置,如何设置电信定制手机日期与时间
  7. java encode 空格_javaWeb中URLEncoder.encode空格问题
  8. dcom无法在此计算机运行,DCOM遇到错误“无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动”的解决...
  9. AMP (LAMP/WAMP)
  10. Mac 10.12安装数据库管理工具MySQL Workbench
  11. excel自动合并两列
  12. 如何调整gif动图的速度?1分钟在线调节gif动图速度
  13. Python Selenium 疑难杂症解方(一):启动浏览器
  14. iOS 边学边记 升级ios14 Xcode真机调试启动非常慢的问题解决
  15. Boost(一)——Boost简介
  16. theHarvester使用
  17. Java基础篇:什么是hashCode 以及 hashCode()与equals()的联系
  18. 解决maven项目-Dmaven.multiModuleProjectDirectory报错
  19. iPhone 开发基础教程
  20. 物联网 期末复习习题(特别全(第二篇))

热门文章

  1. 玩扫雷还有什么技巧?科学家的玩游戏方法你绝对想不到
  2. 亚马逊/关键词搜索挑战
  3. 西蒙·威利森的博客对博客的建议
  4. 如何在Ubuntu QML应用中使用Push Notification
  5. PDF压缩工具:PDF Squeezer Mac
  6. 皮尔逊相关系数php,生信分析网站(相关性分析)
  7. 语音处理:Python实现dBFS刻度和采样值相互转换
  8. Qt 添加MSVC2017编译器(2022年保姆级教程,不安装完整VS)
  9. 三相PWM四象限可控整流器,网侧电压与电流同相位
  10. 形象快速理解贝叶斯定理