本資源主要是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)
2019-5-23 02:48 上傳
點擊文件名下載附件
本資源主要是STM32RCT6的步進電機驅動程序程序,利用A4988驅動模塊驅動42步進電機轉動任意的角度,希望可以 ...
|