Skip to content

常见错误与排查建议

1. 一启动就 HardFault

优先检查:

  • yr_task_stack_init() 构造的初始栈帧是否正确
  • PC 是否指向有效 Thumb 地址
  • 栈顶是否满足对齐要求
  • SVC_Handler / PendSV_Handler 是否接入了正确的向量表

2. 能进首任务,但一切换就死机

优先检查:

  • 普通任务切换时保存/恢复的寄存器是否完整
  • 旧任务 SP 是否正确写回
  • 新任务 SP 是否正确读出
  • 异常返回模式是否正确

3. 延时不准或完全不生效

优先检查:

  • yr_tick_update() 是否真的在周期中断中被调用
  • 调用频率是否等于 YR_TICK_RATE_HZ
  • 时钟源是否稳定

4. ISR 唤醒任务后没有切换

优先检查:

  • *_from_isr() 返回的 need_switch 是否为 YR_TRUE
  • ISR 末尾是否调用了 yr_sched_switch()
  • 中断退出路径是否允许 PendSV 或等价切换机制生效

5. 日志一开就异常

优先检查:

  • yr_putc() 是否可重入
  • 串口发送是否阻塞过久
  • 任务栈是否过小