华大HC32F460移植FreeRTOS

参考:
关于MCU M4内核移植FreeRTOS的笔记 主要参考这位大佬的,照做就行了,用的也是IAR
HC32F460 freeRTOS移植 这位是用Keil的


MCU:华大HC32F460

库版本:hc32f460_ddl_Rev2.2.0

IDE: IAR

FreeRTOS版本:9.0.0
FreeRTOS官网,可以下载各版本源码及查看帮助文档,有简中翻译


移植文件

按照如下结构在想要移植的原IAR工程文件夹创建好文件夹层级

复制代码
└───FreeRTOS
    ├───include
    └───port
        ├───MemMang
        └───IAR
            └───ARM_CM4F

将下载好的FreeRTOS源码解压,进入源码下的Source目录开始移植

Source文件夹中的.c文件移入前面建好的FreeRTOS文件夹中

将源码include文件夹中所有头文件复制到创建的include文件夹中

将源码MemMang目录下的heap4.c文件复制到创建的port/MemMang文件夹中

将源码Source\portable\IAR目录下的ARM_CM4F文件夹复制到创建的ARM_CM4F文件夹

最终需要将FreeRTOS\Demo\CORTEX_M4F_STM32F407ZG-SK文件夹中的FreeRTOSConfig.h文件复制到创建的include文件夹里

【注:Demo和源码Source是同级目录】

复制完如下

文件结构(readme文件可忽略)

复制代码
├─FreeRTOS
    │  croutine.c
    │  event_groups.c
    │  list.c
    │  queue.c
    │  readme.txt
    │  tasks.c
    │  timers.c
    │
    ├─include
    │      croutine.h
    │      deprecated_definitions.h
    │      event_groups.h
    │      FreeRTOS.h
    │      FreeRTOSConfig.h
    │      list.h
    │      mpu_prototypes.h
    │      mpu_wrappers.h
    │      portable.h
    │      projdefs.h
    │      queue.h
    │      semphr.h
    │      StackMacros.h
    │      stdint.readme
    │      task.h
    │      timers.h
    │
    └─port
        ├─IAR
        │  └─ARM_CM4F
        │          port.c
        │          portasm.s
        │          portmacro.h
        │
        └─MemMang
                heap_4.c

修改工程

文件移植就到这里,接下来需要打开IAR工程添加文件夹和文件,如下图所示

.h文件需要配置include path进行引入,右键工程打开Options--》C/C++ Compiler--》Preprocessor进行配置

添加创建的FreeRTOS\include目录和FreeRTOS\portable\IAR\ARM_CM4F目录

【注:点击向下箭头可以切换成相对路径】

另外需要在汇编器Assembler的Preprocessor添加头文件FreeRTOSConfig.h的路径FreeRTOS\include

修改配置浮点运算单元

想要编译不报错还需要对代码进行一些更改

注释掉hc32f460_interrupts.c中的SVC_HandlerSysTick_HandlerPendSV_Handler函数【因为原有库里的函数与FreeRTOS内函数重复定义了】

关闭FreeRTOSConfig.h中配置的四个钩子函数configUSE_IDLE_HOOKconfigUSE_TICK_HOOKconfigCHECK_FOR_STACK_OVERFLOWconfigUSE_MALLOC_FAILED_HOOK,修改宏定义为0即可

完成以上步骤后编译工程通过


暂时结束

相关推荐
charlie11451419122 分钟前
在上位机上熟悉FreeRTOS API
笔记·学习·嵌入式·c·freertos·工程
飞来客isdn19 小时前
GD32F407ZGT6在FreeRTOS下串口中断接收异常情况及解决方法
单片机·mcu·freertos·信息与通信
鸿喵小仙女1 天前
HC32 SWDT看门狗
单片机·嵌入式硬件·hc32
鸿喵小仙女1 天前
HC32 HC32A448创建真随机数
hc32
离凌寒2 天前
一、在freertos上使用esp01s模块并配置使用sta模式进行数据通信传输测试。
单片机·freertos·esp01s
离凌寒3 天前
二、在freertos中对应esp01s模块的ap模式下的通信测试。
单片机·freertos·esp01s
小小Fred3 天前
FreeRTOS函数prvCreateTask解析
freertos
小小Fred4 天前
FreeRTOS创建任务函数xTaskCreate
freertos
Hello_Embed6 天前
FreeRTOS 入门(二十六):队列创建与读写 API 实战解析
笔记·学习·操作系统·嵌入式·freertos
云雾J视界6 天前
当AI下沉到MCU:嵌入式开发者的“能力护城河”正在被重写
人工智能·单片机·嵌入式硬件·mcu·freertos·岗位技能