打印
[N32G430]

【N32G430C8L7_STB开发板】FreeRTOS移植

[复制链接]
2446|30
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 dirty123 于 2024-4-23 23:19 编辑

      本篇讲述N32G430C8L7_STB开发板 移植FreeRTOS。有用N32G43X官方移植发现与此开发板MCU库及函数等存在不兼容,这里单独移植。
一.了解与准备
1.芯片资源
     MCU   N32G430C8L7内部资源RAM:16KB,Flash:64KB,ARM Cortex™-M4F核,此是移植硬件基础。基于芯片资源在移植是注意裁剪。
2.FreeRTOS源码包
      获取(1)官 网 : http://www.freertos.org/   (2)代 码 托 管 网 站 :https://sourceforge.net/projects/freertos/files/FreeRTOS/

二.移植,代码修改,创建demo任务
      这里在前面串口打印逻辑工程上做移植,先把工程文件独立出来,调整路径后编译通过。
1.工程添加FreeRTOS源码
      将FreeRTOS源码放到工程文件夹下,Keil添加源文件及路径,这里露出系统配置源文件FreeRTOSConfig.h。
图1:FreeRTOS源码添加


2.中断文件n32g430_it.c屏蔽SVC_Handler,PendSV_Handler ,它们在系统port.c定义了。修改SysTick_Handler在函数里添加如下
void SysTick_Handler(void)
{
    if(xTaskGetSchedulerState()!=taskSCHEDULER_NOT_STARTED)//系统已经运行
    {
        xPortSysTickHandler();        
    }
}
3.在FreeRTOSConfig.h裁剪配置

      前面讲了MCU RAM 16KB,这里configTOTAL_HEAP_SIZE定义为8KB,其他地方可按需调整,这里注意下SystemClockFrequency为系统时钟频率
图2:裁剪配置

4.创建定时器初始化及延时函数,非必须项。实现在sys_tick.c,这里不细讲。

5.创建任务。在任务里间隔1s打印串口信息
    xReturn=xTaskCreate((TaskFunction_t )demo_task,            //任务函数
                (const char*    )"demo_task",          //任务名称
                (uint16_t       )Demo_STK_SIZE,        //任务堆栈大小
                (void*          )NULL,                  //传递给任务函数的参数
                (UBaseType_t    )Demo_TASK_PRIO,       //任务优先级
                (TaskHandle_t*  )&DemoTask_Handler);   //任务句柄
               
               
    if(xReturn==pdPASS)
    {
        printf("\n\rCreate demo_task OK\n\r");
        vTaskStartScheduler();                              //开启任务调度
    }
    else
    {
        printf("\n\rCreate demo_task Fail\n\r");
    }
void demo_task(void *pvParameters)
{
    while(1)
    {
        printf("\n Run demo_task\n\r");
        vTaskDelay(1000);
        
    }
}
三.编译烧录运行
      烧录后串口日志如下,可以看到系统正常运行,移植成功。

图3:任务日志


      至此,完成N32G430C8L7_STB开发板FreeRTOS移植。这里分享代码见附件,供大家参考学习。


N32G430_FreeRTOS.rar

5.54 MB

N32G430_FreeRTOS

使用特权

评论回复
沙发
biechedan| | 2024-5-1 22:04 | 只看该作者
FreeRTOS是一个开源的实时操作系统(RTOS),它可以在嵌入式系统中提供多任务调度、任务间通信、时间管理等功能。

使用特权

评论回复
板凳
wangdezhi| | 2024-5-2 15:14 | 只看该作者
对于N32G430C8L7_STB开发板,你可能需要使用特定的IDE或编辑器,如IAR Embedded Workbench、Keil MDK等。

使用特权

评论回复
地板
xiaoyaodz| | 2024-5-2 16:53 | 只看该作者
在开发环境中创建一个新项目,选择N32G430C8L7作为目标芯片。

使用特权

评论回复
5
claretttt| | 2024-5-2 18:38 | 只看该作者
根据测试结果对系统进行优化,以提高系统的性能和响应速度。

使用特权

评论回复
6
hilahope| | 2024-5-2 22:42 | 只看该作者
获取N32G430C8L7的硬件规格书和软件开发包(SDK),以便在移植过程中参考。

使用特权

评论回复
7
dspmana| | 2024-5-3 09:26 | 只看该作者
在main函数中,调用FreeRTOS的初始化函数,如xTaskCreate来创建任务,vTaskStartScheduler来启动调度器。

使用特权

评论回复
8
hilahope| | 2024-5-3 12:29 | 只看该作者
可能需要根据实际情况调整FreeRTOS的配置,以及优化任务的实现。你可以使用开发板提供的调试工具来跟踪程序运行情况,找出潜在的问题并进行修复。

使用特权

评论回复
9
sdlls| | 2024-5-3 15:30 | 只看该作者
使用xTaskCreate()函数来创建任务。您需要指定任务函数、任务堆栈大小、任务优先级、以及任何需要传递给任务的数据。

使用特权

评论回复
10
caigang13| | 2024-5-4 08:44 | 只看该作者
现在已经转战RTTread了,支持国产。

使用特权

评论回复
11
mattlincoln| | 2024-5-4 12:24 | 只看该作者
根据N32G430C8L7_STB开发板的特性,配置FreeRTOS的配置文件(通常是FreeRTOSConfig.h)。这包括定义任务的数量、堆栈大小、优先级等。

使用特权

评论回复
12
robincotton| | 2024-5-4 13:23 | 只看该作者
将FreeRTOS的源代码文件夹添加到您的项目中。
配置工程使其包含FreeRTOS的头文件和库文件。

使用特权

评论回复
13
plsbackup| | 2024-5-4 14:55 | 只看该作者
在FreeRTOS源代码中,有一些配置文件需要根据你的硬件和应用程序需求进行修改。这些文件通常包括FreeRTOSConfig.h等。在这个文件中,你可以配置任务的数量、堆栈大小、中断优先级等。

使用特权

评论回复
14
uiint| | 2024-5-4 21:53 | 只看该作者
在完成移植后,进行充分的测试以确保系统的稳定性和可靠性。这可能包括单任务测试、多任务调度测试以及中断处理的测试。

使用特权

评论回复
15
chenjun89| | 2024-5-5 14:48 | 只看该作者
flash有点小,跑RTOS如果代码长点空间不够了。

使用特权

评论回复
16
updownq| | 2024-5-6 08:19 | 只看该作者
编译项目,确保没有错误或警告,并将程序下载到N32G430C8L7_STB开发板。

使用特权

评论回复
17
saservice| | 2024-5-6 11:24 | 只看该作者
FreeRTOS依赖于中断来管理任务切换和一些内部机制(如Tick中断)。确保您的中断处理程序正确无误,并且没有被其他代码干扰。

使用特权

评论回复
18
dspmana| | 2024-5-6 14:34 | 只看该作者
安装了适用于N32G430C8L7的IAR或Keil MDK等开发环境,并配置好相应的交叉编译工具链。

使用特权

评论回复
19
geraldbetty| | 2024-5-6 18:06 | 只看该作者
根据测试结果,优化FreeRTOS配置,调整任务堆栈大小、中断优先级等,提高系统性能。

使用特权

评论回复
20
yeates333| | 2024-5-6 21:14 | 只看该作者
从官方网站下载FreeRTOS的最新源代码包。

使用特权

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

本版积分规则

19

主题

73

帖子

1

粉丝