c - 自由RTOS | 将用户输入的字符传递给任务
问题描述
我正在使用 FreeRTOS 开发 ESP-32,我想要实现的是,我想将用户输入的字符传递给任务。下面的代码是我写的,但它不起作用正如预期的那样,
#include <stdio.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
void task(void* pvParameters){
char* data;
data = (char *) pvParameters;
while (true)
{
printf("%s\n", data);
vTaskDelay(2000 / portTICK_PERIOD_MS);
}
}
void app_main(void){
char c = 0;
char * data = "Hello";
while (c != '\n')
{
c = getchar();
if(c != 0xff){
data = &c ;
printf(" The entered %c\n", c);
printf(" The data entered %c\n", *data);
}
vTaskDelay(100/portTICK_PERIOD_MS);
}
xTaskCreate(task, "task1", 4096, (void*) data, 1, NULL);
}
我在这里犯了什么错误。
解决方案
app_main() 是一项任务吗?如果不是,您不能在其中调用 vTaskDelay(),因为调度程序没有运行,所以没有什么可以延迟的。
您只是想将输入字符流传递给任务吗?如果是这样,那么流缓冲区可能是最合适的https://www.freertos.org/RTOS-stream-buffer-example.html
另一方面,您可能只是在创建任务时尝试将一组数据传递给任务?
推荐阅读
- indexing - 为使用 Qgis 中的聚合函数连接的每个值创建索引
- c++ - 三向比较运算符的结果类型重载比较运算符
- mitmproxy - 如何在 Mitmproxy 插件中发出网络请求
- c# - Internet 连接检查 API (wininet.dll) 不起作用 | C# WPF
- git - 如何 git checkout “下一个” 提交
- java - 如何使用 Java 客户端代码获取 OAuth2.0 访问令牌并使用此令牌调用 RESTFul Web 服务
- json - 无法在颤振飞镖中使用 REST API 发送拦截的短信
- amazon-emr - Trino (PrestoSQL) 的上一年度迄今为止的窗口函数
- javascript - 如何使用 RowGroup 显示图像?
- arrays - 无法从非空数组中获取元素