[其他] 【灵动微电子MM32F0121测评】进阶任务-FREERTOS(AC5)

[复制链接]
3124|8
 楼主| jinyi7016 发表于 2025-6-25 14:08 | 显示全部楼层 |阅读模式
安装的keil的版本比较新,没有AC5的编译器,但使用AC6时,会有很多的编译错误,一时无从下手,于是手动安装了AC5的编译器
下载一份freerots的源码,找到如下文件,复制到工程中。

1750824279824.png

这里的ARM_CM0文件夹是RVDS目录下的。
在keil 中添加 C文件:

1750824379530.png

这里增加了一个源文件freeRTOS_Demo.c、头文件FreeRTOSConfig.h,是参考网友(【灵动微电子MM32F0121测评】+移植FreeRTOS,实现打印和led闪烁 - 灵动MM32 MCU官方技术支持论坛)的。

  1. #include "FreeRTOS.h"
  2. #include "task.h"
  3. #include "platform.h"
  4. #include <stdio.h>


  5. #define LED_TASK_STACK_SIZE 128
  6. #define PRINT_TASK_STACK_SIZE 256

  7. void vLED1Task(void *pvParameters) {
  8.     while(1) {
  9.         PLATFORM_LED_Toggle(LED1);
  10.                         printf("LED1 TASK 100MS!\r\n");
  11.         vTaskDelay(pdMS_TO_TICKS(100));
  12.     }
  13. }

  14. void vLED2Task(void *pvParameters) {
  15.     while(1) {
  16.         PLATFORM_LED_Toggle(LED2);
  17.                         printf("LED2 TASK 500MS!\r\n");
  18.         vTaskDelay(pdMS_TO_TICKS(500));
  19.     }
  20. }

  21. void vPrintTask(void *pvParameters) {
  22.     while(1) {
  23.         printf("Hello MM32F0121 FreeRTOS!\r\n");
  24.         vTaskDelay(pdMS_TO_TICKS(2000));
  25.     }
  26. }

  27. void vApplicationMallocFailedHook(void)
  28. {
  29.     printf("Malloc failed!\r\n");
  30.     taskDISABLE_INTERRUPTS();
  31.     while(1);
  32. }

  33. void vApplicationStackOverflowHook(TaskHandle_t xTask, char *pcTaskName)
  34. {
  35.     printf("Stack overflow in task: %s\r\n", pcTaskName);
  36.     taskDISABLE_INTERRUPTS();
  37.     while(1);
  38. }

  39. void freeRTOS_Demo(void)
  40. {
  41.     xTaskCreate(vLED1Task, "LED1", LED_TASK_STACK_SIZE, NULL, 2, NULL);
  42.     xTaskCreate(vLED2Task, "LED2", LED_TASK_STACK_SIZE, NULL, 2, NULL);
  43.     xTaskCreate(vPrintTask, "Print", PRINT_TASK_STACK_SIZE, NULL, 3, NULL);
  44.    
  45.     vTaskStartScheduler();
  46.    
  47.    
  48.     printf("Scheduler failed to start.\r\n");
  49.     while(1);
  50. }



编译器一定要选择版本5的。

屏幕截图 2025-06-25 140639.jpg


配置头文件路径:
1750824425150.png


运行结果:
1750824469101.png






cashrwood 发表于 2025-7-2 12:10 | 显示全部楼层
FreeRTOS 是一个轻量级的实时操作系统,适用于嵌入式系统。
kmzuaz 发表于 2025-7-3 16:02 | 显示全部楼层
MM32F01121 微控制器上实现了 FreeRTOS 的多任务调度。
geraldbetty 发表于 2025-7-4 11:50 | 显示全部楼层
AC5因其对M0内核的指令集支持更成熟,成为本次移植的首选。
wwppd 发表于 2025-7-6 10:34 | 显示全部楼层
FreeRTOS 的引入使得系统能够更好地处理多个任务,提高了系统的实时性和可靠性。
juliestephen 发表于 2025-7-6 17:13 | 显示全部楼层
修改配置文件、创建任务和中断管理
gouguoccc 发表于 2025-7-7 08:15 来自手机 | 显示全部楼层
Keil是用的AC编译器?
tabmone 发表于 2025-7-12 11:53 | 显示全部楼层
掌握FreeRTOS的使用和移植技巧
maudlu 发表于 2025-7-12 15:08 | 显示全部楼层
利用ARM Compiler 5提供的优化选项提高代码效率
您需要登录后才可以回帖 登录 | 注册

本版积分规则

148

主题

1414

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部