• 大小: 6KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-16
  • 语言: 其他
  • 标签: stm32  步进电机  

资源简介

stm32单片机控制42步进电机,能够实现x,y轴水平移动。

资源截图

代码片段和文件信息

/*******************************************************************************
* 文件名          : main.c
* 作者            : jackice
* 时间   :2013/8/10
* 文件描述        : EN:PA.0 CLK:PA.1;DIR:PA.2
******两个电机同时走动,可以通过给定不同频率的脉冲、不同脉冲数达到两个电机走速不同,走的距离不同************
**********134个脉冲 电机走1mm;1345个脉冲 电机走10mm;13450个脉冲电机走100mm;******
********************************************************************************/

/* 头文件    ------------------------------------------------------------------*/

#include “stm32f10x_lib.h“


#define en0_0()   GPIO_ResetBits(GPIOA  GPIO_Pin_0)   //宏定义
#define en0_1()   GPIO_SetBits(GPIOA  GPIO_Pin_0)
#define en1_0()   GPIO_ResetBits(GPIOA  GPIO_Pin_4)   //宏定义
#define en1_1()   GPIO_SetBits(GPIOA  GPIO_Pin_4)
#define clk0_0()  GPIO_ResetBits(GPIOA  GPIO_Pin_1)
#define clk0_1()  GPIO_SetBits(GPIOA  GPIO_Pin_1)
#define clk1_0()  GPIO_ResetBits(GPIOA  GPIO_Pin_5)
#define clk1_1()  GPIO_SetBits(GPIOA  GPIO_Pin_5)
#define dir0_0()  GPIO_ResetBits(GPIOA  GPIO_Pin_2)   
#define dir0_1()  GPIO_SetBits(GPIOA  GPIO_Pin_2)
#define dir1_0()  GPIO_ResetBits(GPIOA  GPIO_Pin_3)   
#define dir1_1()  GPIO_SetBits(GPIOA  GPIO_Pin_3)



/* 自定义同义关键字    --------------------------------------------------------*/

/* 自定义参数宏        --------------------------------------------------------*/

/* 自定义函数宏        --------------------------------------------------------*/

/* 自定义变量          --------------------------------------------------------*/

/* 自定义函数声明      --------------------------------------------------------*/

void RCC_Configuration(void);
void GPIO_Configuration(void);
void delay(u32 i);
void motor_contrl(u32 Xstepsu8 Xdirectionu16 Xspeedu32 Ystepsu8 Ydirectionu16 Yspeedu32 setps);



/*******************************************************************************
* 函数名  : main
* 函数描述       : 无
* 输入参数       : 无
* 输出结果       : 无
* 返回值         : 无
*******************************************************************************/

int main(void)
{
   
   /* 设置系统时钟 */
   RCC_Configuration();

   /* 设置GPIO端口 */
   GPIO_Configuration();

/*打开使能端*/
  en0_1();
en1_1();
  while(1)
 {
  motor_contrl(10310313450);
delay(100000);
motor_contrl(11311313450);
delay(100000);
 }
}



/*******************************************************************************
* 函数名 : RCC_Configuration
* 函数描述  : 设置系统各部分时钟
* 输入参数  : 无
* 输出结果  : 无
* 返回值    : 无
*******************************************************************************/

void RCC_Configuration(void)
{
/* 定义枚举类型变量 HSEStartUpStatus */
ErrorStatus HSEStartUpStatus;

   /* 复位系统时钟设置*/
   RCC_DeInit();

   /* 开启HSE*/
   RCC_HSEConfig(RCC_HSE_ON);

   /* 等待HSE起振并稳定*/
   HSEStartUpStatus = RCC_WaitForHSEStartUp();

/* 判断HSE起是否振成功,是则进入if()内部 */
   if(HSEStartUpStatus == SUCCESS)
   {
     /* 选择HCLK(AHB)时钟源为SYSCLK 1分频 */
     RCC_HCLKCon

评论

共有 条评论