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

HAL库定时器中断卡死,求助各位大佬,这可能是什么原因!!

FEItwo 2019-02-27 浏览量:4379
当开启定时器中断时候,开启定时器时会卡死程序,调试,全速运行卡死在-HAL_TIM_base_Start_IT函数,单步调试发现卡死在程序应用的HAL_delay函数内,但是另外写一个定时器中断和使用延时的程序不会卡死,求助各位大佬,这可能是什么原因!!
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • SysTick是内核中断,优先级别默认最低。
    (可以用内核函数来修改~   当然,这就要看内核M3的书了,而不是看STM32的参考手册那么简单。暂时就不深入研究,日后更新。)
    总结起来就是,就是传说中优先级别默认最低,虽然SysTick一直在跑,但是没进入到中断来读取它的值~(不知是哪里让我潜意识地认为SysTick级别比外设都高,导致这问题)
    如果中断里调用HAL_Delay就会停在那里,因为根本不会进入那个级别更低的中断。
    https://blog.csdn.net/alwxkxk/article/details/47204677​
    • 发布于 2019-02-27
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:9
  • 开中断调试有时候会出错的,正常运行看看,或者通过串口把调试信息打印出来
    • 发布于2019-02-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 那你应该是系统delay用的定时器和你用的冲突了,检查下

    • 发布于2019-02-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 是不是你的滴答定时器中断和你的额定时器中断冲突了
    • 发布于2019-02-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个定时器是不是被多个地方使用,用混了
    • 发布于2019-02-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 看一下定时器中断是否没有正确被清除,此外,HAL库的时基定时器不能另作它用,不然会导致系统异常
    • 发布于2019-02-27
    • 举报
    • 评论 0
    • 0
    • 0

  • 首先定时器中断服务函数中不可以用HAL_Delay(),其次你定时器中断是多久触发一次呢?有清除标志位吗?

    • 发布于2019-02-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 有可能是中断里没有跳出

    需要清相关的标志位


    • 发布于2019-02-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 有没有被其他的程序占用,时钟的配置是不是对的,有没有超频呢
    • 发布于2019-03-16
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

HAL库定时器中断卡死,求助各位大佬,这可能是什么原因!!