步进电机c语言源代码 stm32,STM32控制步进电机源代码
单片机源程序如下:
#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控制步进电机源代码相关推荐
- STM32+TB6600控制步进电机调节转速
1.用到的元器件 STM32F103C8T6 42步进电机 TB6600电机驱动器 2.步进电机相关知识 通用42步进电机: 步距角 1.8° 步距角精度 ±5% 相数 2相 励磁方式 混合式 转子齿 ...
- arduino步进电机程序库_Arduino入门教程15(步进电机驱动库的使用):Arduino Uno R3+ULN2003+步进电机 使用Stepper驱动库,控制步进电机转动角度...
本篇介绍步进电机驱动库的使用,通过读取电位器输入,控制步进电机转动相应角度. Stepper库是官方提供的驱动库,我们启动Arduino IDE,点击「文件」-「示例」就能找到Stepper库,官方提 ...
- 基于STM32之控制步进电机,学到即赚到!(含主代码)
目录 前言 一.关于步进电机那点事 二.接线问题 三.主要代码 四.总结 前言 最近发现电机类的步进电机挺有趣的,于是趁快开学了有空再码一篇,分享一下自己的学习心得,有哪里写的不好欢迎随时指正. 一. ...
- python控制步进电机驱动器_树莓派通过GPIO控制步进电机(python)
步进电机的驱动程序一样是让我费了好大力气才使他正常工作,在代码上走了不少弯路 树莓派不建议直接使用舵机,虽然舵机方便,而且仅需要一根信号线,不过需要舒服pwm信号,而新版的b+板子已经没有了物理的pw ...
- 【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 缺点 ...
- STM32控制步进电机:基于定时器中断的ULN2003驱动器/步进电机驱动程序
STM32控制步进电机:基于定时器中断的ULN2003驱动器/步进电机驱动程序 一.ULN2003驱动器 1.工作原理 2.步距角以及一圈所需步数的计算 二.硬件连接 三.STM32F103定时器中断 ...
- K_A07_003 基于 STM32等单片机驱动DRV8825模块按键控制步进电机正反转
目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 SETP时序 对应程序: 细分说明 程序 四.部分代码说明 1.接线说明 1.1.STC89C52RC+DRV8825模块 1. ...
- stm32f302实现斩波控制步进电机_spwm超级无敌stm32步进电机控制教程
spwm超级无敌stm32步进电机控制教程 [复制链接] 本帖最后由 huo_hu 于 2014-3-10 14:00 编辑 本教程介绍步进电机驱动和细分的工作原理,以及stm32103为主控芯片制作 ...
- 利用stm32控制步进电机 速度加速度控制
因为想申请 CSDN 博客认证需要一定的粉丝量,而我写了五年博客才 700 多粉丝,本文开启关注才可阅读全文,很抱歉影响您的阅读体验 利用stm32控制步进电机 尝试用42系步进电机做倒立摆,总结步进 ...
最新文章
- vsftpd配置文件详解
- Django和uwsgi,配合nginx做静态缓存
- python对字符串和集合的内存垃圾回收机制
- SpringBoot+MyBatisPlus整合时提示:Invalid bound statement(not found):**.dao.UserDao.queryById
- 分布式资源管理框架YARN的运行流程
- android手机设置时间设置,如何设置电信定制手机日期与时间
- java encode 空格_javaWeb中URLEncoder.encode空格问题
- dcom无法在此计算机运行,DCOM遇到错误“无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动”的解决...
- AMP (LAMP/WAMP)
- Mac 10.12安装数据库管理工具MySQL Workbench
- excel自动合并两列
- 如何调整gif动图的速度?1分钟在线调节gif动图速度
- Python Selenium 疑难杂症解方(一):启动浏览器
- iOS 边学边记 升级ios14 Xcode真机调试启动非常慢的问题解决
- Boost(一)——Boost简介
- theHarvester使用
- Java基础篇:什么是hashCode 以及 hashCode()与equals()的联系
- 解决maven项目-Dmaven.multiModuleProjectDirectory报错
- iPhone 开发基础教程
- 物联网 期末复习习题(特别全(第二篇))