【发布时间】:2026-02-10 05:15:02
【问题描述】:
我正在使用 Atmel 328P 和 2560 在 Arduino 上运行 FreeRTOS 10.0
我需要使用 LinkedList,而不是重新发明*,我使用的是 LinkedList Arduino library here.。
该库在标准 Arduino(循环)配置中工作,但是当我将其放入 RTOS 时,它无法保存值。 size() 计数器递增,就好像它正在保存一样,但返回的所有值都是“0”。
我最初预计这是库的实现问题,但尝试Qlist 会产生相同的结果。
为了让 LInkedList 正确处理 FreeRTOS 中的保存值,我需要做些什么特别的事情吗?
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
【问题讨论】:
标签: c++ memory linked-list arduino freertos