stm32和esp32在arduino中使用setup和loop的区别
最近用到了esp32,还玩得很嗨。但都是用idf。看arduino也不错。也玩过几下。这次分享一下它们启动的区别。
我现在用最新的arduinoide2.03. 首先咋们要找到
C:\Users\Admin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\cores\esp32
C:\Users\Admin\AppData\Local\Arduino15\packages\STMicroelectronics\hardware\stm32\2.3.0\cores\arduino
两个目录的main.c对照一下。如图:
stm32的main.c
esp32的main.c
发现stm32的main.c的程序入口函数main()是直接的调用了setup(),loop().
而esp32是创建了一个freertos任务loopTask,然后在loopTask任务里面调用setup(),loop().
所以esp32是默认带freertos任务,只要是启动了就开启了freertos。而且在loop里面的程序是始终回运行的。因为loop是loopTask任务里的一个调用的函数。
如果你是stm32在setup里开启任务并调度任务。那估计就不会跑到loop().里面来了。或者说你在loop里面调度任务后,调度后面的程序了不执行了,除非系统出了问题。
不知道我理解的对不对。