简单控制步进电机
可实现角度控制
单片机源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "key.h"
- GPIO_InitTypeDef GPIO_Initure;
- TIM_HandleTypeDef TIM3_PWM_Handler;
- TIM_OC_InitTypeDef TIM3_OC_Init;
- void dianji_init()
- {
- GPIO_InitTypeDef GPIO_Initure; //创建io口结构体
-
- __HAL_RCC_GPIOI_CLK_ENABLE(); //使能GPIOI时钟
-
- GPIO_Initure.Pin=GPIO_PIN_0|GPIO_PIN_1; //PI0 PI1
- GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP; //输出模式
- GPIO_Initure.Speed=GPIO_SPEED_HIGH; //高速
- GPIO_Initure.Pull=GPIO_PULLUP; //上拉
- HAL_GPIO_Init(GPIOI,&GPIO_Initure); //初始化PI0 PI1
-
- }
- void dianji(u16 time,u16 maichong,u16 fx)
- {
- u16 mc=0;
- u16 clk=1;
- if(fx==1)
- HAL_GPIO_WritePin(GPIOI,GPIO_PIN_0,GPIO_PIN_SET);
- else
- HAL_GPIO_WritePin(GPIOI,GPIO_PIN_0,GPIO_PIN_RESET);
-
-
- while(mc<maichong)
- { mc++;
- clk=!clk;
-
- if(clk==1)
- HAL_GPIO_WritePin(GPIOI,GPIO_PIN_1,GPIO_PIN_SET);
- else
- HAL_GPIO_WritePin(GPIOI,GPIO_PIN_1,GPIO_PIN_RESET);
-
- delay_ms(time);
-
- }
- }
- int main(void)
- {
- dianji_init();
- Cache_Enable(); //打开L1-Cache
- HAL_Init(); //初始化HAL库
- Stm32_Clock_Init(432,25,2,9); //设置时钟,216Mhz
- delay_init(216); //延时初始化
- while(1)
- {
- dianji(10,100,1);//以1圈/秒的速度旋转90度角
- delay_ms(1000);
- }
- }
-
复制代码
所有资料51hei提供下载:
180724电机驱动测试.7z
(577.25 KB, 下载次数: 38)
|