找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2609|回复: 1
打印 上一主题 下一主题
收起左侧

stm32控制步步进电机,角度控制与速度控制程序

[复制链接]
跳转到指定楼层
楼主
stm32控制步步进电机,角度控制与速度控制程序
引脚定义:
步进电机驱动器        
PB8----PULS+:脉冲输出
PB9----DIR+:方向输出
按键
PB12----KEY1
PB13----KEY2      
PB14----KEY3
PB15----KEY4
槽型光耦模块
PB11----Sensor_Input
24c16 EEPROM 存储器
PC13----IIC_SDA
PC14----IIC_SCL   
串口通讯
PA09(TXD)----RXD
PA10(RXD)----TXD



单片机源程序如下:
  1. //步进电机启动程序
  2. #include "sys.h"
  3. #include "delay.h"
  4. #include "usart.h"
  5. #include "input.h"
  6. #include "output.h"
  7. #include "24cxx.h"

  8. vu32 speed=1000;//步进电机速度设定
  9. s8 procedure;//记录移动次数

  10. u8 TEXT_Buffer[]={120,124,100,126,127};//存放将要写入24c02数据
  11. #define SIZE sizeof(TEXT_Buffer)//获取字节长度,保证写入读取数据长度相同       
  12. u8 datatemp[SIZE];//存放从24c02读取的数据

  13. u32 TEXT_32Buffer=65535;//存放将要写入24c02数据32位
  14. u32 data32_temp;//存放从24c02读取的数据32位


  15. u8 a=0,b=0;
  16. int main(void)
  17. {
  18. delay_init();//延时函数初始化       
  19. uart_init(9600);       
  20. Signal_Input_Init();//GPIO IN初始化
  21. Signal_Output_Init();//GPIO OUT初始化
  22. AT24CXX_Init();       
  23.         while(AT24CXX_Check())//检测不到24c02
  24.         {
  25.                 printf("检测不到24cXX\r\n") ;
  26.                 delay_ms(1000);
  27.                 break;       
  28.         }       
  29.         while(1)
  30.         {               
  31.        if(KEY_Scan(0,KEY1))   
  32.            {                          
  33.            Fixed_Pulse_Output(0,625);
  34.            procedure++;
  35.           if(procedure>16)procedure=0;          
  36.            printf("procedure+=%d\r\n",procedure);   
  37.        AT24CXX_Write(0,TEXT_Buffer,SIZE);//写入数据
  38.                   
  39. //                   for(a=0;a<SIZE;a++)
  40. //                   {
  41. //                printf("TEXT_Buffer=%d\r\n",TEXT_Buffer[a]);                                  
  42. //                   }
  43.                 AT24CXX_Read(0,datatemp,SIZE);//读取数据
  44. //            for(b=0;b<SIZE;b++)
  45. //                   {
  46. //                printf("datatemp=%d\r\n",datatemp[b]);   
  47. //                   }
  48.                   
  49.                   
  50.            }  
  51.            if(KEY_Scan(0,KEY2))   
  52.            {
  53.            Fixed_Pulse_Output(1,625);
  54.            procedure--;
  55.            if(procedure<0)procedure=16;                  
  56.            AT24CXX_WriteLenByte(10,TEXT_32Buffer,4);
  57.           // printf("TEXT_32Buffer=%d\r\n",TEXT_32Buffer);
  58.            data32_temp=AT24CXX_ReadLenByte(10,4);   
  59.        //printf("data32_temp=%d\r\n",data32_temp);
  60.            printf("procedure-=%d\r\n",procedure);
  61.            }
  62.            if(KEY_Scan(0,KEY3))   
  63.            {
  64.                         while(speed)
  65.                         {                       
  66.                      Succession_Pulse_Output(0,speed );                               
  67.         //             printf("speed=%d\r\n",speed) ;
  68.                                 if(KEY_Scan(0,KEY4))   
  69.                            {
  70.                                 speed+=1000;  
  71.                                    if(speed>10000)speed=1000;
  72.                                    printf("speed=%d\r\n",speed) ;
  73.                            }   
  74.                                 if(Sensor_Input==1)
  75.                                 {
  76.                                 procedure=0;       
  77.                                 break;       
  78.                                 }                                               
  79.                     }
  80.                  printf("procedure=%d\r\n",procedure) ;       
  81.            }
  82.                
  83.                   
  84.         }
  85. }
复制代码

所有代码51hei附件下载:
步进电机驱动程序-STM32F103C8T6.7z (187.6 KB, 下载次数: 86)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:144730 发表于 2021-8-4 14:25 | 只看该作者
硬件测试OK
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表