• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

步进电机的非阻塞驱动

1061368165@qq.com 2018-03-15 浏览量:980

今天汇报项目的时候提到stm32的a4988步进电机脉冲驱动用了delay_us(1),结果被全盘否决了:

1、先是说delay延时不精准,所有控制无从谈

2、其次,1us也太短,会丢步

3、然后说这是阻塞方式调用,不可行

那么如果说不使用rtos,如何不阻塞的情况下,又能根据串口传进来的指令动态调整每一步的的速度并用非阻塞的方式驱动步进电机呢?

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
day_day 回复了 hayden:状态机……听起来有点fpga的意思……是在main里面循环扫描已经拉高的电平然后再延时拉低吗?不是很理解得了 回复
hayden 回复了 day_day:算是操作系统的初级最简版,搜一下就知道了 回复
电子老工程师 回复了 :封装: DFN5060 品牌: MCC(美微科) 型号: MCAC10H03-TP,没有国产替代,国外的供参考 回复

其他答案 数量:3
  • 用定时器直接触发中断,中断处理那里进行IO状态改变,这样会比较准一点
    • 发布于2018-03-16
    • 举报
    • 评论 6
    • 0
    • 0
day_day 回复了 chen0000009 :我确实是这样做的,但由于在定时器的中断里面用了delay,结果就被批了…… 回复
chen0000009 回复了 day_day :定时器中断为啥还要用delay?中断处理里面都不允许进行延时的,否则会阻塞 回复
day_day 回复了 chen0000009 :这是程序的初级版本,一时也想不到怎么才能把电平拉高之后在中断外面固定时间重新置地,本来可以用其他定时器再拉低的,但总共有三个轴,后面还有定时器要用pwm,我怕这样浪费定时器定时器资源不够。 回复
chen0000009 回复了 day_day :STM32的定时器有10+个,一般用不完的 回复
电子老工程师 回复了  :AD5683RACPZ-2RL7,Analog Devices Inc.,数据接口类型不一样,需要客户确认一下 回复
电子老工程师 回复了  :制造商: Analog Devices Inc. 制造商产品编号: AD5683RACPZ-2RL7 详细描述: 16 位数模转换器 1 8-LFCSP-UD(2x2) 回复

  • 楼上说的状态机和定时器方式感觉可行。。us延时确实太快,可以通过定时器做us延时但是耗资源,影响其他外设。
    • 发布于2018-03-20
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :属于原厂定制件,没有替代型号。 回复

  • 如果普通的delay不能满足实时性要求的话那就只能是用定时器中断了,无论是响应速度和精度都能达到要求。

    • 发布于2018-03-31
    • 举报
    • 评论 1
    • 0
    • 0
电子老工程师 回复了  :S-82F1BAN-I6T1U ABLIC 请参考。 回复

相关问题

问题达人换一批

步进电机的非阻塞驱动