给你看一篇文章吧http://wenku.baidu.com/view/39fe ... 71.html?from=search

我是参照这个来写的

[mw_shl_code=applescript,true]//=========================================================================//

//M542 DRIVER CODE:定义驱动器的端口

//

//创建日期:2015/12/30

//=========================================================================//

//初始化PE1/PE3为输出口.并使能这2个口的时钟

//PE1对应pulse,PE3对应DIR(方向)

#include "driver.h"

#include "delay.h"

#include "usart.h"

#include "adc.h"

void Driver_Init(void)

{

GPIO_InitTypeDef  GPIO_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);//使能GPIOE时钟

//GPIOE5初始化设置

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//分别用这个口 控制方向

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式

GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉

GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化GPIO

}

int cnt;

int value2[]={994,994,994,994,992,992,992,992,992,990,990,990,990,988,988,988,986,986,986,984,        //S型加减速曲线,时PWM的输出频率

984,982,982,982,980,980,978,978,976,974,974,972,970,970,968,966,964,964,962,960,        //从1KHz变到10Khz,即使得步进电机

958,956,954,950,948,946,944,940,938,934,932,928,926,922,918,914,910,906,902,898,               //加速运动,加速运动即让它反过来

892,887,882,877,872,866,860,855,848,842,835,828,821,814,807,799,791,783,775,766,        //速度约从1.3cm/s加速到12cm/s左右

758,750,740,730,720,712,702,692,682,670,660,650,638,628,616,606,594,584,572,562,

550,538,528,516,506,494,484,472,462,450,440,430,418,408,398,388,380,370,360,350,

342,334,324,316,308,300,292,286,278,272,264,258,252,244,240,234,228,222,218,212,

208,202,198,194,190,186,182,178,174,172,168,166,162,160,156,154,152,150,146,144,

142,140,138,136,136,134,132,130,130,128,126,126,124,122,122,120,120,118,118,118,

116,116,114,114,114,112,112,112,110,110,110,110,108,108,108,108,108,106,106,106,106};

int value1[]={ 994,994,994,992,992,992,992,992,990,990,990,990,988,988,988,986,986,986,984,984,      //从1KHz加速到1000/66=15KHz左右

984,982,982,980,980,978,978,976,974,974,972,972,970,968,966,964,964,962,960,958,       //速度约从1.3cm/s加速到19.2cm/s左右

956,954,950,948,946,944,940,938,936,932,928,926,922,918,914,910,906,902,898,892,

888,882,878,872,866,860,854,848,842,836,828,822,814,806,798,790,782,774,766,756,

748,738,728,718,708,698,688,678,666,656,646,634,622,612,600,588,576,566,554,542,

530,518,506,494,484,472,460,448,438,426,414,404,394,382,372,362,352,342,332,322,

312,304,294,286,278,270,262,254,246,238,232,224,218,212,206,200,194,188,182,178,

172,168,162,158,154,150,146,142,138,134,132,128,124,122,120,116,114,112,110,106,

104,102,100,98 ,96 ,96 ,94 ,92 ,90 ,88 ,88 ,86 ,86 ,84 ,82 ,82 ,80 ,80 ,78 ,78 ,

76 ,76 ,76 ,74 ,74 ,74 ,72 ,72 ,72 ,70 ,70 ,70 ,70 ,68 ,68 ,68 ,68 ,68 ,66 ,66 ,66};

int  value[]={596,596,596,596,596,596,596,594,594,594,594,594,594,594,592,592,592,592,592,590,        //从1.6KHz加速到1000/64=15.6KHz左右

590,590,590,588,588,588,586,586,586,584,584,584,582,582,580,580,578,578,576,576,       //速度约从2.1cm/s加速到19.8cm/s左右

574,574,572,570,570,568,566,564,562,560,560,558,556,552,550,548,546,544,542,538,

536,532,530,526,524,520,516,514,510,506,502,498,494,488,484,480,476,470,466,460,

454,450,444,438,432,426,420,414,408,402,396,390,384,376,370,364,356,350,344,336,

330,324,316,310,304,296,290,284,276,270,264,258,252,246,240,234,228,222,216,210,

206,200,194,190,184,180,176,172,166,162,158,154,150,146,144,140,136,134,130,128,

124,122,118,116,114,112,110,108,104,102,100,100,98 ,96        ,94 ,92 ,90 ,90 ,88 ,86        ,

86        ,84        ,84        ,82        ,82        ,80        ,80        ,78        ,78        ,76        ,76        ,76        ,74        ,74        ,74        ,72        ,72        ,72        ,70        ,70        ,

70        ,70        ,68        ,68        ,68        ,68        ,68        ,66        ,66        ,66        ,66        ,66        ,66        ,66        ,64        ,64        ,64        ,64        ,64        ,64        ,64};

