好多搞 STM32 开发的兄弟总觉得,上 RTOS 就跟穿西装打领带似的,立马显得高级了,仿佛不用多线程任务调度就是技术不够硬。但咱摸着 STM32 的寄存器说话,这玩意真的像宣传的那样,在 MCU 上比裸机编程强出天际吗?未必见得。
先看看手里那点可怜的资源 ——STM32F103 也就几十 KB 的 RAM,Flash 撑死几百 KB。好些人一上来就开三四个线程,串口收数据开一个,LED 闪烁开一个,传感器采集开一个,觉得这样 “各司其职” 才专业。可每个线程都得扒拉独立的 stack 啊,一个线程分 5KB 栈,四个线程就是 20KB,再加上 RTOS 内核自己占的内存,小容量 MCU 的 RAM 直接被啃掉一半。更坑的是多线程那套同步机制,新手觉得写个互斥锁就能万事大吉,结果两个线程改同一个全局变量时,时而数据错位时而程序卡死,debug 时仿真器跑着正常,一上板子就翻车。你以为加个延时函数就能避免竞争?too young,三个以上线程的同步问题能让你半夜对着示波器抓头发,这复杂度可不是线性增长,是跟线程数量玩指数爆炸呢。