#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "freertos.h"
#include "task.h"
#include "queue.h"
#include "usart.h"
#include "semphr.h"
TaskHandle_t myTaskHandle1;TaskHandle_t myTaskHandle2;TaskHandle_t myTaskHandle3;
static void Task1(void *pvParameters);static void Task2(void *pvParameters);static void Task3(void *pvParameters);
uint32_t count=0; volatile uint32_t tasksign1=0,tasksign2=0,tasksign3=0;
int main(void)
{
xSemaphore=xSemaphoreCreateBinary();
USART_Config();
xTaskCreate(Task1,"myTask1",128,NULL,3,&myTaskHandle1);
xTaskCreate(Task2,"myTask2",128,NULL,3,&myTaskHandle2);
xTaskCreate(Task3,"myTask3",128,NULL,3,&myTaskHandle3);
vTaskStartScheduler();
while (1)
{
}
return 0;
}
static void Task1(void *pvParameters){
for(;;){ tasksign1=1,tasksign2=0,tasksign3=0;
taskENTER_CRITICAL();
printf("task1\r\n");
taskEXIT_CRITICAL();
//vTaskDelay(200);
tasksign1=0,tasksign2=0,tasksign3=0;
}
}
static void Task2(void *pvParameters){
for(;;){tasksign1=0,tasksign2=1,tasksign3=0;
taskENTER_CRITICAL();
printf("task2\r\n");
taskEXIT_CRITICAL();
//vTaskDelay(200);
tasksign1=0,tasksign2=0,tasksign3=0;
}
}
static void Task3(void *pvParameters){
for(;;){tasksign1=0,tasksign2=0,tasksign3=1;
taskENTER_CRITICAL();
printf("task3\r\n");
taskEXIT_CRITICAL();
//vTaskDelay(200);
tasksign1=0,tasksign2=0,tasksign3=0;
}
}
在FreeRTOSConfig.h找到 configTICK_RATE_HZ设置系数更改时间片长度.
时间片设置为1ms:
时间片设置为5ms: