600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 步进电机c语言源代码 stm32 STM32控制步进电机源代码

步进电机c语言源代码 stm32 STM32控制步进电机源代码

时间:2023-12-05 04:53:09

相关推荐

步进电机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控制

步进电机

计数器

编辑:什么鱼 引用地址:

/mcu/ic502811.html

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。