从stm32来讲,单片机裸机开发可以理解为单进程、单线程的开发,也就是只有一个main函数,然后系统就只需要运行main函数从头走到尾就可以了,期间还包括前后台的设计,如中断和中断处理。其实合理运用好中断的前后台操作处理,也可以理解为一个小型的操作系统,但是具体差别还是很大的。比如中断有快进快出、不能写delay的要求特点,当我们处理复杂的程序的时候,这一点就往往限制了我们的开发,我们常常采用的是在main里面写状态机、中断里面改标志位的方法进行开发。这往往加大了开发的难度。
然后上操作系统,如RTOS,就很好解决了这个问题,实际上操作系统就是关系到一个时间片和任务调度,我们可以把每一个要处理的内容放到一个任务里面,然后结合消息队列发送接收处理,进行多任务分割和进行、并行处理,其实也就类似为多个main函数可以调用,然后main函数还可以控制执行与否(是否挂起)。 结合前面提到的裸机问题,我们的解决办法就是——中断上下文处理。在中断中只需要发送消息队列,作为消息数据的发送标志位,发送完就可以退出中断了,这样就大大减小了中断占用的时间。 然后在任务端就进行任务阻塞等待,有消息队列发送消息过来才运行一次任务,也就是所谓的中断下文。这样我们可开发性就高了很多,同时多任务的类似并行运行,也加大了可设置性和代码规范性。编写和修改起来更加简单方便
【Freertos】单片机裸机开发和上操作系统的区别
于 2024-10-10 09:51:20 首次发布