【发布时间】:2023-02-23 07:25:17
【问题描述】:
在这里我定义了句柄和任务原型
void Task1(void *p);
void Task2(void *p);
TaskHandle_t Task1_handle;
TaskHandle_t Task2_handle;
SemaphoreHandle_t myMutex;
这是具有任务和互斥创建功能的设置功能
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
myMutex = xSemaphoreCreateMutex();
if(myMutex == NULL)
{
Serial.println("Mutex cannot be created");
}
xTaskCreate(Task1, "Task 1", 100, NULL, 1, &Task1_handle);
xTaskCreate(Task2, "Task 2", 100, NULL, 1, &Task2_handle);
vTaskStartScheduler();
}
void loop() {
// put your main code here, to run repeatedly:
}
这是我创建的任务
void Task1(void *p)
{
(void) p;
while(1)
{
xSemaphoreTake(myMutex, portMAX_DELAY);
Serial.println("task 1");
for(int i = 0; i < 5; i++)
{
Serial.println(i);
vTaskDelay(500 / portTICK_PERIOD_MS);
}
xSemaphoreGive(myMutex);
}
}
void Task2(void *p)
{
(void) p;
while(1)
{
xSemaphoreTake(myMutex, portMAX_DELAY);
Serial.println("task 2");
for(int i = 0; i < 5; i++)
{
Serial.println(i);
vTaskDelay(500 / portTICK_PERIOD_MS);
}
xSemaphoreGive(myMutex);
}
}
到目前为止,这是我的代码,但我似乎没有在串行监视器上完成我的第二个任务:Serial Monitor Output
我使用的信号量功能错了吗?
【问题讨论】:
标签: c++ arduino mutex freertos