要我说啊,现在好多人一提到 STM32 这类 MCU 开发,就跟风似的吹 RTOS 多好多好,说裸机编程过时啦、搞不定复杂逻辑啦。真的是这样吗?我看未必,那些把 RTOS 吹上天的,大概率自己都没吃透裸机编程的精髓,或者写的代码全是阻塞式的死循环,压根没摸到状态机、异步通信这些裸机框架的门道。
先掰扯掰扯所谓的 RTOS 优势。都说 RTOS 任务调度牛,能处理多任务。可咱摸着良心说,STM32 这种 MCU 资源就这么点,内存总共就几十上百 KB,你开几个任务下来,每个任务的栈空间怎么分配?稍有不慎就栈溢出,debug 的时候你看着 RTOS 那复杂的任务切换日志,能不头晕?反倒是裸机编程,全局变量、数据队列全在自己搭的框架里,哪个任务该干啥、什么时候切换状态,全靠状态机和回调机制明明白白管着,就像自己亲手搭的积木,每一块怎么用心里门儿清。你说 RTOS 能处理实时性?拉倒吧,裸机里用精确的定时器中断加事件标志位,照样能做到微秒级的响应,关键是你得会写非阻塞的代码,别一股脑全塞进 while (1) 里死等。