您的位置 首页 被动

STM32用IO口操控步进电机的简略程序

练习IO口库函数操作。//相序uint16_tphasecw[4]={0x2000,0x0001,0x0004,0x0008};//D-C-B-Auint16_tphaseccw[4]={0x0008

操练IO口库函数操作。

  1. //相序
  2. uint16_tphasecw[4]={0x2000,0x0001,0x0004,0x0008};//D-C-B-A
  3. uint16_tphaseccw[4]={0x0008,0x0004,0x0001,0x2000};//A-B-C-D
  1. //步进电机相关IO口初始化
  2. //IN4:PC13
  3. //IN3:PC0
  4. //IN2:PC2
  5. //IN1:PC3
  6. voidMoto_Init(void)
  7. {
  8. GPIO_InitTypeDefGPIO_InitStructure;
  9. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//GPIOCLOCKENABLE
  10. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13;
  11. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出
  12. GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//50MHz速率
  13. GPIO_Init(GPIOC,&GPIO_InitStructure);
  14. GPIO_ResetBits(GPIOC,GPIO_Pin_13);//输出低电平
  15. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;
  16. GPIO_Init(GPIOC,&GPIO_InitStructure);
  17. GPIO_ResetBits(GPIOC,GPIO_Pin_0);
  18. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
  19. GPIO_Init(GPIOC,&GPIO_InitStructure);
  20. GPIO_ResetBits(GPIOC,GPIO_Pin_2);
  21. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;
  22. GPIO_Init(GPIOC,&GPIO_InitStructure);
  23. GPIO_ResetBits(GPIOC,GPIO_Pin_3);
  24. }
  1. //电机正转
  2. voidMotorcw(void)
  3. {
  4. uint8_ti;
  5. for(i=0;i<4;i++)
  6. {
  7. GPIO_Write(GPIOC,phasecw[i]);
  8. delay_ms(4);
  9. }
  10. }
  11. //电机回转
  12. voidMotorccw(void)
  13. {
  14. uint8_ti;
  15. for(i=0;i<4;i++)
  16. {
  17. GPIO_Write(GPIOC,phaseccw[i]);
  18. delay_ms(4);
  19. }
  20. }
  21. //点击中止
  22. voidMotorStop(void)
  23. {
  24. GPIO_Write(GPIOC,0x0000);
  25. }

记住使能IO口时钟。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/262591.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部