/********************************************************

函数名:HeadADC

功  能:让电机一边前进一边进采样

输  入:无

输  出:无

********************************************************/

void HeadADC(void)               //

{

GPIO_SetBits(GPIOE,GPIO_Pin_5);   // PE5与驱动器DIR-对应,使之高电位,沿一个方向运动

delay_us(20);

TIM_Cmd(TIM3,ENABLE);

TIM_Cmd(TIM4,ENABLE);

Speed_up();

}

/********************************************************

函数名:BackADC

功  能:让步进边后退一边采样

输  入:无

输  出:无

********************************************************/

void BackADC(void)         //Num为后退的步数,Dis为每步的大小,以mm为单位

{

GPIO_ResetBits(GPIOE,GPIO_Pin_5);   // PE5与驱动器DIR-对应,使之高电位,沿一个方向运动

delay_us(20);

TIM_Cmd(TIM3,ENABLE);

TIM_Cmd(TIM4,ENABLE);

Speed_up();

}

/********************************************************

函数名:Head

功  能:开启定时器4的PWM输出,让步进电机只有前进功能

输  入:无

输  出:无                                                *

********************************************************/

void Head(void)               //

{

GPIO_SetBits(GPIOE,GPIO_Pin_5);   // PE5与驱动器DIR-对应,使之高电位,沿一个方向运动

delay_us(20);

TIM_Cmd(TIM4,ENABLE);                //开启TIM4,输出PWM波

Speed_up();

}

/********************************************************

函数名:Head

功  能:开启定时器4的PWM输出,让步进电机只有前进功能

输  入:无

输  出:无

********************************************************/

void Back(void)               //

{

GPIO_ResetBits(GPIOE,GPIO_Pin_5);   // PE5与驱动器DIR-对应,使之高电位,沿一个方向运动

delay_us(20);

TIM_Cmd(TIM4,ENABLE);                //开启TIM4,输出PWM波

Speed_up();

}

/********************************************************

函数名:Speed_up

功  能:步进电机加速函数

输  入:无

输  出:无

********************************************************/

void Speed_up(void)

{

for (cnt = 0; cnt<201; cnt++)

{

delay_us(2*value[0]);                      //每2个PWM脉冲产生后,预装载值和占空比

TIM_SetAutoreload(TIM4,value[cnt]);

TIM_SetCompare1(TIM4,value[cnt]/2);

}

}

/********************************************************

函数名:Speed_down

功  能:步进电机减速函数

输  入:无

输  出:无

********************************************************/

void Speed_down(void)

{

for (cnt =200; cnt>=0; cnt--)

{

delay_us(2*value[0]);                      //每2个PWM脉冲产生后,预装载值和占空比

TIM_SetAutoreload(TIM4,value[cnt]);

TIM_SetCompare1(TIM4,value[cnt]/2);

}

}

[/mw_shl_code]

