欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

QQ登錄

只需一步,快速開(kāi)始

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

步進(jìn)電機(jī)的測(cè)試STM32程序

[復(fù)制鏈接]
ID:531679 發(fā)表于 2019-5-9 16:27 | 顯示全部樓層 |閱讀模式
//頭文件調(diào)用
#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;

//函數(shù)申明
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();
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
** 函數(shù)名稱: main
** 功能描述: 主函數(shù)入口
** 參數(shù)描述:無(wú)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
int main(void)
{
        uint8_t t=0;
        SystemInit();                                //系統(tǒng)時(shí)鐘配置
        Init_NVIC();                                //中斷向量表注冊(cè)函數(shù)
        Init_Usart();                                //串口引腳配置
        Usart_Configure(9600);        //串口配置 設(shè)置波特率為115200
        Init_LED();                                        //LED初始化
        Init_RTC();                                        //內(nèi)部RTC初始化
        //Time_Update(2013,6,26,0,0,0);
        //uint8_t ReceiveDate;
        hard_Init_Test();//硬件初始化測(cè)試
        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);
        }
}
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
** 函數(shù)名稱: 負(fù)控處理函數(shù)
** 功能描述: 主函數(shù)入口
** 參數(shù)描述:無(wú)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
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;
                }
}
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
** 函數(shù)名稱: hard_Init_Test
** 功能描述:
** 參數(shù)描述:無(wú)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
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);
}
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
** 函數(shù)名稱: LED_Init
** 功能描述: LED IO引腳配置
** 參數(shù)描述:無(wú)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
void Init_LED(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;                                                                                        //定義一個(gè)GPIO結(jié)構(gòu)體變量
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);        //使能各個(gè)端口時(shí)鐘,重要!!!        
        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進(jìn)行初始化配置

        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);
}
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
** 函數(shù)名稱: NVIC_Configuration
** 功能描述: 系統(tǒng)中斷配置
** 參數(shù)描述:無(wú)
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
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);                //先占優(yōu)先級(jí)1位,從優(yōu)先級(jí)3位

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

        NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;                //RTC全局中斷
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;        //先占優(yōu)先級(jí)1位,從優(yōu)先級(jí)3位
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;        //先占優(yōu)先級(jí)0位,從優(yōu)先級(jí)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);
        }
}
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
** 函數(shù)名稱: Delay_Ms_Ms
** 功能描述: 延時(shí)1MS (可通過(guò)仿真來(lái)判斷他的準(zhǔn)確度)                        
** 參數(shù)描述:time (ms) 注意time<65535
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
void Delay_Ms(uint16_t time)  //延時(shí)函數(shù)
{
        uint16_t i,j;
        for(i=0;i<time;i++)
                  for(j=0;j<10260;j++);
}
/*:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
** 函數(shù)名稱: Delay_Ms_Us
** 功能描述: 延時(shí)1us (可通過(guò)仿真來(lái)判斷他的準(zhǔn)確度)
** 參數(shù)描述:time (us) 注意time<65535                                 
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/
void Delay_Us(uint16_t time)  //延時(shí)函數(shù)
{
        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
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::*/


回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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