找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2704|回復(fù): 2
收起左側(cè)

STM32步進(jìn)電機(jī)源碼

[復(fù)制鏈接]
ID:799384 發(fā)表于 2020-7-12 09:42 | 顯示全部樓層 |閱讀模式
motor.c
#include "motor.h"  //導(dǎo)入led頭文件
#include "stm32f10x.h"  //導(dǎo)入STM32官方庫
#include "stm32f10x_rcc.h"  //導(dǎo)入STM32的RCC時(shí)鐘庫
#include "delay.h"       //延時(shí)庫

void RCC_Configuration(void)
{
  SystemInit();
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE , ENABLE);
}

{
  GPIO_InitTypeDef GPIO_InitStructure;                                //端口配置結(jié)構(gòu)體

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;                        //PD3管腳
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //推挽輸出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //口線翻轉(zhuǎn)速度為50MHz
  GPIO_Init(GPIOD, &GPIO_InitStructure);                        //初始化端口      

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;                        //PD6管腳
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //推挽輸出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //口線翻轉(zhuǎn)速度為50MHz
  GPIO_Init(GPIOD, &GPIO_InitStructure);                        //初始化端口      

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;                //PD12管腳
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //推挽輸出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //口線翻轉(zhuǎn)速度為50MHz
  GPIO_Init(GPIOD, &GPIO_InitStructure);                        //初始化端口      

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;                        //PE4管腳
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;         //推挽輸出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //口線翻轉(zhuǎn)速度為50MHz
  GPIO_Init(GPIOE, &GPIO_InitStructure);                        //初始化端口      


}
//電機(jī)正轉(zhuǎn)函數(shù)
void ZhengZhuan(u16 tt)
{
            //1000         
          GPIO_SetBits(GPIOD, GPIO_Pin_3);
          GPIO_ResetBits(GPIOD, GPIO_Pin_6);
          GPIO_ResetBits(GPIOD, GPIO_Pin_12);
          GPIO_ResetBits(GPIOE, GPIO_Pin_4);
          delay_ms1(tt);
              //1100
          GPIO_SetBits(GPIOD, GPIO_Pin_3);
          GPIO_SetBits(GPIOD, GPIO_Pin_6);
          GPIO_ResetBits(GPIOD, GPIO_Pin_12);
          GPIO_ResetBits(GPIOE, GPIO_Pin_4);
          delay_ms1(tt);
              //0100
          GPIO_ResetBits(GPIOD, GPIO_Pin_3);
          GPIO_SetBits(GPIOD, GPIO_Pin_6);
          GPIO_ResetBits(GPIOD, GPIO_Pin_12);
          GPIO_ResetBits(GPIOE, GPIO_Pin_4);
          delay_ms1(tt);
          //0110  
          GPIO_ResetBits(GPIOD, GPIO_Pin_3);
          GPIO_SetBits(GPIOD, GPIO_Pin_6);
          GPIO_SetBits(GPIOD, GPIO_Pin_12);
          GPIO_ResetBits(GPIOE, GPIO_Pin_4);
          delay_ms1(tt);
                  //0010  
          GPIO_ResetBits(GPIOD, GPIO_Pin_3);
          GPIO_ResetBits(GPIOD, GPIO_Pin_6);
          GPIO_SetBits(GPIOD, GPIO_Pin_12);
          GPIO_ResetBits(GPIOE, GPIO_Pin_4);
          delay_ms1(tt);
          //0011
          GPIO_ResetBits(GPIOD, GPIO_Pin_3);
          GPIO_ResetBits(GPIOD, GPIO_Pin_6);
          GPIO_SetBits(GPIOD, GPIO_Pin_12);
          GPIO_SetBits(GPIOE, GPIO_Pin_4);
          delay_ms1(tt);
          //0001
          GPIO_ResetBits(GPIOD, GPIO_Pin_3);
          GPIO_ResetBits(GPIOD, GPIO_Pin_6);
          GPIO_ResetBits(GPIOD, GPIO_Pin_12);
          GPIO_SetBits(GPIOE, GPIO_Pin_4);
          delay_ms1(tt);
                  //1001
          GPIO_SetBits(GPIOD, GPIO_Pin_3);
          GPIO_ResetBits(GPIOD, GPIO_Pin_6);
          GPIO_ResetBits(GPIOD, GPIO_Pin_12);
          GPIO_SetBits(GPIOE, GPIO_Pin_4);
          delay_ms1(tt);
}
//電機(jī)反轉(zhuǎn)函數(shù)
void FanZhuan(u16 tt)
{
          //1001         
          GPIO_SetBits(GPIOD, GPIO_Pin_3);
          GPIO_ResetBits(GPIOD, GPIO_Pin_6);
          GPIO_ResetBits(GPIOD, GPIO_Pin_12);
          GPIO_SetBits(GPIOE, GPIO_Pin_4);
          delay_ms1(tt);
                  //0001
          GPIO_ResetBits(GPIOD, GPIO_Pin_3);
          GPIO_ResetBits(GPIOD, GPIO_Pin_6);
          GPIO_ResetBits(GPIOD, GPIO_Pin_12);
          GPIO_SetBits(GPIOE, GPIO_Pin_4);
          delay_ms1(tt);
          //0011
          GPIO_ResetBits(GPIOD, GPIO_Pin_3);
          GPIO_ResetBits(GPIOD, GPIO_Pin_6);
          GPIO_SetBits(GPIOD, GPIO_Pin_12);
          GPIO_SetBits(GPIOE, GPIO_Pin_4);
          delay_ms1(tt);
          //0010  
          GPIO_ResetBits(GPIOD, GPIO_Pin_3);
          GPIO_ResetBits(GPIOD, GPIO_Pin_6);
          GPIO_SetBits(GPIOD, GPIO_Pin_12);
          GPIO_ResetBits(GPIOE, GPIO_Pin_4);
          delay_ms1(tt);        
          //0110
          GPIO_ResetBits(GPIOD, GPIO_Pin_3);
          GPIO_SetBits(GPIOD, GPIO_Pin_6);
          GPIO_SetBits(GPIOD, GPIO_Pin_12);
          GPIO_ResetBits(GPIOE, GPIO_Pin_4);
          delay_ms1(tt);
                  //0100
          GPIO_ResetBits(GPIOD, GPIO_Pin_3);
          GPIO_SetBits(GPIOD, GPIO_Pin_6);
          GPIO_ResetBits(GPIOD, GPIO_Pin_12);
          GPIO_ResetBits(GPIOE, GPIO_Pin_4);
          delay_ms1(tt);
          //1100
          GPIO_SetBits(GPIOD, GPIO_Pin_3);
          GPIO_SetBits(GPIOD, GPIO_Pin_6);
          GPIO_ResetBits(GPIOD, GPIO_Pin_12);
          GPIO_ResetBits(GPIOE, GPIO_Pin_4);
          delay_ms1(tt);
          //1000         
          GPIO_SetBits(GPIOD, GPIO_Pin_3);
          GPIO_ResetBits(GPIOD, GPIO_Pin_6);
          GPIO_ResetBits(GPIOD, GPIO_Pin_12);
          GPIO_ResetBits(GPIOE, GPIO_Pin_4);
          delay_ms1(tt);                  
}

