mbed上看到的定时器算法, 很有趣, 看看大家有什么建议:
1. 只用一个硬件定时器
2. timer, timeout, ticker都差不多
3. 理论上可以有无限多个软件模拟定时器
算法:
1. 用链表对定时器排序, 最近的靠前
2. 定时时间是最近那个
3. 中断触发后回调最近那个处理函数
4. 检查下一个, 如果也到时, 继续回调
5. 如果没到时, 设定定时时间
整个算法很简单实用, 一个硬件定时器搞定. 不知道精度怎样?? 估计会有几十条指令的精度误差, 对于几十兆的mcu, 精度应该在us级别? |