本帖最后由 qiao--- 于 2023-12-30 03:20 编辑
本期视频我们移植一下rtos系统到acm32上,acm32兼容M33和M4指令集所以移植起来还是比较好移植的,文章最后有工程附件资料。
首先下载FreeRTOS 的官方源码,给出网址FreeRTOS - Market leading RTOS (Real Time Operating System) for embedded systems with Internet of Things extensions
下载后进入源码文件夹FreeRTOSv202212.01\FreeRTOSv202212.01\FreeRTOS下面
source目录是官方的一些源码使我们移植的重头戏,demo文件夹是一些基于板子的移植例程,我们后面的移植也是主要基于这两个文件夹来移植。
我们打开我们的工程目录新建一个FreeRTOS的文件装我们工程的FreeRTOS源码,如下图:
进入我们下载的源码目录source文件夹下面将include文件夹和点c文件拷贝到我们的FreeRTOS文件夹下面,并且新建一个portable文件用于装架构的移植代码,如下图。
将FreeRTOS\Source\portable\RVDS文件夹下面的ARM_CM4F文件夹拷贝到portable文件夹下面,并且将FreeRTOS\Source\portable\MemMang文件夹下面的heap_4.c文件夹拷贝到portable文件夹下面。见下图
将demo目录下的相同架构的FreeRTOSConfig.h文件拷贝到我们工程的user目录下,我拷贝的是FreeRTOSv202212.01\FreeRTOSv202212.01\FreeRTOS\Demo\CORTEX_M4F_CEC1302_Keil_GCC文件夹下面的FreeRTOSConfig.h文件。
这样代码的移植工作就移植好了,接下来就是工程的搭建。进入keil创建对应的RTOS文件并加入点c文件,如下图
添加完成我们进行编译一下
一个报错原因是没有定义系统频率,我们将FreeRTOSConfig.h文件夹下面的第44行改成如下的代码
再次进行编译,三个错误
我们将it文件夹下面的这2个中断删除并修改SysTick_Handler中断,因为他们和rtos文件的中断名字重定义了
再次进行编译,0错误,0警告。
接下来我们创建两个任务简单运行一下。
打开串口观看一下状况,系统移植成功,可以正常运行。