174|2

459

帖子

3

TA的资源

五彩晶圆(初级)

楼主
 

【AG32VH407开发板】创建FreeRTOS系统 [复制链接]

 

在项目中创建FreeRTOS系统。

 

一、复制文件

 

将AgRV_pio\platforms\AgRV\examples\freeRTOS\src\FreeRTOSConfig.h 文件复制到AgRV_pio\platforms\AgRV\examples\example目录下。

测试的工程在AgRV_pio\platforms\AgRV\examples\example目录

二、程序部分

 

2.1、修改paltform.ini

在此此处增加支持的FreeRTOS 系统

 

2.2、fun_task.c

测试FreeRTOS任务程序

  • #include "example.h"
  • #include "led/led.h"
  • #include "key/key.h"
  • #include "timer/mtimer.h"
  • #include "lcd/jlx12864g.h"
  • #include "oled/oled.h"
  • #include "FreeRTOS.h"
  • #include "task.h"
  • #include "queue.h"
  • #include "timers.h"
  • #include "semphr.h"
  • #define START_TASK_PRO 1
  • #define START_STK_SIZE 128
  • TaskHandle_t StartTask_Handler;
  • #define TASK1_PRIO 4
  • #define TASK1_STK_SIZE 128
  • static TaskHandle_t Task1Task_Handler = NULL;
  • #define TASK2_PRIO 3
  • #define TASK2_STK_SIZE 128
  • static TaskHandle_t Task2Task_Handler = NULL;
  • void start_task(void *pvParameters);
  • void task1(void *pvParameters);
  • void task2(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);
  • taskEXIT_CRITICAL();
  • vTaskDelete(StartTask_Handler);
  • }
  • //task1
  • void task1(void *pvParameters)
  • {
  • while (1)
  • {
  • printf("task1 run ...\r\n");
  • vTaskDelay(200);
  • }
  • }
  • //task2
  • void task2(void *pvParameters)
  • {
  • while (1)
  • {
  • printf("task2 run ...\r\n");
  • vTaskDelay(100);
  • }
  • }
  • void vApplicationTickHook(void)
  • {
  • return;
  • }
  • void vApplicationGetIdleTaskMemory(StaticTask_t **ppxIdleTaskTCBBuffer,
  • StackType_t **ppxIdleTaskStackBuffer,
  • uint32_t *pulIdleTaskStackSize)
  • {
  • static StaticTask_t xIdleTaskTCB;
  • static StackType_t uxIdleTaskStack[configMINIMAL_STACK_SIZE];
  • *ppxIdleTaskTCBBuffer = &xIdleTaskTCB;
  • *ppxIdleTaskStackBuffer = uxIdleTaskStack;
  • *pulIdleTaskStackSize = configMINIMAL_STACK_SIZE;
  • }
  • void vApplicationGetTimerTaskMemory(StaticTask_t **ppxTimerTaskTCBBuffer,
  • StackType_t **ppxTimerTaskStackBuffer,
  • uint32_t *pulTimerTaskStackSize)
  • {
  • static StaticTask_t xTimerTaskTCB;
  • static StackType_t uxTimerTaskStack[configTIMER_TASK_STACK_DEPTH];
  • *ppxTimerTaskTCBBuffer = &xTimerTaskTCB;
  • *ppxTimerTaskStackBuffer = uxTimerTaskStack;
  • *pulTimerTaskStackSize = configTIMER_TASK_STACK_DEPTH;
  • }

 

2.3、fun_task.h

 

2.4、example.c

  • #include "example.h"
  • #include "led/led.h"
  • #include "key/key.h"
  • #include "timer/mtimer.h"
  • #include "lcd/jlx12864g.h"
  • #include "oled/oled.h"
  • #include "task/fun_task.h"
  • int main(void)
  • {
  • board_init();
  • init_led();
  • init_key();
  • init_mtimer(1);
  • init_lcd_jlx12864g();
  • init_oled();
  • task_create();
  • while(1)
  • {
  • }
  • }

 

三、运行结果

 

编译后,下载ve和code代码后,串口输出如下

 

使用官方的SDK包中的FreeRTOS系统还是比较方便的,官方已经把底层都移植好了,只需要编写应用程序。

 

 

最新回复

把配置文件都给配好了,那就相当的方便,不知道他是如何感知文件路径的。   详情 回复 发表于 昨天 04:59

赞赏

1

查看全部赞赏

点赞 关注(1)
 
 

回复
举报

7181

帖子

11

TA的资源

版主

沙发
 

把配置文件都给配好了,那就相当的方便,不知道他是如何感知文件路径的。

点评

在paltform.ini文件中有定义文件路径  详情 回复 发表于 昨天 10:29
 
 
 

回复

459

帖子

3

TA的资源

五彩晶圆(初级)

板凳
 
lugl4313820 发表于 2025-3-18 04:59 把配置文件都给配好了,那就相当的方便,不知道他是如何感知文件路径的。

在paltform.ini文件中有定义文件路径

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

猜你喜欢
随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
报名最后2天:ADI 最新低功耗 MCU 及其解决方案详解
直播时间:3月20日(本周四) 上午10:00
活动奖励:双肩包、充电宝、小夜灯

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 6

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表