在 FreeRTOS 中使用 LinkedList 无法保存值
Using LinkedList in FreeRTOS fails to save values
我在 Arduino 上运行 FreeRTOS 10.0,使用 Atmel 328P 和 2560
我需要利用LinkedList,而不是重新发明轮子,在这里使用LinkedList Arduino库。
该库在标准的Arduino(循环(配置中工作,但是当我将其放入RTOS时,它无法保存值。 size(( 计数器递增,就好像它在保存一样,但返回的所有值都是"0"。
我最初认为这是库的实现问题,但尝试 Qlist 会产生相同的结果。
对于 LInkedList 来说,我需要做一些特别的事情来正确处理 FreeRTOS 中的保存值吗?
免费实时操作系统代码:
#include <Arduino_FreeRTOS.h>
#include <LinkedList.h>
void TaskTest( void *pvParameters );
void setup() {
Serial.begin(115200);
while (!Serial) {
;
}
xTaskCreate(
TaskTest
, (const portCHAR *)"Test"
, 128
, NULL
, 2
, NULL );
}
void loop()
{
}
void TaskTest( void *pvParameters __attribute__((unused)) )
{
LinkedList<byte> list;
for (int i = 0; i < 256; i++) {
list.add(i);
Serial.print(i);
Serial.print(',');
Serial.print(list.get(list.size() - 1));
Serial.print(',');
Serial.println(list.size());
}
for (;;)
{
vTaskDelay(1);
}
}
FreeRTOS 代码输出(截断(:
248,0,249
249,0,250
250,0,251
251,0,252
252,0,253
253,0,254
254,0,255
255,0,256
标准Arduino代码:
#include <LinkedList.h>
void setup() {
Serial.begin(115200);
while (!Serial) {
;
}
}
void loop() {
LinkedList<byte> list;
for (int i = 0; i < 256; i++) {
list.add(i);
Serial.print(i);
Serial.print(',');
Serial.print(list.get(list.size() - 1));
Serial.print(',');
Serial.println(list.size());
}
for (;;)
{
}
}
标准 Arduino 代码输出(截断(:
249,249,250
250,250,251
251,251,252
252,252,253
253,253,254
254,254,255
255,255,256
LinkedList 类使用"new"运算符在堆上动态分配新节点。您的 FreeRTOS 构建是否分配了足够的堆,例如您的非 FreeRTOS 循环代码?如果您将heap_3分配器与 FreeRTOS 本身一起使用,则所有 FreeRTOS 对象和任务堆栈也将占用系统堆的空间。
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- C++:正在检查LinkedList中的回文-递归方法-错误
- 创建LinkedList退出,返回代码为-11(SIGSEGV)
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 在C++中将类(带有Vector成员)保存为二进制文件
- 在c++中实现LinkedList时,应出现未处理的错误
- C++.我想将更改后的特定字符行保存在字符串中
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- 哈希文件递归并保存到矢量Cryptopp中
- 如何将二进制格式的 C++ 对象的 std::vector 保存到磁盘?
- 已修改的LinkedList未在文本文件本身中更新
- 无法通过头文件保存变量的值
- 我们可以将数据永久保存为数据结构吗?
- 在 FreeRTOS 中使用 LinkedList 无法保存值