参考的,淘宝上买来的步进电机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. Linux服务器下JMeter的安装以及Xming的使用

    1.需要安装jdk和jmeter的安装包,都可以在官网得到下载.具体的操作按照下面的指令就可以 https://www.oracle.com/cn/java/technologies/javase/j ...

  2. 面试题:让你捉摸不透的 Go reslice

    面试题: package main func a() []int { a1 := []int{3} a2 := a1[1:] return a2 } func main() { a() } 看到这个题 ...

  3. Go之Zap日志库集成Gin

    简介 在许多Go语言项目中,我们需要一个好的日志记录器能够提供下面这些功能: 1 . 能够将事件记录到文件中,而不是应用程序控制台; 2 . 日志切割-能够根据文件大小.时间或间隔等来切割日志文件; ...

  4. hdu3035 最小割转换成最短路

    题意:       给你一个平面图,要求从求出从左上角到右下角的最小割. 思路:       如果大意的可能直接上来一遍最大流,然后就会各种悲剧的MLE,TLE,其实这个题目可以用到有个论文里面的那个 ...

  5. Linux内核升级、GRUB2引导故障处理与密码破解

    目录 内核升级 GRUB2内核启动设置 GRUB2引导菜单加密 GRUB2引导故障及修复 救援模式管理 Rhel7破解root密码 内核升级 查看当前内核版本: uname  -r 查看可升级内核:  ...

  6. Tomcat漏洞集合

    目录 Tomcat的几大高危漏洞 Tomcat安全措施 Tomcat的几大高危漏洞 1.Tomcat后台弱口令上传war包(Tomcat管理弱口令页面Getshell) 2.Tomcat的PUT的上传 ...

  7. 关于 C/C++ 函数调用约定

    关于 C/C++ 函数调用约定,大多数时候并不会影响程序逻辑,但遇到跨语言编程时,了解一下还是有好处的. VC 中默认调用是 __cdecl 方式,Windows API 使用 __stdcall 调 ...

  8. CTF常见的加密和编码方法

    目录 哈希摘要算法 对称加密算法 其他加密算法 编码 哈希摘要算法 以  root 加密为例. MD4:32位的摘要算法.2add09183d0b1dc0428701df9838fba MD5:32位 ...

  9. [CTF]猪圈密码

    [CTF]猪圈密码 -------------------- 百度百科 本词条由"科普中国"百科科学词条编写与应用工作项目 审核 . https://baike.baidu.com ...

  10. 矩阵旋转-Eigen应用(QTCreator编辑器)

    * { font-family: "Tibetan Machine Uni", "sans-serif", STFangSong; outline: none ...