华大MCU HC32F003移植FreeRTOS

移植初衷

全球半导体厂商晶圆在最近一年内缺货情况愈演愈烈,随之而来是全球芯片疯狂涨价,STM32从原来的几块钱已经涨到100多一片。为了减少产品成本,最近本人开始关注国内MCU厂商。其实国内的一些比较大的MCU厂商还是做得不错的,比如兆易创新、上海贝岭、华大半导体等,资料也算够用,当然跟ST这种级别厂商差距还是很大。综合性价比,最终选择华大半导体的HC32F003/HC32F005。奈何这两款芯片仅有相关的外设例程,却没有相关RTOS的移植,因此本人便动手试着移植一把FreeRTOS

前期准备

首先需要准备移植的相关华大MCU外设固件库以及FreeRTOS

  1. 华大MCU处理器的固件外设例程官网下载,贴上链接: 下载链接
    在这里插入图片描述

  2. FreeRTOS官方固件下载,贴上官网链接:下载链接
    在这里插入图片描述

开始移植

1. 为了方便移植,直接利用华大官方固件库的GPIO输出的MDK例程工程进行移植,找到华大固件库的GPIO例程MDK工程,贴图如下
在这里插入图片描述
2. 打开华大例程的MDK工程,贴图是代码目录结构
common
common目录是系统启动汇编代码、中断服务函数代码、以及系统初始化相关代码
source是用户代码目录,存放例程的main.c
driver是华大官方提供的外设库函数目录

3. 打开FreeRTOS的内核源码,贴图如下
在这里插入图片描述
图中Demo目录是FreeRTOS官方提供的一些处理器移植例子,当然是没有HC32F003,否则我们也就不用干了;License目录是一些官方license文件;Source则是内核源码,因此需要该部分,copy该部分到华大固件库的目录下,同时为了更好理解目录含义,把目录重命名为FreeRTOS_Source:
在这里插入图片描述

4、在MDK工程中,新建group FreeRTOS并添加相关内核源码,贴图如下:
添加平台无关内核源码部分:在这里插入图片描述
添加平台强相关的部分:
这个port.c文件非常重要,是内核任务调度相关的实现部分,有很多采用汇编语言实现的,因此不同的硬件CPU架构之间差异较大。而HC32F003是ARM-CM0+的内核,ARM-CM0与CM0+汇编没有差异,因此我们选择ARM-CM0即可在这里插入图片描述
添加内存管理的实现代码:
Heap1-Heap4有一定的差异,这里不展开,采用Heap4.c作为内存堆栈管理在这里插入图片描述
最后添加相应的头文件包含目录:
在这里插入图片描述

开始编译,解决编译错误

在这里插入图片描述
提示找不到FreeRTOSConfig.h,此文件是内核配置,该文件通过定义不同的宏对内核进行裁剪。为了图方便,采用了FreeRTOS的官方的STM32F103 DEMO工程的配置文件,将其copy至华大例程目录下
在这里插入图片描述
在这里插入图片描述
再次编译成功。
在这里插入图片描述
这里提前说一句,此处的编译成功并不代表移植成功了。打开port.c
在这里插入图片描述
这里定义的三个函数是内核定义三个中断函数,分别用来进行任务切换和操作系统内核的定时心跳使用,而HC32F003的汇编启动文件中断向量并非这三个函数,因此我们需要将启动文件的中断服务函数改为FreeRTOS定义的这三个函数
在这里插入图片描述
改为FreeRTOS内核定义的中断服务函数
在这里插入图片描述
在这里插入图片描述

再次编译通过!
在这里插入图片描述

编写定时任务,测试移植

在这里插入图片描述
任务比较简单,start_task用于创建task1_task, 而task1_task是定时任务,闪烁LED。
在这里插入图片描述
主函数初始化完成后,开始创建任务以及任务调度。
开始编译,报错,内存不足
在这里插入图片描述
发现freeRTOSConfig文件的heap大小配置太大,进行修改,并同时修改CPU时钟频率
在这里插入图片描述
修改后:
在这里插入图片描述

上板测试

在这里插入图片描述
在这里插入图片描述
LED灯每1s闪烁一次,移植成功
最后附上移植好的工程,如需请下载,贴上链接:
FreeRTOS移植Demo下载链接

感谢

如果对你有帮助,请点个赞吧

  • 10
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

魔都小蚂蚁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值