步进电机加减速程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

步进电机加减速程序

2009-7-24 14:52

提问者:568826036|浏览次数:1251次

要求C语言写的程序

2009-7-29 14:43

最佳答案

main.c文件内容:

#include"stm32f10x_lib.h"

#include"main.h"

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; GPIO_InitTypeDef GPIO_InitStructure;

ErrorStatus HSEStartUpStatus;

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; int pulse;

int StepCount;

int pulse1;

int pulse2;

int t1;

int t2;

int r1;

int r2;

void RCC_Configuration(void);

void NVIC_Configuration(void);

void GPIO_Configuration(void);

void TIM2_Configuration(void);

void f(int Vt,int a,int d,int S);

#define VECT_TAB_RAM

int main(void)

{

#ifdef DEBUG

debug();/*[初始化外围设备指针]*/

#endif

RCC_Configuration(); //初始化时钟与复位

NVIC_Configuration();//初始化中断嵌套

TIM2_Configuration();//初始化定时器

GPIO_Configuration();

GPIO_WriteBit(GPIOD, GPIO_Pin_7, (BitAction)(0));

GPIO_WriteBit(GPIOD, GPIO_Pin_6, (BitAction)(0)); //DCY1 DCY2为00,即Normal %0 DECAY

GPIO_WriteBit(GPIOE, GPIO_Pin_7, (BitAction)(1));

GPIO_WriteBit(GPIOB, GPIO_Pin_1, (BitAction)(0)); //M1M2为10,即

1-2-phase

//GPIO_WriteBit(GPIOA, GPIO_Pin_4, (BitAction)(1)); //正向旋转

//GPIO_WriteBit(GPIOA,GPIO_Pin_4,(BitAction)(1-GPIO_ReadOutputDataBit(GPI OA,GPIO_Pin_4)));正、反向旋转控制

GPIO_WriteBit(GPIOB, GPIO_Pin_0, (BitAction)(0));

GPIO_WriteBit(GPIOC, GPIO_Pin_5, (BitAction)(1)); //TQ1 TQ2为01,即Current Ratio为50%

GPIO_WriteBit(GPIOA, GPIO_Pin_7, (BitAction)(1)); //StepReset位

GPIO_WriteBit(GPIOC, GPIO_Pin_4, (BitAction)(1)); //StepEn 使能位

while(1)

{

r1=0;

r2=10;

StepCount=0;

GPIO_WriteBit(GPIOA,GPIO_Pin_4,(BitAction)(1-GPIO_ReadOutputDataBit(GPIO A,GPIO_Pin_4)));

TIM2_Configuration();

do

{

}while(r2);

TIM_Cmd(TIM2, DISABLE);

Delay(7000000);

}

}

void GPIO_Configuration(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_7; //PA 的3.4.7接CLK,CW/CCW,StepReset

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin= GPIO_Pin_5 | GPIO_Pin_6; //PA的6.7接Protect和Mo

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4 | GPIO_Pin_5; //PC的4.5接StepEn和TQ2

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOC,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0 | GPIO_Pin_1; //PB的0.1接TQ1和M2

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOB,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7; //PE7接M1

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOE,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6 | GPIO_Pin_7; //PD的67接DCY2和DCY1

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOD,&GPIO_InitStructure);

}

void NVIC_Configuration(void)

{

NVIC_InitTypeDef NVIC_InitStructure;

#ifdef VECT_TAB_RAM

NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);

#else

NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);

#endif

NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel; //设置TIM2通道输入中断

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /*配置优先级组*/ NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /*允许TIM2全局中断*/

相关文档
最新文档