参考的,淘宝上买来的步进电机S曲线驱动方法,发现

他程序输出的PWM波形全是方波,  占空比为50%

而且他

修改这两个数来输出波形,所以

我打算参考这个来写一个驱动

TIMX_CNT中放置的是当前计数值

即为:

修改计数器的计数值  ARR   和CNT

如下是修改后的  产生一个  50us高电平  100us低电平的程序

the flowing code is the timer3's init  pro

 1 //通用定时器3中断初始化
2 //这里时钟选择为APB1的2倍,而APB1为36M
3 // Tout =( (arr+1)*(psc+1) )/Ft us
4 //arr:自动重装值。
5 //psc:时钟预分频数
6 //这里使用的是定时器3!
7 void TIM3_Int_Init(u16 arr,u16 psc)
8 {
9 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure ;
10 NVIC_InitTypeDef NVIC_InitStructure;
11
12 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //时钟使能
13
14 //定时器TIM3初始化
15 TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
16 TIM_TimeBaseStructure.TIM_Prescaler =psc; //设置用来作为TIMx时钟频率除数的预分频值
17 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
18 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
19 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //根据指定的参数初始化TIMx的时间基数单位
20
21 TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断
22
23 //中断优先级NVIC设置
24 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3中断
25 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //先占优先级0级
26 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //从优先级3级
27 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道被使能
28 NVIC_Init(&NVIC_InitStructure); //初始化NVIC寄存器
29
30
31 TIM_Cmd(TIM3, ENABLE); //使能TIMx
32 }

the  fllowing code is the  TIM3_IRQHandler

 1 //中断服务程序
2 void TIM3_IRQHandler(void) //TIM3中断
3 {
4 if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查TIM3更新中断发生与否
5 {
6 TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx更新中断标志
7 //LED1=!LED1;
8 //LED0=!LED0;
9 //CLK=!CLK;
10 //GPIO_SetBits(GPIOB,GPIO_Pin_5);
11
12 // if(MyPwmChangeFlag==0)// if is 0 do low process
13 // {
14 // GPIO_ResetBits(GPIOB,GPIO_Pin_5);
15 // TIM3_Int_Init(MyPwmPeriod-MyPwmHigh-1,72-1);
16 // TIM_Cmd(TIM3, ENABLE); //使能TIMx
17 // MyPwmChangeFlag=1;
18 // }
19 // else if(MyPwmChangeFlag==1)
20 // {
21 // GPIO_SetBits(GPIOB,GPIO_Pin_5);
22 // TIM3_Int_Init(MyPwmHigh-1,72-1);
23 // TIM_Cmd(TIM3, ENABLE); //使能TIMx
24 // MyPwmChangeFlag=0;
25 // }
26 CLK=~CLK;
27 if(MyPwmChangeFlag)
28 {
29 TIM3->ARR=99;
30 TIM3->CNT=0;
31 MyPwmChangeFlag=0;
32 }
33 else
34 {
35 TIM3->ARR=49;
36 TIM3->CNT=0;
37 MyPwmChangeFlag=1;
38 }
39
40
41 }
42 }

