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

stm32外设时序中的延时,怎样利用做别的工作?

songtao 2018-06-19 浏览量:759
stm32外设时序中的延时,怎样利用做别的工作?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 如果是使用for延时的,只能是在中断中去做别的工作了

    要是使用定时器延时的,只要等定时器的中断就可以了,平时去运行别的工作了

    也可以使用RTOS中的延时函数,由系统去调度运行什么程序的问题

    • 发布于 2018-07-17
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:9
  • 可以考虑以下几种方式:

    1、使用操作系统,把有外设阻塞的任务设为低优先级任务。

    2、尽量采用中断或DMA方式收发数据。

    3、如果外设读写操作过程允许中断并且速度又不高,可以考虑做一个状态机。

    • 发布于2018-06-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 比较简单的是使用定时器,定时一段时间后再回来执行操作,中间时间可以执行其他程序
    • 发布于2018-06-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 延时找个定时器实现,可以用滴答定时器或者通用定时器,只有定时器中断产生才进行后续业务的处理

    如果你用了实时操作系统,这种非阻塞式的延时就比较容易实现了,比如OSTimeDlyHMSM

    • 发布于2018-06-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 用定时中断法或上操作系统,一般的延时函数都是阻塞型的
    • 发布于2018-06-20
    • 举报
    • 评论 0
    • 0
    • 0

  • spi或者iic短时间延时都是用空指令替代,如果是长时间延时一般是定时器
    • 发布于2018-06-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果是驱动时序的延时就直接等待,因为任务切换要很多时间,如果是长时间的延时就用状态机切换任务
    • 发布于2018-06-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果是用空循环来做的延时函数,那是单片机无法做任何事情的,如果是要可以做别的事情的延时,可以用systick中断或者定时器中断。

    • 发布于2018-06-30
    • 举报
    • 评论 0
    • 0
    • 0

  • 延时函数的里面用一个指针跳转到其他地方去执行相应的程序,执行完再跳转回来
    • 发布于2018-07-14
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

stm32外设时序中的延时,怎样利用做别的工作?