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

stm32在进入hardfault后,定时器还运行么

chownn 2018-12-21 浏览量:2387
stm32在进入hardfault后,定时器还运行么?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 进入 hardfault 之后,单片机一切正常,一个部件都没有停摆。

    单片机各个部位电源时钟一切正常,为什么停摆呢?包括定时器一切工作正常

    因为 hardfault 中断的优先级很高很高,是个负数,仅仅低于 reset 复位优先级,所以 hardfault 中断最优先执行,并且 hardfault 中断服务函数是个死循环,也就是他一旦执行永远霸占 cpu 不释放,优先级高又不会结束,所以其他一切中断,任务都没有机会运行,抢不到 CPU 时间,看起来是CPU不响应任何任务或者中断,貌似死了,其实外设一个都没有停摆。

    退一步讲,就算 CPU 跑飞,外设也不会停摆,外设是否运行根本不依赖CPU是否运行,比如 CPU 运行任务的时候,时钟该怎么计数还是怎么计数,跟 CPU 同时运行互不干扰,CPU 运行其他程序影响 timer 计数值了么,timer 走的慢了么? 都没有吧。

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

其他答案 数量:10
  • 外设应该还是好的,但是已经没有用了,程序没有办法处理了。比如看门狗、RTC之类的都是正常的。
    • 发布于2018-12-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 就算运行也无法调用了.因为hardfault会一直占据中断.
    • 发布于2018-12-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 不能用了,这个就是程序跑飞进入这个中断的,等于死机,一般是内存溢出或者堆栈不够,可以在启动文件里把堆栈 200改成400就可了

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

  • 不可以运行了,程序完全是都停在了错误中断中的
    • 发布于2018-12-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 还在运行的,但是已经不会响应中断了。
    • 发布于2018-12-22
    • 举报
    • 评论 0
    • 0
    • 0

  • 还能运行,但是hardfault这个中断的优先级太高,导致其它的中断全部失效
    • 发布于2018-12-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 理论上是在运行的
    • 发布于2018-12-31
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个中断优先级最高了,其他的中断就不运行了
    • 发布于2019-01-17
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个是硬件中断进去了就不能跳出了,只能复位系统
    • 发布于2019-01-23
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

stm32在进入hardfault后,定时器还运行么