初级会员

- 积分
- 57
- 金钱
- 57
- 注册时间
- 2019-7-19
- 在线时间
- 13 小时
|
2金钱
最近在学习freertos操作系统,通过移植了一个比较简单的双任务(就点了两个灯),但是第二个任务为什么跑不起来,根据我的理解如果两个任务优先级一样,在一个时间片结束后应该去执行第二个任务啊但是,第二个任务就是跑不起来。
这是主函数部分
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "FreeRTOS.h"
#include "task.h"
#include "stdbool.h"
//?????
#define START_TASK_PRIO 1
//??????
#define START_STK_SIZE 128
//????
TaskHandle_t StartTask_Handler;
//????
void start_task(void *pvParameters);
//?????
#define LED0_TASK_PRIO 2
//??????
#define LED0_STK_SIZE 50
//????
TaskHandle_t LED0Task_Handler;
//????
void led0_task(void *pvParameters);
//?????
#define LED1_TASK_PRIO 2
//??????
#define LED1_STK_SIZE 50
//????
TaskHandle_t LED1Task_Handler;
//????
void led1_task(void *pvParameters);
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//???????????4
delay_init(); //???????
uart_init(115200); //?????
LED_Init(); //???LED
//??????
xTaskCreate((TaskFunction_t )start_task, //????
(const char* )"start_task", //????
(uint16_t )START_STK_SIZE, //??????
(void* )NULL, //??????????
(UBaseType_t )START_TASK_PRIO, //?????
(TaskHandle_t* )&StartTask_Handler); //????
vTaskStartScheduler(); //??????
}
//????????
void start_task(void *pvParameters)
{
taskENTER_CRITICAL(); //?????
//??LED0??
xTaskCreate((TaskFunction_t )led0_task,
(const char* )"led0_task",
(uint16_t )LED0_STK_SIZE,
(void* )NULL,
(UBaseType_t )LED0_TASK_PRIO,
(TaskHandle_t* )&LED0Task_Handler);
//??LED1??
xTaskCreate((TaskFunction_t )led1_task,
(const char* )"led1_task",
(uint16_t )LED1_STK_SIZE,
(void* )NULL,
(UBaseType_t )LED1_TASK_PRIO,
(TaskHandle_t* )&LED1Task_Handler);
vTaskDelete(StartTask_Handler); //??????
taskEXIT_CRITICAL(); //?????
}
//LED0????
void led0_task(void *pvParameters)
{
while(1)
{
LED0=~LED0;
delay_ms(2);
}
}
//LED1????
void led1_task(void *pvParameters)
{
while(1)
{
LED1=1;
delay_ms(1);
LED1=0;
delay_ms(1);
}
}
|
-
|