个人笔记:
单片机只有一块CPU没办法同时执行多个任务,于是需要利用延时或者中断进行多线程模拟
假设情景,我正在家里做作业,但家长让我去烧水。
做作业是我的主要任务,烧水是附加任务,把做作业视为主程序,烧水作为次要程序。
延时概念:
上水开火,这一步表示写好了延时函数;
使用延时的情况下,即在烧水的时候,我就等在厨房,直到水烧开了,才回去写作业。
这种情况下,只能做一件事情,烧水的时候,就没有在做作业,单片机效率就很低。
定时器中断概念:
上水开火,这一步表示定时器的初始化;
使用定时器的情况下,我回到房间做作业,但我每隔三分钟或者五分钟的固定一段时间,就会去厨房看一眼,水烧开了没有,如果水烧开了,就执行倒热水等操作。
这种情况下,做作业和烧水同时进行,但时间到了,我会去厨房那边看看,中断我写作业的进程,即次要程序打断了主要程序,看完回来,我又会继续写我的作业,单片机就实现了一个伪多线程。
外部中断概念:
上水开火,这一步表示外部中断的初始化;
使用外部中断的情况下,我回到房间写作业,但这次不再间隔时间去厨房看,直到厨房水烧开了,让我听见了呜鸣声,得到了水开了这个确切的消息,再去厨房进行倒热水等操作。
这种情况下,做作业和烧水同时进行,直到我得到了确切的信息,中断我写作业的进程,直接去厨房进行预设操作,单片机同样实现了一个伪多线程。
个人笔记.。