常见错误与排查建议
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()是否可重入- 串口发送是否阻塞过久
- 任务栈是否过小