久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1164|回復: 0
打印 上一主題 下一主題
收起左側

步進電機的測試STM32程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:531679 發表于 2019-5-9 16:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
//頭文件調用
#include "usually.h"
#include "usart.h"
#include "rtc.h"

//聲明變量
extern struct Data_Time  timer;
extern int MC_state;
extern int Delay_time;
extern uint16_t MC_count;
extern int YK1_state; //遙控變位記錄
extern int YK2_state;
extern int YK3_state;
extern int YK4_state;
extern int YK5_state;

extern int Alarm_state;

//函數申明
void Init_LED(void);
void Init_NVIC(void);
void Delay(vu32 nCount);
void Delay_Ms(uint16_t time);  
void Delay_Us(uint16_t time);
void Delay_all(uint8_t count);
void hard_Init_Test(void);
void FK_Control_Deal(int _MC_state);
void moto_step(int a1,int a2,int b1,int b2,int t);
void one_step_Z(int t);
void one_step_F(int t);

void Alarm_Voice();
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
** 函數名稱: main
** 功能描述: 主函數入口
** 參數描述:無
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
int main(void)
{
        uint8_t t=0;
        SystemInit();                                //系統時鐘配置
        Init_NVIC();                                //中斷向量表注冊函數
        Init_Usart();                                //串口引腳配置
        Usart_Configure(9600);        //串口配置 設置波特率為115200
        Init_LED();                                        //LED初始化
        Init_RTC();                                        //內部RTC初始化
        //Time_Update(2013,6,26,0,0,0);
        //uint8_t ReceiveDate;
        hard_Init_Test();//硬件初始化測試
        Alarm_Voice(6,200,200);        
        while(1)
        {
                int for_while=52;
                while(for_while-->0)
                {
                        one_step_F(500);
                }
                Delay_Ms(2000);
                for_while=52;
                while(for_while-->0)
                {
                        one_step_Z(500);
                        moto_step(0,0,0,0,0);
                }               
                Delay_Ms(2000);
        }
//                 Delay_Ms(5);
//                 if(Alarm_state==0)
//                 {
//                         Alarm_Voice(8,200,100);
//                         Alarm_state=3;
//                 }
//                 else
//                 {
//                         if(Alarm_state==1)
//                         {
//                                 Alarm_Voice(3,200,1);
//                                 Alarm_state=3;
//                         }
//                         else
//                         {
//                                 LED2=1;
//                         }
//                 }

//                 if(t!=timer.sec)
//                 {
//                                 t=timer.sec;
//                                 LED1=~LED1;
//                                 LED2=~LED2;                                                
//                 }        
        //}               
}

void one_step_Z(int t)
{
        moto_step(1,0,0,0,t);//A+
        moto_step(1,0,1,0,t);//A+B+
        moto_step(0,0,1,0,t);//B+
        moto_step(0,1,1,0,t);//A-B+
        moto_step(0,1,0,0,t);//A-
        moto_step(0,1,0,1,t);//A-B-
        moto_step(0,0,0,1,t);//B-
        moto_step(1,0,0,1,t);//A+B-
}

void one_step_F(int t)
{
        moto_step(1,0,0,1,t);//A+B-
        moto_step(0,0,0,1,t);//B-
        moto_step(0,1,0,1,t);//A-B-
        moto_step(0,1,0,0,t);//A-
        moto_step(0,1,1,0,t);//A-B+
        moto_step(0,0,1,0,t);//B+
        moto_step(1,0,1,0,t);//A+B+        
        moto_step(1,0,0,0,t);//A+        
}

void moto_step(int a1,int a2,int b1,int b2,int t)
{
        YX1=a1;
        YX2=a2;
        YX3=b1;
        YX4=b2;
        Delay_Us(t);
}

