前言
最近学习了百问网的7天智能家居项目,在此想要和大家分享一些智能家居开发经验。
一、裸机的开发方式
轮询
所谓轮询方式,即为轮流查询是否要处理当前任务,如果要处理则所有的CPU资源都用来处理当前的任务,其他任务需要等待当前任务处理完毕后才有机会执行。
轮询的缺陷
1.任务之间干扰严重,假如有某些任务耗时很长,后续任务就会等待很长时间才有机会执行。
2.无法及时响应重要任务。
事件驱动
事件通常和中断是一起讲的,于处理器而言,某个硬件产生的一个脉冲信号通知另一个硬件根据此信号做处理称之为事件,例如,定时器每隔1ms触发 ADC 去采样,这种就叫做事件,过程中不需要 CPU 参与;但是 ADC 采样完成之后需要 CPU 去处理采样的数据,所以需要告知 CPU 它采样完了, cPU 可以去取数据做处理了,那么 ADC 通知 cPU 采样完了这个动作就叫做中断。
二、中断优先级
Cortx-M3有256个优先级和128级抢占优先级。
中断优先级简介
每一个中断都有属于自己的中断优先级,中断优先级越高的中断越先相应,中断优先级高的中断可以打断正在执行的中断优先级低的中断,这也被称为中断嵌套。
轮询和事件驱动的结合
在实际开发中不可能单独使用轮询方式或者中断方式去编写程序和项目,一般会同时采用这两种方法。
三、RTOS的引入
在裸机开发过程中使用轮询和中断的方式可以解决大部分问题,但是在一些多任务、耗时长任务等复杂情况下,单纯的裸机开发已经不能满足需求了。
RTOS的具体讲解在我前面的文章有说到有兴趣的朋友可以去看看。
RTOS
总结
今天是学习智能家居项目的第一天,总的来说百问网的这个项目还是非常值得大家去学习的。