#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "freertos.h"
#include "task.h"
#include "Freertos.h"
#include "queue.h"
#include "usart.h"
#include "semphr.h"
TaskHandle_t myTaskHandle1;
TaskHandle_t myTaskHandle2;
SemaphoreHandle_t xBinarySemaphore ;
static void Task1( void *pvParameters );
static void Task2( void *pvParameters );//static void TaskA( void *pvParameters );
SemaphoreHandle_t xbinarySemaphore;
int main(void)
{
vSemaphoreCreateBinary( xBinarySemaphore);
USART_Config();
// xTaskCreate(TaskA,"myTaskA",1000,NULL,2,NULL);
xTaskCreate(Task1,"myTask1",1000,NULL,2,NULL);
xTaskCreate(Task2,"myTask2",1000,NULL,2,NULL);
vTaskStartScheduler();
while (1)
{
}
}
//static void MyTask0(void* arg){
// const char data0[20]="myTask0 running";
// while(1){count0++;
// taskENTER_CRITICAL();
// //printf("count0=%d\n",count0);
// taskEXIT_CRITICAL();
// tasksign0=1;tasksign1=0;tasksign2=0;
// xQueueSend(myQueueHandler,data0,0);
// //vTaskDelay(200);
// }
//}
static void Task1( void *pvParameters )
{
while (1)
{
xSemaphoreTake(xbinarySemaphore, portMAX_DELAY);
taskENTER_CRITICAL();
printf("task1 running\n");
taskEXIT_CRITICAL();
xSemaphoreGive(xbinarySemaphore);
vTaskDelay(200);//Delay_ms(20);
}
}
static void Task2(void *pvParameters)
{
while (1)
{
xSemaphoreTake(xbinarySemaphore, portMAX_DELAY); // 等待二值信号量
// 执行任务2的操作
taskENTER_CRITICAL();
printf("task2 running\n");
taskEXIT_CRITICAL();
xSemaphoreGive(xbinarySemaphore);
vTaskDelay(200);//Delay_ms(20);
}
}
为什么上述代码在使用MDK编译时不能在串口输出