2019独角兽企业重金招聘Python工程师标准>>>

写WEB程序的时候,发现如果加上步进电机控制的话,就会出现问题。原因是如果把电机控制放在uip循环中处理的话,因为控制电机涉及到时间问题。所以必须解决,想到的方法就是多任务的思想。把步进电机的处理放在定时器中断里面。这样的话就能避免问题了。顺便学习了库函数操作定时器。这里用到的定时器功能简单,只需要产生更新中断。

下面是定时器初始化代码

//定时器3初始化
//arr:定时重装值
//psc:分频值
void TIM3_Init(uint16_t arr, uint16_t psc)
{TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //开启TIM3时钟//定时器3配置,重载值、分频值、分频系数、计数模式TIM_TimeBaseStructure.TIM_Period = arr;TIM_TimeBaseStructure.TIM_Prescaler = psc;TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);     //允许定时更新中断//中断配置NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);TIM_Cmd(TIM3, ENABLE);  //使能定时器3
}

定时器中断处理函数

void TIM3_IRQHandler(void)
{static uint8_t i;  //相序计数器if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET){TIM_ClearITPendingBit(TIM3, TIM_IT_Update);Motorcw(i);        //电机正转i++;if(i==4)i = 0;}
}

电机正传代码函数

void Motorcw(uint8_t i)
{GPIO_Write(GPIOC,phasecw[i]);
}

这样的话就不能干扰到uip的正常事件处理了。

转载于:https://my.oschina.net/u/1587304/blog/399945

STM32在定时器中控制步进电机相关推荐

  1. STM32之定时器中断控制LED闪烁

    上篇博客我们是用延时函数实现了LED的闪烁,今天我们使用STM32的定时器来使LED闪烁. 关于32的定时器的种类,今天我在这先不做过多的说明,有时间我会再另写一篇博客来专门介绍32的定时器.今天我们 ...

  2. STM32利用定时器1控制LED闪烁

    配置LED灯 //PC13 void LED_Init(void) {GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_AP ...

  3. STM32控制步进电机:基于定时器中断的ULN2003驱动器/步进电机驱动程序

    STM32控制步进电机:基于定时器中断的ULN2003驱动器/步进电机驱动程序 一.ULN2003驱动器 1.工作原理 2.步距角以及一圈所需步数的计算 二.硬件连接 三.STM32F103定时器中断 ...

  4. STM32控制步进电机:基于HAL库定时器中断的闭环步进电机驱动+精准控制脉冲数

    STM32控制步进电机:基于HAL库定时器中断的闭环步进电机驱动+精准控制脉冲数 一.步进电机闭环驱动器 二.CubeMx配置 1.Clock Configuration 2.脉冲端 定时器配置 3. ...

  5. 用STM32定时器中断产生PWM控制步进电机

    文章目录 前言 一.硬件部分 1.使用的硬件 2.硬件连接 3.总硬件连接图 二.控制步进电机转动 三.电机驱动代码 1.GPIO.h 2.timer.c 3.main.c 代码文件 前言 控制步进电 ...

  6. 【C语言】STM32控制步进电机——一种S形加减速曲线的推导与实现

    目录 1 前言 2 理论分析 2.1 选择曲线 2.2 计算函数方程 2.3 单位分析 2.4 模拟验证 3 两种代码实现 3.1 速度与时间关系 3.1.1 原理 3.1.2 优点 3.1.3 缺点 ...

  7. stm32控制步进电机加减速

    实习公司项目需要控制步进电机,电机方面主要包括控制运动.加减速.限位. 下面介绍一下在电机控制方面的心得,由于对于电机的控制不需要很精确,并且自身能力有限,相比于大牛有很大的差距. 1.需要实现的功能 ...

  8. K_A07_003 基于 STM32等单片机驱动DRV8825模块按键控制步进电机正反转

    目录 一.资源说明 二.基本参数 1.参数 2.引脚说明 三.驱动说明 SETP时序 对应程序: 细分说明 程序 四.部分代码说明 1.接线说明 1.1.STC89C52RC+DRV8825模块 1. ...

  9. 利用stm32控制步进电机 速度加速度控制

    因为想申请 CSDN 博客认证需要一定的粉丝量,而我写了五年博客才 700 多粉丝,本文开启关注才可阅读全文,很抱歉影响您的阅读体验 利用stm32控制步进电机 尝试用42系步进电机做倒立摆,总结步进 ...

最新文章

  1. 【Qt】编译QtCreator
  2. tf.boolean_mask()的详细用法
  3. 【原创】大叔经验分享(27)linux服务器升级glibc故障恢复
  4. python面向对象设计管理系统_python面向对象之单例设计模型
  5. php页面转发,php如何实现页面路由转发
  6. SQL 必知必会·笔记20高级SQL特性
  7. c语言银行系统个人心得,c,,银行管理实验报告心得体会.docx
  8. java 对象地址_如何获取Java对象的地址?
  9. 讲的是关于提高网站速度的内容|转自csdn
  10. uuid.randomuuid()回重复么_【编译器玄学研究报告】第三期——“O0” 就能逃出优化的魔爪么?...
  11. msxml3.dll error '80072efd' 错误的解决办法
  12. sliverlight+WCF项目发布到IIS
  13. 通过python程序调取摄像头画面
  14. php中求10递归算法,php递归算法
  15. 阿里云《云中谁送锦书来》活动 知识问答 答案
  16. Hologres性能调优
  17. 脉冲神经网络(SNN)论文阅读(一)-----Going Deeper With Directly-Trained Larger Spiking Neural Networks
  18. H5本地调试微信静默授权、授权获取用户信息
  19. 倾斜模型精细化处理_浅谈几个倾斜摄影三维模型的修补软件 - 纳金网
  20. 29_ElasticSearchIK中文分词器的安装和使用

热门文章

  1. c从sqlite3数据库中获取数据,并对数据进行拼接
  2. VC++6中的一些快捷键(陆续补充中。。。)
  3. 蓝桥杯java 算法提高 摆花
  4. sublime text 的小细节设置,让你的代码更优美
  5. Nginx、LVS及HAProxy负载均衡软件的优缺点详解
  6. ACM: 畅通工程-并查集-解题报告
  7. 【转】 java自定义注解
  8. 解决无法将类型为“System.Web.UI.WebControls.HiddenField”的对象强制转换为类型的错误...
  9. document.body.clientHeight与document.documentElement.clientHeight
  10. 如何生成符合高斯分布的数据集