CMake构建CH58x项目,脱离eclipse使用Clion或者Vscode编写代码。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
1.7 KiB

/**
* FreeRTOS的封装创建及调用的地方
*
*/
#include "mytask.h"
#define func _Noreturn __HIGH_CODE void // 重命名修饰,避免麻烦
TaskHandle_t xLedTaskHandle = NULL;
func Task_LED(void *pvParameters)
{
Array_Create(arr, 10);
Array_Push(&arr, 1);
Gpio_Init(PB_4, GPIO_ModeOut_PP_20mA);
while (1)
{
Gpio_Inverse(PB_4);
vTaskDelay(1000);
}
}
/**
* @brief
*/
TaskHandle_t xUartTaskHandle = NULL;
func Task_UART(void *pvParameters)
{
GpioPin_t gpio = PB_23;
Gpio_Init(gpio, GPIO_ModeIN_PU);
while (1)
{
uint8_t cmd = 0;
if (Api_GetUartData(1, &cmd))
{
printf("cmd:%d\r\n", cmd);
}
if (!Gpio_Read(gpio))
{
vTaskDelay(100);
if (!Gpio_Read(gpio))
{
printf("软件复位\r\n");
while (!Gpio_Read(gpio));
SYS_ResetExecute();
}
}
vTaskDelay(1);
}
}
/**
* @brief
*
* @return
*/
static void CreateTask(void)
{
// 创建出啊口任务
BaseType_t pass = myTaskCreate(Task_UART, "Task_UART", 256, NULL, Priority_HIGH, &xUartTaskHandle);
if (pass != pdPASS)
{
while (1);
}
// 创建LED任务
pass = myTaskCreate(Task_LED, "LED", 128, NULL, Priority_LOW, &xLedTaskHandle);
if (pass != pdPASS)
{
printf("Task_LED create fail\r");
}
}
/**
* @brief Freertos初始化
*
*/
void MyRtos_Init(void)
{
// 进入临界区
taskENTER_CRITICAL();
// 创建任务
CreateTask(); //进去创建任务
// 退出临界区
taskEXIT_CRITICAL();
vTaskStartScheduler();
}