华大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即可

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


暂时结束

相关推荐
hongqi10297 天前
刘火良FreeRTOS内核实现与应用学习之6——多优先级
stm32·学习·freertos
hongqi102913 天前
刘火良FreeRTOS内核实现与应用学习之4——空闲任务与阻塞延时
学习·freertos
xtudj14 天前
项目实战:基于瑞萨RA6M5构建多节点OTA升级-创建工程MCUBoot<二>
单片机·mcu·嵌入式·freertos·uboot·mcuboot·瑞萨renesas
Nav.16 天前
从bootloader跳到APP需要几步?
stm32·单片机·freertos
xtudj23 天前
浅谈分布式多节点嵌入式系统中RS485总线指令冲突解决及性能优化
分布式·嵌入式·freertos·rs485通讯冲突检测·rs485通讯性能优化
集大周杰伦1 个月前
FreeRTOS 任务管理与运行时间统计:API 解析与配置实践
freertos·实时操作系统·嵌入式操作系统·cpu 资源分配检查·任务时间统计
梦可尤曦1 个月前
Freertos卡在while( uxDeletedTasksWaitingCleanUp > ( UBaseType_t ) 0U )
stm32·嵌入式硬件·cubemx·freertos
集大周杰伦1 个月前
FreeRTOS 源码结构解析与 STM32 HAL 库移植实践(任务创建、删除篇)
stm32·freertos·实时操作系统·嵌入式开发·rtos·任务调度·任务控制块
BW.SU1 个月前
51单片机制作彩屏触摸小电子琴STC32G12K128+RA6809+彩屏1024x600
单片机·嵌入式硬件·51单片机·freertos·stc32g12k128
Zevalin爱灰灰2 个月前
FreeRTOS从入门到精通 第十三章(信号量)
stm32·单片机·嵌入式硬件·操作系统·freertos