步进电机加速的c语言编程,关于步进电机S型加速程序编写相关推荐

  1. 【c】C语言编程写的一个http下载程序

    来自: 百度空间-软件工程师 大家都很熟悉HTTP协议的应用,因为每天都在网络上浏览着不少东西,也都知道是HTTP协议是相当简单的.每次用到FlashGet之类的下载软件下载网页,当用到那个" ...

  2. c语言入门小程序素数,C语言编程入门经典18个小程序

    C语言是面向过程的,而C++是面向对象的 C跟C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考量的是怎样借助一个过程,对输入(或环境条件)进行运算处理得到输出(或推动 ...

  3. c语言编程功率谱,有谁会用C编写求功率谱(答案越多越好)

    C语言我不行,Matlab语言行么? 经典功率谱估计 直接法: 直接法又称周期图法,它是把随机序列x(n)的N个观测数据视为一能量有限的序列,直接计算x(n)的离散傅立叶变换,得X(k),然后再取其幅 ...

  4. java语言简单代码_java语言编程如何实现一个最简单程序?

    在编程语言中,实践出结果是最重要的,其他的什么都是为此做准备,下面我们就来看看该如何编译一个最简单的java程序. 首先,启动你的编程软件,如eclipse等,具体可以网上了解, 再来,创建一个新的j ...

  5. c语言编程抢30,抢三十-程序?

    抢三十-程序? 小时候玩过一个小游戏(从1开始轮流数数,二个人,每个人至多可以数1-3个数,谁先数到最后一个数30谁就嬴),想用C语言编写出来.但是写出来之后却出现问题?只输出前一次的数?希望哪位可以 ...

  6. 单片机 串口 波特率 c语言 9600 11.0592mhz t1,C51语言编程:单片机与 PC 串口通信程序...

    单片机接收PC机发来的指令信号,然后单片机又向PC机发送字符串.具体要求如下: 当接收指令信号为:'go',单片机向PC机发送字符串:WELCOME TO CHINA!; 当接收指令信号为:'who' ...

  7. 485通信c语言编程linux,Rs485通信单片机C程序

    /******************************************************************************* *  标题:              ...

  8. C语言编程入门之--第一章初识程序

    导读:计算机程序无时不刻的影响着人类的生活,现代社会已经离不开程序,程序的作用如此巨大,那么程序到底是什么呢?本章主要讨论程序的概念,唤起读者对程序的兴趣,同时对C语言程序与其它语言程序进行比较,说明 ...

  9. c语言编程中野指针错误,C程序中可怕的野指针

    一.疑问点 指针是C语言一个很强大的功能,同时也是很容易让人犯错的一个功能,用错了指针,轻者只是报个错,重者可能整个系统都崩溃了.下面是大家在编写C程序时,经常遇到的一种错误的使用方法,也许在你的学习 ...

最新文章

  1. Python使用matplotlib可视化人口金字塔图、人口金字塔显示不同性别不同年龄段的人口数,是了解人口组成的最优可视化方法、人口金字塔图可以用来表示按体积排序的群体的分布、形成漏斗结构
  2. 动画--过渡属性 transition-property
  3. 华为电视测试软件,华为智慧屏电视安装第三方软件,简单实测可行攻略
  4. 第三天:制定项目计划
  5. k8s单节点部署(master ,node部分)
  6. SVN中tag branch trunk用法详解
  7. (3)stm32开发之串口的调试
  8. 千图成像python_【Python还能干嘛】爬取微信好友头像完成马赛克拼图(千图成像)~...
  9. maven常用命令大全(附详细解释)
  10. SSA静态单赋值概念理解
  11. 技能梳理24@stm32+阿里云+nbiot+dht11+bh1750+土壤湿度传感器+oled
  12. mmo游戏服务器性能指标,关于performance:厚积薄发MMORPG手游合理的性能参数
  13. 计算机物联网前沿技术汇总
  14. getcwd()和chdir()的用法 python
  15. 儒家思想的核心:仁、义、礼、智、信、忠、孝、悌、节、恕、勇、让
  16. JS自定义Title文字提示
  17. Springboot使用Mapstruct拷贝对象,集成swagger2
  18. centos7 通过git连接GitHub仓库
  19. VUE + howler.js 播放音频
  20. 无法连接上 127.0.0.1:XXXX (127.0.0.1)。 - connect (111: 拒绝连接)

热门文章

  1. [羊城杯 2020]easyre
  2. Android 11.0 PackageManagerService(一)工作原理和启动流程
  3. Win7下eclipse ADT调试cocos2dx-lua工程
  4. DiskGenius清除分区空闲空间后硬盘满了
  5. 2021年,我们还需要入门深度学习吗?
  6. Hololens2开发笔记-重刷系统(正常发布版本和内部预览版本)
  7. DM36x 接入 AR0130 sensor
  8. 基于STC89C51单片机,CH340芯片的下载电路
  9. 阿里架构专家教你打通Git任督二脉,20分钟搞定Git工作原理
  10. Xilinx Vivado复数乘法器Complex Multiplier IP核调用及其仿真