关于步进电机驱动板,tb6560的更多相关文章

  1. TB6560步进电机驱动板

    极客工坊比较好的帖子: 关于驱动板的共阴极和共阳极接法 http://www.geek-workshop.com/thread-12695-1-1.html

  2. FPGA Verilog HDL 系列实例--------步进电机驱动控制

    [连载] FPGA Verilog HDL 系列实例 Verilog HDL 之 步进电机驱动控制 步进电机的用途还是非常广泛的,目前打印机,绘图仪,机器人等等设备都以步进电机为动力核心.那么,下面我 ...

  3. MOS管、PCB、H桥、步进电机驱动电路、51单片机的IO口驱动能力、灌电流、拉电流、上拉电阻的选择

    嵌入式开发PCB设计几点体会(转载):http://bbs.ednchina.com/BLOG_ARTICLE_3021801.HTMCollector-Emitter Saturation Volt ...

  4. TB6560电机驱动器参数设置

    TB6560电机驱动器参数设置 最近接触了一些步进电机的开发,整理了一些参数设置的经验,希望能帮助到有需要的人儿~ 步进电机主要按一定的给电规律,给对应的绕组响应的电信号,电机将按一定的方向运行,而且 ...

  5. [MicroPython]TurniBit开发板DIY自动窗帘模拟系统

    一.准备工作 üTurnipBit 开发板 一块 ü下载数据线 一条 ü微型步进电机(28BYJ-48) 一个 ü步进电机驱动板(ULN2003APG) 一块 ü光敏传感器 一个 üTurnipBit ...

  6. [Arduino] Arduino猪头笔记

    1. 步进电机驱动 今天才发现....原来在不同的步进电机驱动模块里面,循环时钟是不一样的.... 步进电机驱动模块以及电路配置: 驱动代码的主要部分: int sp_param = 16383; d ...

  7. 简易排水简车的制作 TurnipBit 系列教程

    准备工作   ü TurnipBit 开发板 1块 ü 下载数据线 1条 ü 微型步进电机(28BYJ-48) 1个 ü 步进电机驱动板(ULN2003APG) 1块 ü TurnipBit 扩展板 ...

  8. TPYBoard v102 驱动28BYJ-48步进电机

    TPYBoard v102 驱动28BYJ-48步进电机 实验目的 了解步进电机的工作原理 学习步进电机的驱动方法 实验器材 TPYBoard v102 1块 微型步进电机(28BYJ-48) 1个 ...

  9. RAMPS1.4 3d打印控制板接线与测试

    “工欲善其事,必先利其器”,在开始工作之前,你应该准备下面所说的工具(包括软件和硬件). 1.需要下载的软件 1.1 固件上传工具——Arduino IDE 这是上传固件的必备工具,有了这个软件让上传 ...

随机推荐

  1. Leedcode算法专题训练(栈和队列)

    1. 用栈实现队列 232. Implement Queue using Stacks (Easy) Leetcode / 力扣 class MyQueue { Stack<Integer> ...

  2. Array.prototype.fill 填充值被复用的问题

    考察如下示例代码: // 创建二维数组 const arr = Array(2).fill([]); // 操作第一个元素 arr[0].push(1); // 结果是操作了所有数组 console. ...

  3. hdu4869 费马小+快速幂

    思路:费马小+快速幂       无论怎么翻,每一步的1出现的可能个数的奇偶性是一样的,因为奇数 - 偶数 = 奇数,偶数 - 偶数 = 偶数,有一张牌被重叠了,那么就减去一个偶数2,所以怎么重叠都不 ...

  4. hdu3415单调队列

    题意:       给你一个数字组成的环,要求在里面找到一个最大的子序列,使得和最大,要求: (1)子序列长度不能超过k (2)如果子序列和相同要起点最小的 (3)如果起点相同要长度最小的 思路:   ...

  5. 前端基础问题:CSS居中的几种方式

    水平居中 (1)内联元素: text-align: center; 利用 text-align: center :可以实现在块级元素内部的内联元素水平居中. 如果一行中有多个块级元素,可以通过设置块级 ...

  6. Day009 面向对象和方法回顾

    面向过程&面向对象 面向过程思想 步骤清晰简单,第一步做什么,第二步做什么..... 面象过程适合处理一些较为简单的问题 面向对象思想 物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些 ...

  7. 十进制转n进制

    #include <stdio.h> #include <stdlib.h> #define OK 1 #define ERROR 0 #define TRUE 1 #defi ...

  8. 深度解析对象的hashcode和equals的差异,以及String的内存分配方式

    Q:Java对象的hashcode是怎么得到的 A:Java对象的hashcode是native方法,不是通过Java实现的.hashcode的值是根据对象的内存地址得到的一串数字. Q:如果两个对象 ...

  9. Python数模笔记-Sklearn(3)主成分分析

    主成分分析(Principal Components Analysis,PCA)是一种数据降维技术,通过正交变换将一组相关性高的变量转换为较少的彼此独立.互不相关的变量,从而减少数据的维数. 1.数据 ...

  10. XAMPP修改Apache默认网站目录htdocs的详解

    XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建 XAMPP 软件站集成环境包,大量站长在使用.正确安装好XAMPP后,默认是必须将php程序放到xampp\htdocs文件 ...