参考的,淘宝上买来的步进电机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. Math类的random()方法

    Math类的random()方法 Math类的random()方法可以生成大于等于0.0.小于1.0的double型随机数. Math.random()方法语句基础上处理可获得多种类型.或任意范围的随 ...

  2. 翻译:《实用的Python编程》09_02_Third_party

    目录 | 上一节 (9.1 包) | 下一节 (9.3 版本分发) 9.2 第三方模块 Python 拥有一个包含各种内置模块的大型库(自带电池(batteries included))(译注:&qu ...

  3. Leedcode算法专题训练(哈希表)

    Java 中的 HashSet 用于存储一个集合,可以查找元素是否在集合中.如果元素有穷,并且范围不大,那么可以用一个布尔数组来存储一个元素是否存在.例如对于只有小写字符的元素,就可以用一个长度为 2 ...

  4. Spring Boot 2.4 配置文件将加载机制大变化

    Spring Boot 2.4.0.M2 刚刚发布,它对 application.properties 和 application.yml 文件的加载方式进行重构.如果应用程序仅使用单个 applic ...

  5. Spring Security OAuth 格式化 token 输出

    个性化token 背景 上一篇文章<Spring Security OAuth 个性化token(一)>有提到,oauth2.0 接口默认返回的报文格式如下: {     "ac ...

  6. C语言-字符串函数的实现(五)之strstr

    C语言中的字符串函数有如下这些 获取字符串长度 strlen 长度不受限制的字符串函数 strcpy strcat strcmp 长度受限制的字符串函数 strncpy strncat strncmp ...

  7. Spring 学习笔记(一):Spring 入门

    1 Spring简介 Spring是一个轻量级Java开发框架,最早由Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题,是一个分层的Java SE/EE ful ...

  8. kubernetes-copyFromPod

    import com.google.common.io.ByteStreams; import io.kubernetes.client.Copy; import io.kubernetes.clie ...

  9. Horovod in Docker

    https://horovod.readthedocs.io/en/stable/docker.html Step1 构建镜像 GPU $ mkdir horovod-docker-gpu $ wge ...

  10. 5. linux 中“~”,“/”,“#”,”$“ 含义

    "~" ~ 是用户的home目录(又叫"用户家目录")linux存储是以挂载的方式,相当于是树状的,源头就是"/",也就是根目录.而每个用户 ...