打印
[MM32软件]

【灵动微电子MM32F5330测评】4.移植FreeRTOS

[复制链接]
823|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 yuyy1989 于 2024-6-26 21:21 编辑

FreeRTOS是一个实时操作系统,适用于微控制器和微处理器,使小型低功耗设备的编程变得更容易。下载的例程里没有FreeRTOS的例程需要自己移植,先下载FreeRTOS核心源码 https://github.com/FreeRTOS/FreeRTOS-Kernel/releases
创建一个FreeRTOS的文件夹

打开下载的FreeRTOS核心源码,将FreeRTOS-KernelV11.1.0的全部文件解压到刚才创建的FreeRTOS文件夹

在Keil中创建FreeRTOS分组,将FreeRTOS文件夹下的.c文件添加到分组中

FreeRTOS官方还没有对STAR-MC1核心进行适配,这里选择CM33,因为官方也没有介绍说有TrustZone所以选择ARM_CM33_NTZ,将portable\GCC\ARM_CM33_NTZ\non_secure中的port.c和portasm.c添加到分组中

还需要添加MemMang中的内存管理代码,这里有5个

打开那个readme看看

这里使用heap4.c就行,把它添加到工程中,然后添加FreeRTOS的头文件路径

其他用不到的文件和文件夹就可以删掉了,在FreeRTOS的官方例程里复制1个FreeRTOSConfig.h文件到代码文件夹(我用的CORTEX_MPU_M33F_NTZ_Nordic_NRF9160_SES这个例程),最后结构是这样

修改一下FreeRTOSConfig.h内容,修改下面几个宏定义



注意一下如果你的项目已经实现了SVCall_Handler、PendSV_Handler、SysTick_Handler需要将它们删掉,后面由FreeRTOS来接管,接下来创建FreeRTOS任务,两个LED以不同速度闪烁的任务和一个定时通过串口打印的任务,LED初始化、串口初始化和printf重定向到串口的代码就不放了,之前的帖子里都有
static TaskHandle_t led1_task_handler = NULL;
static TaskHandle_t led2_task_handler = NULL;
static TaskHandle_t printf_task_handler = NULL;
static void Led1Task(void* pvParameters)
{   
    while (1)
    {
        led_toggle(LED_NO_1);
        vTaskDelay(200);
    }
}

static void Led2Task(void* pvParameters)
{   
    while (1)
    {
        led_toggle(LED_NO_2);
        vTaskDelay(500);
    }
}
static void PrintfTask(void* pvParameters)
{   
    uint8_t i = 0;
    while (1)
    {
        vTaskDelay(1000);
        i+=1;
        printf("PrintfTask i = %d\n",i);
    }
}

int main(void)
{
    uart_init();
    led_init();
    printf("MM32F5330 FreeRTOS\n");
    xTaskCreate(Led1Task, "Led1Task", configMINIMAL_STACK_SIZE,  NULL,1, &led1_task_handler);
    xTaskCreate(Led2Task, "Led2Task", configMINIMAL_STACK_SIZE,  NULL,1, &led2_task_handler);
    xTaskCreate(PrintfTask, "PrintfTask", configMINIMAL_STACK_SIZE,  NULL,1, &printf_task_handler);
    vTaskStartScheduler();
    while (1)
    {
    }
}

LED任务运行效果

Printf任务运行效果


使用特权

评论回复
评论
forgot 2024-6-25 17:11 回复TA
 
沙发
Bowclad| | 2024-6-27 18:07 | 只看该作者
从官方代码移植的啊

使用特权

评论回复
板凳
地瓜patch| | 2024-6-28 14:44 | 只看该作者
官方有给开发包吗?

使用特权

评论回复
地板
聪聪哥哥| | 2024-7-17 08:16 | 只看该作者
您好移植的这个rtos可以分享一下嘛?

使用特权

评论回复
5
shenxiaolin| | 2024-7-22 17:06 | 只看该作者
感谢分享,辛苦了

使用特权

评论回复
6
shenxiaolin| | 2024-7-29 21:07 | 只看该作者
感谢分享

使用特权

评论回复
7
suncat0504| | 2024-7-30 20:45 | 只看该作者
过程详细,跟着学习了。谢谢!

使用特权

评论回复
8
suncat0504| | 2024-7-30 20:45 | 只看该作者
先收藏下来!后面有时间照着做一遍。

使用特权

评论回复
9
地瓜patch| | 2024-7-30 20:48 | 只看该作者
这是官方移植的还是楼主自己移植的啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

145

主题

695

帖子

6

粉丝