void Alarm_Voice(int _t1,int _t2,int _t3)
{
        int i=0;
        for(i=0;i<_t1;i++)
        {
                LED2=0;
                Delay_Ms(_t2);
                LED2=1;
                Delay_Ms(_t3);
        }
}
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
** 函數名稱: 負控處理函數
** 功能描述: 主函數入口
** 參數描述:無
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
void FK_Control_Deal(int _MC_state)
{
                int i=0;        
                if(_MC_state != 0)        //脈沖輸入                                                                                                
                {
                        for(i=0;i<MC_count*2;i++)
                        {
                                Delay_Ms(Delay_time*100);
                                switch((int)_MC_state)
                                {
                                        case 1:
                                                {
                                                        MC1=~MC1;
                                                }break;
                                        case 2:
                                                {
                                                        MC2=~MC2;
                                                }break;                                                        
                                        case 3:
                                                {
                                                        MC3=~MC3;
                                                }break;
                                        case 4:
                                                {
                                                        MC4=~MC4;
                                                }break;                                                        
                                        case 0x12:
                                                {
                                                        MC1=~MC1;
                                                        MC2=~MC2;
                                                }break;                                                               
                                        case 0x13:
                                                {
                                                        MC1=~MC1;
                                                        MC3=~MC3;
                                                }break;                                                        
                                        case 0x14:
                                                {
                                                        MC1=~MC1;
                                                        MC4=~MC4;
                                                }break;                                                        
                                        case 0x23:
                                                {
                                                        MC2=~MC2;
                                                        MC3=~MC3;
                                                }break;                                                               
                                        case 0x24:
                                                {
                                                        MC2=~MC2;
                                                        MC4=~MC4;
                                                }break;                                                               
                                        case 0x34:
                                                {
                                                        MC3=~MC3;
                                                        MC4=~MC4;
                                                }break;                                       
                                        case 0x33:
                                                {
                                                        MC1=~MC1;
                                                        MC2=~MC2;
                                                        MC3=~MC3;
                                                }break;                                                
                                        case 0x44:
                                                {
                                                        MC1=~MC1;
                                                        MC2=~MC2;
                                                        MC3=~MC3;
                                                        MC4=~MC4;
                                                }break;
                                        default:break;
                                }
                        }
                        MC_count=0;
                        MC_state=0;
                }
}
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
** 函數名稱: hard_Init_Test
** 功能描述:
** 參數描述:無
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
void hard_Init_Test()
{
        LED1=0;
        LED2=1;
        GPIO_ResetBits(GPIOA, GPIO_Pin_4);
        YX1=0;
        YX2=1;
        YX3=0;
        YX4=0;
        YX5=0;
        //YX6=0;
        //YX7=0;

        MC1=0;
        MC2=0;
        MC3=0;
        MC4=0;
        Delay_all(10);
        YX1=1;
        //YX2=1;
        YX3=1;
        YX4=1;
        YX5=1;
        //YX6=1;
        //YX7=1;

        MC1=1;
        MC2=1;
        MC3=1;
        MC4=1;
        Delay_all(10);
}
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
** 函數名稱: LED_Init
** 功能描述: LED IO引腳配置
** 參數描述:無
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
void Init_LED(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;                                                                                        //定義一個GPIO結構體變量
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);        //使能各個端口時鐘,重要!!!        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 ;             //配置LED端口掛接到6、12、13端口
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                   //通用輸出推挽
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;                   //配置端口速度為50M
          GPIO_Init(GPIOC, &GPIO_InitStructure);                                           //將端口GPIOD進行初始化配置

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);        
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7
                |GPIO_Pin_8|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;                        
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //  下拉輸出
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
          GPIO_Init(GPIOA, &GPIO_InitStructure);

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;//GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3;                        
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;        //  上拉輸入
        //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
          GPIO_Init(GPIOB, &GPIO_InitStructure);
}
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
** 函數名稱: NVIC_Configuration
** 功能描述: 系統中斷配置
** 參數描述:無
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
void Init_NVIC(void)
{         
        NVIC_InitTypeDef NVIC_InitStructure;

        #ifdef  VECT_TAB_RAM                                                                          //向量表基地址選擇

          NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);                          //將0x20000000地址作為向量表基地址(RAM)
        #else  

          NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);                 //將0x08000000地址作為向量表基地址(FLASH)  
        #endif
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);                //先占優先級1位,從優先級3位

        NVIC_InitStructure.NVIC_IRQChannel = RTC_IRQn;//USART1_IRQn;;                //RTC全局中斷
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;        //先占優先級1位,從優先級3位
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;        //先占優先級0位,從優先級4位
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                //使能該通道中斷
        NVIC_Init(&NVIC_InitStructure);                //根據NVIC_InitStruct中指定的參數初始化外設NVIC寄存器

        NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;                //RTC全局中斷
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;        //先占優先級1位,從優先級3位
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;        //先占優先級0位,從優先級4位
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                //使能該通道中斷
        NVIC_Init(&NVIC_InitStructure);
}
void Delay(vu32 nCount)
{
  for(; nCount != 0; nCount--);
}

void Delay_all(uint8_t count)
{
        int i=0;
        for(i=0;i<count;i++)
        {
                Delay(0xfffff);
        }
}
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
** 函數名稱: Delay_Ms_Ms
** 功能描述: 延時1MS (可通過仿真來判斷他的準確度)                        
** 參數描述:time (ms) 注意time<65535
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
void Delay_Ms(uint16_t time)  //延時函數
{
        uint16_t i,j;
        for(i=0;i<time;i++)
                  for(j=0;j<10260;j++);
}
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
** 函數名稱: Delay_Ms_Us
** 功能描述: 延時1us (可通過仿真來判斷他的準確度)
** 參數描述:time (us) 注意time<65535                                 
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
void Delay_Us(uint16_t time)  //延時函數
{
        uint16_t i,j;
        for(i=0;i<time;i++)
                  for(j=0;j<9;j++);
}
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
End:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D:-D
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧洲综合av | 成人免费在线 | 亚洲免费精品 | 免费观看羞羞视频网站 | 亚洲视频在线观看 | 国产1区2区3区| 国产精品1区2区3区 中文字幕一区二区三区四区 | 91久久精品日日躁夜夜躁国产 | 欧美激情黄色 | 国产91在线播放 | 在线观看国产h | 美女131mm久久爽爽免费 | 一区二区在线 | 国产精品久久久久久久一区二区 | 久久久久久高潮国产精品视 | 亚洲成人精品 | 国产精品久久av | 国产亚洲日本精品 | 午夜影院在线观看免费 | 一区二区三区在线看 | 一级毛片视频 | 日本人爽p大片免费看 | 蜜桃在线一区二区三区 | 国产www. | 成人一区二区三区在线 | 亚洲欧美一区二区三区情侣bbw | 九九综合 | 麻豆视频在线看 | 在线欧美亚洲 | 国产精品美女久久久久 | 99热热99 | 日韩久久精品 | 久久国产成人 | 欧美成年黄网站色视频 | 五月槐花香 | 激情欧美日韩一区二区 | 国产视频久 | 成人教育av | 亚洲激情自拍偷拍 | 国产欧美日韩一区 | 日韩免费三级 |