void delay_ms1(u16 nms)
{
         u32 temp;
         SysTick->LOAD = 9000*nms;
         SysTick->VAL=0X00;//清空計(jì)數(shù)器
         SysTick->CTRL=0X01;//使能,減到零是無動(dòng)作,采用外部時(shí)鐘源
         do
         {
          temp=SysTick->CTRL;//讀取當(dāng)前倒計(jì)數(shù)值
         }while((temp&0x01)&&(!(temp&(1<<16))));//等待時(shí)間到達(dá)
         SysTick->CTRL=0x00; //關(guān)閉計(jì)數(shù)器
         SysTick->VAL =0X00; //清空計(jì)數(shù)器
}

main.c
#include "stm32f10x.h"
#include "stm32f10x_rcc.h"
#include "misc.h"
//#include "delay.h"

void RCC_Configuration(void);
void GPIO_Configuration(void);
void ZhengZhuan(u16 tt);
void FanZhuan(u16 tt);
void delay_ms1(u16 nms);


int main(void)
{
  RCC_Configuration();        //系統(tǒng)時(shí)鐘設(shè)置及外設(shè)時(shí)鐘使能                  
  GPIO_Configuration();
  //delay_init();  //延時(shí)函數(shù)初始化

        while (1)
                 {
                // ZhengZhuan(3);//逆時(shí)針                              
            
                 FanZhuan(10);//順時(shí)針
               
            
                 }

          GPIO_ResetBits(GPIOD, GPIO_Pin_3);
          GPIO_ResetBits(GPIOD, GPIO_Pin_6);
          GPIO_ResetBits(GPIOD, GPIO_Pin_12);
          GPIO_ResetBits(GPIOE, GPIO_Pin_4);
  //}
}


回復(fù)

使用道具 舉報(bào)

ID:606388 發(fā)表于 2020-7-15 08:38 | 顯示全部樓層
樓主,能否上傳工程文件,謝謝
回復(fù)

使用道具 舉報(bào)

ID:364183 發(fā)表于 2020-7-15 13:07 | 顯示全部樓層
qingyemurong 發(fā)表于 2020-7-15 08:38
樓主,能否上傳工程文件,謝謝

我以前傳過 你下載看看吧
不知道適不適合你
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表