SCoop库文件nodeMCU-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13723|回复: 27

[未解决] SCoop库文件nodeMCU

[复制链接]
发表于 2020-7-26 08:38 | 显示全部楼层 |阅读模式
是不是nodeMCU没办法用这个库文件?
发表于 2020-7-26 11:40 | 显示全部楼层
NodeMCU不需要用SCoop。不管是ESP8266,还是ESP32,跑的都是FreeRTOS,你既然用Arduino编程,那么使用ESP自带的SDK就可以了。xTaskCreate或者xTaskCreatePinnedToCore就可以直接在FreeRTOS下创建多任务了。
 楼主| 发表于 2020-7-26 12:32 | 显示全部楼层
开在边缘 发表于 2020-7-26 11:40
NodeMCU不需要用SCoop。不管是ESP8266,还是ESP32,跑的都是FreeRTOS,你既然用Arduino编程,那么使用ESP自 ...

哦哦哦。需要引入什么库文件吗???
发表于 2020-7-26 12:43 | 显示全部楼层
seattle 发表于 2020-7-26 12:32
哦哦哦。需要引入什么库文件吗???

不需要。因为是开发板自带的SDK,arduino编译的时候会自动去开发板SDK所在目录下搜索,所以不需要自己额外去include头文件。
 楼主| 发表于 2020-7-26 12:44 | 显示全部楼层
开在边缘 发表于 2020-7-26 12:43
不需要。因为是开发板自带的SDK,arduino编译的时候会自动去开发板SDK所在目录下搜索,所以不需要自己额 ...

谢谢。还有一个问题,如果是用这种方法是不是属于多线程???那在主线程里面用delay函数会不会影响子线程???
发表于 2020-7-26 12:53 | 显示全部楼层
本帖最后由 开在边缘 于 2020-7-26 12:59 编辑
seattle 发表于 2020-7-26 12:44
谢谢。还有一个问题,如果是用这种方法是不是属于多线程???那在主线程里面用delay函数会不会影响子线 ...

多个任务是同时运行的,但是不能叫多线程,应该叫多任务,因为没有主从的关系,只有任务优先级别的区别。

delay会影响的,因为CPU毕竟只有1-2个核心,如果是在同一个核心上的多个任务,那么freeRTOS是在不同任务之间来回倒腾,如果某个任务进入一个长时间的死循环,那么就会影响到同一个核心上的其他任务。所以此时应该使用vTaskDelay来代替delay,不过你直接使用delay也没问题,因为SDK中的delay函数就是调用vTaskDelay。

屏幕快照 2020-07-26 12.58.54.png
 楼主| 发表于 2020-7-26 13:27 | 显示全部楼层
开在边缘 发表于 2020-7-26 12:53
多个任务是同时运行的,但是不能叫多线程,应该叫多任务,因为没有主从的关系,只有任务优先级别的区别。
...

哦哦。是不是可以这么理解。。因为nodemcu上运行的是FreeRTOS操作系统,delay函数调用的vTaskDelay。。。。。。。其他的例如,,uno的delay函数就不是这样了。。。。。。那uno上运行的也是操作系统吗???uno跟nodemcu的核心架构不同吗?
发表于 2020-7-26 13:44 | 显示全部楼层
本帖最后由 开在边缘 于 2020-7-26 13:46 编辑
seattle 发表于 2020-7-26 13:27
哦哦。是不是可以这么理解。。因为nodemcu上运行的是FreeRTOS操作系统,delay函数调用的vTaskDelay。。。 ...

应该这样理解,FreeRTOS下使用的是vTaskDelay,然后为了方便在arduino下编程,考虑到兼容性,所以才弄出了一个delay函数。

uno的delay则是arduino自己的函数。

uno使用的是ATmega328P,也是有操作系统的,严格来讲,应该叫引导程序。

uno跟nodemcu的核心架构完全不一样,uno是ATmega328P,是avr单片机。而nodemcu使用的是ESP8266、ESP32。
 楼主| 发表于 2020-7-26 14:00 | 显示全部楼层
开在边缘 发表于 2020-7-26 13:44
应该这样理解,FreeRTOS下使用的是vTaskDelay,然后为了方便在arduino下编程,考虑到兼容性,所以才弄出了 ...

明白了。谢谢
 楼主| 发表于 2020-7-26 14:09 | 显示全部楼层
开在边缘 发表于 2020-7-26 13:44
应该这样理解,FreeRTOS下使用的是vTaskDelay,然后为了方便在arduino下编程,考虑到兼容性,所以才弄出了 ...

为什么我编译的时候提示xTaskCreate未定义?是不是我下载错sdk了???nodemcu该用哪个SDK?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 12:34 , Processed in 0.083767 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表