【极海APM32M3514电机通用评估板】 运行freertos系统
<p><span style="font-size:16px;">测试下在开发板上运行FreeRTOS系统。</span></p><p> </p>
<p><span style="font-size:16px;"><strong>一、下载FreeRTOS源码</strong></span></p>
<p><span style="font-size:16px;">下载地址:<a href="https://www.freertos.org" target="_blank">https://www.freertos.org</a>/</span></p>
<p><span style="font-size:16px;"></span></p>
<p> </p>
<p><span style="font-size:16px;"><strong>二、添加代码</strong></span></p>
<p> </p>
<p><span style="font-size:16px;">2.1、添加FreeRTOS源代码到工程</span></p>
<p><span style="font-size:16px;"></span></p>
<p> </p>
<p><span style="font-size:16px;">2.2、fun_task.c</span></p>
<pre>
<code>#include "main.h"
#define START_TASK_PRO 1
#define START_STK_SIZE 64
TaskHandle_t StartTask_Handler;
#define TASK1_PRIO 2
#define TASK1_STK_SIZE64
static TaskHandle_t Task1Task_Handler = NULL;
#define TASK2_PRIO 3
#define TASK2_STK_SIZE64
static TaskHandle_t Task2Task_Handler = NULL;
#define TASK3_PRIO 4
#define TASK3_STK_SIZE64
static TaskHandle_t Task3Task_Handler = NULL;
void start_task(void *pvParameters);
void task1(void *pvParameters);
void task2(void *pvParameters);
void task3(void *pvParameters);
void task_create(void)
{
//start_task
xTaskCreate((TaskFunction_t )start_task,
(const char* )"start_task",
(uint16_t )START_STK_SIZE,
(void* )NULL,
(UBaseType_t )START_TASK_PRO,
(TaskHandle_t*)&StartTask_Handler);
vTaskStartScheduler();
}
void start_task(void *pvParameters)
{
taskENTER_CRITICAL();
//task1
xTaskCreate((TaskFunction_t )task1,
(const char* )"task1",
(uint16_t )TASK1_STK_SIZE,
(void* )NULL,
(UBaseType_t )TASK1_PRIO,
(TaskHandle_t*)&Task1Task_Handler);
//task2
xTaskCreate((TaskFunction_t )task2,
(const char* )"task2",
(uint16_t )TASK2_STK_SIZE,
(void* )NULL,
(UBaseType_t )TASK2_PRIO,
(TaskHandle_t*)&Task2Task_Handler);
//task3
xTaskCreate((TaskFunction_t )task3,
(const char* )"task3",
(uint16_t )TASK3_STK_SIZE,
(void* )NULL,
(UBaseType_t )TASK3_PRIO,
(TaskHandle_t*)&Task3Task_Handler);
taskEXIT_CRITICAL();
vTaskDelete(StartTask_Handler);
}
//task1
void task1(void *pvParameters)
{
while (1)
{
printf("task1 run ...\r\n");
vTaskDelay(100);
}
}
//task2
void task2(void *pvParameters)
{
while (1)
{
printf("task2 run ...\r\n");
vTaskDelay(200);
}
}
//task3
void task3(void *pvParameters)
{
while (1)
{
printf("task3 run ...\r\n");
vTaskDelay(300);
}
}
</code></pre>
<p> </p>
<p><span style="font-size:16px;">2.3、main.c</span></p>
<pre>
<code>int main(void)
{
APM_DelayInit();
APM_DelayMs(5000);
init_usart();
init_led();
task_create();
while (1)
{
}
}</code></pre>
<p> </p>
<p><strong><span style="font-size:16px;">三、运行结果</span></strong></p>
<p> </p>
<p><span style="font-size:16px;">下载程序后,串口输出内容:</span></p>
<p></p>
<p> </p>
<p>多谢分享!多谢分享!多谢分享!多谢分享!多谢分享!</p>
页:
[1]