本文共 2548 字,大约阅读时间需要 8 分钟。
motor.h的代码
#ifndef _MOTOR_H#define _MOTOR_H#include "stm32f10x.h"#include "delay.h"#include "sys.h"/********************************************************接线方式:IN1 ---- B11IN2 ---- B12IN3 ---- B13IN4 ---- B14+ ---- +5V- ---- GND*********************/#define STEP_MOTOR_PORT GPIOB //定义IO接口所在组#define STEP_MOTOR_A GPIO_Pin_8 //定义IO接口#define STEP_MOTOR_B GPIO_Pin_9 //定义IO接口#define STEP_MOTOR_C GPIO_Pin_10 //定义IO接口#define STEP_MOTOR_D GPIO_Pin_11 //定义IO接口#define MOTOR_A_H GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_A)#define MOTOR_B_H GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_B)#define MOTOR_C_H GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_C)#define MOTOR_D_H GPIO_SetBits(STEP_MOTOR_PORT,STEP_MOTOR_D)#define MOTOR_A_L GPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_A)#define MOTOR_B_L GPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_B)#define MOTOR_C_L GPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_C)#define MOTOR_D_L GPIO_ResetBits(STEP_MOTOR_PORT,STEP_MOTOR_D)void STEP_MOTOR_Init(void);//初始化void STEP_MOTOR_OFF (void);//断电状态void MotorCW(void);//顺时针转动void MotorCCW(void);//顺时针转动#endif
motor.c代码
#include "motor.h"//初始化void STEP_MOTOR_Init(void){ //接口初始化 GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE, ENABLE); //APB2外设GPIO时钟使能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//启动AFIO重映射功能时钟 GPIO_InitStructure.GPIO_Pin = STEP_MOTOR_A | STEP_MOTOR_B | STEP_MOTOR_C | STEP_MOTOR_D; //选择端口 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //选择IO接口工作方式 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz) GPIO_Init(STEP_MOTOR_PORT, &GPIO_InitStructure); //必须将禁用JTAG功能才能做GPIO使用 GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);// 改变指定管脚的映射,完全禁用JTAG+SW-DP STEP_MOTOR_OFF(); //初始状态是断电状态 }//断电状态void STEP_MOTOR_OFF (void){ MOTOR_A_L,MOTOR_B_L,MOTOR_C_L,MOTOR_D_L;}//顺时针转动void MotorCW(void){ u16 i; for(i=0;i<100;i++) { MOTOR_A_L,MOTOR_B_L,MOTOR_C_L,MOTOR_D_H; delay_ms(3); MOTOR_A_L,MOTOR_B_L,MOTOR_C_H,MOTOR_D_L; delay_ms(3); MOTOR_A_L,MOTOR_B_H,MOTOR_C_L,MOTOR_D_L; delay_ms(3); MOTOR_A_H,MOTOR_B_L,MOTOR_C_L,MOTOR_D_L; delay_ms(3); } }//顺时针转动void MotorCCW(void){ u16 i;for(i=0;i<500;i++) { MOTOR_A_H,MOTOR_B_L,MOTOR_C_L,MOTOR_D_L; delay_ms(4); MOTOR_A_L,MOTOR_B_H,MOTOR_C_L,MOTOR_D_L; delay_ms(4); MOTOR_A_L,MOTOR_B_L,MOTOR_C_H,MOTOR_D_L; delay_ms(4); MOTOR_A_L,MOTOR_B_L,MOTOR_C_L,MOTOR_D_H; delay_ms(4); } }
转载地址:http://gbyzi.baihongyu.com/