freertos创建两个任务一个led闪灯另一个是一个串口打印 串口打印任务优先级高于闪灯代码就执行一次就不动了
#include <stdio.h>
#include "gd32f10x.h"
#include "systick.h"
#include "usart1.h"
#include "FreeRTOS.h"
#include "Task.h"
void LED_Init(void)
{
rcu_periph_clock_enable(RCU_GPIOB);
rcu_periph_clock_enable(RCU_AF);
gpio_pin_remap_config(GPIO_SWJ_SWDPENABLE_REMAP, ENABLE);
gpio_init(GPIOB, GPIO_MODE_OUT_PP, GPIO_OSPEED_10MHZ, GPIO_PIN_4);
gpio_bit_reset(GPIOB, GPIO_PIN_4);
}
void LED_Ctrl(int value)
{
if(value == 0)
gpio_bit_reset(GPIOB, GPIO_PIN_4);
else if(value == 1)
gpio_bit_set(GPIOB, GPIO_PIN_4);
}
void Task_Led1(void * pvParameters)
{
while(1)
{
LED_Ctrl(0);
vTaskDelay(500);
LED_Ctrl(1);
vTaskDelay(500);
}
}
void Task_Printf(void * pvParameters)
{
while(1)
{
taskENTER_CRITICAL();
printf("a usart transmit test example!\n");
taskEXIT_CRITICAL();
vTaskDelay(500);
}
}
int main(void)
{
nvic_priority_group_set(NVIC_PRIGROUP_PRE1_SUB3);
LED_Init();
USART1_Init();
xTaskCreate(Task_Led1,"TaskLed1", 10, NULL, 2, NULL);
xTaskCreate(Task_Printf,"TaskPrintf", 10, NULL, 1, NULL);
vTaskStartScheduler();
while(1);
}