步进电机加减速程序

上传人:第*** 文档编号:33581640 上传时间:2018-02-15 格式:DOC 页数:6 大小:64.50KB
返回 下载 相关 举报
步进电机加减速程序_第1页
第1页 / 共6页
步进电机加减速程序_第2页
第2页 / 共6页
步进电机加减速程序_第3页
第3页 / 共6页
步进电机加减速程序_第4页
第4页 / 共6页
步进电机加减速程序_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《步进电机加减速程序》由会员分享,可在线阅读,更多相关《步进电机加减速程序(6页珍藏版)》请在金锄头文库上搜索。

1、步进电机加减速程序 2009-7-24 14:52 提问者:568826036 | 浏览次数:1251 次要求 C 语言写的程序2009-7-29 14:43 最佳答案 main.c 文件内容:#includestm32f10x_lib.h#includemain.hTIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;GPIO_InitTypeDef GPIO_InitStructure;ErrorStatus HSEStartUpStatus;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;int pulse

2、;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_RAMint main(void) #ifdef DEBUGdebug();/*初始化外围设备指针*/#endifRCC_Confi

3、guration(); /初始化时钟与复位 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 DECAYGPIO_WriteBit(GPIOE, GPIO_Pin_7, (BitAction)(1);GPIO_WriteBit(GPIOB,

4、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(GPIOA,GPIO_Pin_4);正、反向旋转控制GPIO_WriteBit(GPIOB, GPIO_Pin_0, (BitAction)(0);GPIO_WriteBit(GPIOC, GPIO_Pin_5, (BitAction)(1); /TQ

5、1 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(GPIOA,GPIO_Pin_4);TIM2_Configuration();dowhile(r

6、2);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,StepResetGPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;G

7、PIO_Init(GPIOA, /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_Pin=GPIO_Pin_4 | GPIO_Pin_5; /PC 的 4.5 接StepEn 和 TQ2 GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=G

8、PIO_Speed_50MHz;GPIO_Init(GPIOC,GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0 | GPIO_Pin_1; /PB 的 0.1 接 TQ1和 M2GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7; /PE7 接 M1 GPIO_InitStructure.GPIO_Mode=GPIO_Mod

9、e_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOE,GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6 | GPIO_Pin_7; /PD 的 67 接DCY2 和 DCY1GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOD, void NVIC_Configuration(void)NVIC_InitTypeDe

10、f 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.

11、NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /*允许 TIM2 全局中断*/NVIC_Init(void TIM2_Configuration(void) TIM_SetCounter( TIM2, 0x0000);TIM_ClearFlag(TIM2, TIM_FLAG_Update); /*清除更新标志位*/ TIM_ClearITPendingBit(TIM2, TIM_FLAG_Update); /清除 TIM2 等待中断更新中断标志位TIM_ARRPreloadConf

12、ig(TIM2, ENABLE); /*预装载寄存器的内容被立即传送到影子寄存器 */ TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); /使能 TIM2 的更新 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_TimeBaseStructure.TIM_Period = 2000; /设定的最大计数值 2000,最大计数值是 0xffff TIM_TimeBaseStructure.TIM_Prescaler = 72; /分频 72TIM_TimeBaseStructure.TIM_ClockDivis

13、ion = 0; / 时钟分割TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; /计数方向向上计数TIM_TimeBaseInit(TIM2, TIM_Cmd(TIM2, ENABLE); /TIM2 enable countervoid RCC_Configuration(void) RCC_DeInit();RCC_HSEConfig(RCC_HSE_ON); HSEStartUpStatus = RCC_WaitForHSEStartUp();if(HSEStartUpStatus = SUCCESS)FLASH_Pr

14、efetchBufferCmd(FLASH_PrefetchBuffer_Enable);FLASH_SetLatency(FLASH_Latency_2);RCC_HCLKConfig(RCC_SYSCLK_Div1); RCC_PCLK2Config(RCC_HCLK_Div1); RCC_PCLK1Config(RCC_HCLK_Div2);RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);RCC_PLLCmd(ENABLE);while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) = RESET)RCC_S

15、YSCLKConfig(RCC_SYSCLKSource_PLLCLK);while(RCC_GetSYSCLKSource() != 0x08) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC| RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); /打开 TIM2的时钟 void Delay(u32 nCount)dowhile(nCount-);void f(int Vt,int a,int d,int S) int pulse1;int pulse2;t1=Vt/a;if(StepCount4*S) /减速阶段,走完 S 步后开始减速,分 t2-1 级减速r2-;if(t2=1)pulse2=(150000*t2)/(r2*Vt);TIM_SetAutoreload(TIM2,pulse2); main.h 文件内容:#define StepEnPi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号