motor.h的代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39#ifndef _MOTOR_H #define _MOTOR_H #include "stm32f10x.h" #include "delay.h" #include "sys.h" /* ******************************************************* 接线方式: IN1 ---- B11 IN2 ---- B12 IN3 ---- B13 IN4 ---- 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代码
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57#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); } }
最后
以上就是开心秋天最近收集整理的关于28BYJ4+ULN2003驱动板的全部内容,更多相关28BYJ4+ULN2003驱动板内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复