本资源主要是STM32RCT6的步进电机驱动程序程序,利用A4988驱动模块驱动42步进电机转动任意的角度,希望可以和大家一起交流探讨。
单片机源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "usart.h"
- #include "sys.h"
- void Delay(__IO uint32_t nCount) //简单的延时函数
- {
- for(; nCount != 0; nCount--);
- }
- /*GPIO_motornum和GPIOx用于选择电机,GPIO_direction用于选择电机方向,dir:0为逆1为正,k为90°的倍数*/
- void motor(GPIO_TypeDef* GPIOx, uint16_t GPIO_motornum, uint16_t GPIO_direction, unsigned int dir, unsigned int k)
- {
- unsigned int i, steps;
- steps = 50*k;
- switch(dir)
- {
- case 0 : GPIO_SetBits(GPIOx,GPIO_direction); break;
- case 1 : GPIO_ResetBits(GPIOx,GPIO_direction); break;
- default : break;
- }
- for(i = 0;i < steps; i++)
- {
- GPIO_SetBits(GPIOx,GPIO_motornum);
- Delay(5000); //周期1.3ms 5000为步进电机转90度的周期
- GPIO_ResetBits(GPIOx,GPIO_motornum);
- Delay(5000);
- }
- Delay(9000); //延时一会
- }
- int main(void)
- {
- delay_init(); //延时函数初始化
- LED_Init(); //初始化与LED连接的硬件接口
- // while(1)
- // {
- // GPIO_ResetBits(GPIOA,GPIO_Pin_8); //LED0输出低
- // GPIO_SetBits(GPIOD,GPIO_Pin_2);//LED1输出高
- // delay_ms(300);
- // GPIO_SetBits(GPIOA,GPIO_Pin_8);//LED0输出高
- // GPIO_ResetBits(GPIOD,GPIO_Pin_2);//LED1输出低
- // delay_ms(300);
- // }
- // while(1)
- //{
-
- motor(GPIOC, GPIO_Pin_11,GPIO_Pin_10,1,1); //第一个1表示方向,第二个1表示旋转90度
-
-
- //}
-
- }
复制代码
所有资料51hei提供下载:
ALIENTEK MINISTM32 步进电机驱动.7z
(180.93 KB, 下载次数: 169)
|