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

stm32h743的延时

fighter-12315 2018-09-20 浏览量:2044

最近在玩stm32h743的开发板,在点灯时发现了一个很奇怪的现象,同样是延时200ms,用HAL_Delay(200)跟用正点原子的例程里的Delay_ms(200)不一样,HAL_Delay要稍微快一点。感觉很奇怪,然后我在线调试时更奇怪了,执行一句HAL_Delay(200)花了25s,而执行一句Delay_ms(200)大概花了7、8s的样子。

当然这里的25s,7、8s都是硬件上的时间,实际一瞬间就跑完了,但是调试界面显示一下加了25s,,,,,

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 楼主要调用HAL库自大的Delay函数需要正确匹配晶振和倍频数,确保你板子运行的主频就是400MHz(H7),只要你硬件主频不匹配的话HAL的延时就不可能正常,另外,显示不对的话应该检查一下你读取时间的算法有没有错,不要用调试看。

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

其他答案 数量:12
  • 你keil中的时钟设置是多少,设置 为25M与设置为8M是不是你你的这个时间差差不多了。你可以看看Keil中的配置。

    至于时间不一样,可以用示波器看看哪个时间更准。

    一般可能是由于实现的方式不同,感觉 HAL的库的效率比较低,时间误差可能会在长一些的。

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

  • HAL_Delay(200)和Delay_ms(200)执行时间不一样,最大的可能性是两个函数实现的方式可能不同,存在一些误差。至于你说的在线调试的时候时间很长,是因为这个和你的电脑以及你的调试器有关。可能是你的电脑对你的调试器驱动上存在问题,要么就是你的调试器速度太慢。
    • 发布于2018-09-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 单片机直接的时钟周期或者晶振不同所设置的定时计数之类的不能直接复制粘贴,需要根据本身单片机的参数做修改才可以精准定时
    • 发布于2018-09-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 最好检查下keil里面的时钟设置,硬件上时间太长可能是设置PLL倍频有问题!
    • 发布于2018-09-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 应该是pLL倍频没有设置一致,或者主晶振不同
    • 发布于2018-09-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 上示波器看一下那个更准确,其次看设置的波特率是否匹配 你用的这两个函数,
    • 发布于2018-09-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 应该是时钟的问题

    如果需要延时正常,要配置和库相应的时钟才行

    • 发布于2018-09-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 调整时钟配置,看看结果的变化
    • 发布于2018-09-22
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个HAL_Delay和原子例程里面的延时函数应该是不一样的,HAL_Delay好像用定时器实现的。在线调试的时候会打乱定时器的运作,导致延时不准
    • 发布于2018-09-23
    • 举报
    • 评论 1
    • 0
    • 0
fighter-12315 回复了 chen0000009 :不都是用systic实现的吗 回复

  • 这两个要精准的时间定时才能做到精准,检查一下你的时钟
    • 发布于2018-10-20
    • 举报
    • 评论 0
    • 0
    • 0

  • 检查一下系统时钟配置是否正确,可以用示波器测量一下。
    • 发布于2018-10-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 应该是一样的,你看下时钟和pll设置的对不对
    • 发布于2018-09-20
    • 举报
    • 评论 0
    • -1
    • 0

相关问题

问题达人换一批

stm32h743的延时