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

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • SYSTICK 是一个24位的定时器

    2^24 = 16777216


    而你的SysTick->LOAD=9000*i;   2000*9000=18000000  数据已经溢出了

    • 发布于 2018-08-31
    • 举报
    • 评论 0
    • 2
    • 0

其他答案 数量:15
  • 据我所知,是因为时间值太大了,定时器应该都已经完全溢出了。所以值最好不要太大了。

    你要是想两秒最好循环两次

    • 发布于2018-08-31
    • 举报
    • 评论 0
    • 2
    • 0

  • 嘀嗒时钟是24位的,最大延时装载值大概是1024*1024*16—1这么大的一个数,所以应该是数据过大溢出了。
    • 发布于2018-08-31
    • 举报
    • 评论 0
    • 2
    • 0

  • 使用systick的延时,延时基数越大,中间配置寄存器所消耗的事件总和就越小,也就是实际延时时间更短了。
    • 发布于2018-08-31
    • 举报
    • 评论 0
    • 1
    • 0

  • 应该是设置时间值太大导致数据溢出了
    • 发布于2018-08-31
    • 举报
    • 评论 0
    • 1
    • 0

  • 应该是延时基数变大,寄存器消耗的时间总体变小,所以延时变短了一点点
    • 发布于2018-08-31
    • 举报
    • 评论 0
    • 1
    • 0

  • 如果溢出,超出限制就不好了
    • 发布于2018-08-31
    • 举报
    • 评论 0
    • 1
    • 0

  • 这种延时本来就不准的,可能是中断的干扰
    • 发布于2018-08-31
    • 举报
    • 评论 0
    • 1
    • 0

  • 数据溢出了吧,需要长延时的话,嵌套调用delay_ms
    • 发布于2018-09-01
    • 举报
    • 评论 0
    • 1
    • 0

  • 看看数据是否真的溢出
    • 发布于2018-09-12
    • 举报
    • 评论 0
    • 0
    • 0

  • SysTick结构体下面的LOAD成员是一个24位的变量,这里超过24位,就相当于只装载了一个

    18000000-2^24的值,时间自然变短

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

  • systick的重装载寄存器是24位长度的,也就是最大只能设置2^24重装载值,超过这个值就相当于减去了2^24的数据,也就是缩小了延时时间。正确做法是调用两次systick延时1秒的函数。

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

  • 你这样的做法相当于数据溢出了,这样延时时间就是原来的一半
    • 发布于2018-09-25
    • 举报
    • 评论 0
    • 0
    • 0

  • systick是一个滴答定时器,这个定时本来就不是很精准,你这种情况可以用高级定时器来定时
    • 发布于2018-09-26
    • 举报
    • 评论 0
    • 0
    • 0

  • systick寄存器为24位长度,装载值超过2^24会导致溢出,定时时间自然就短了。
    • 发布于2018-10-13
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32的延时函数