目录:
- 新建本地工程文件夹
- 使用KEIL新建工程
- 调试配置
一、 新建本地工程文件夹
在电脑本地新建一个文件夹,命名为“新建FreeRTOS工程之软件仿真”(可根据自己喜好命名),然后在此文件夹里放入以下文件夹和文件:
根文件夹 | 文件夹 | 文件夹 | 文件夹作用 |
新建FreeRTOS工程之软件仿真 | Doc | 存放工程说明文档,如readme.txt。通常情况下我们都要对整个文档实现的功能,如何编译,如何使用等做一个简要说明 | |
Project | 用于存放新建的工程文件 | ||
freertos | Demo | 存放板级支持包,暂时为空 | |
License | 存放FreeRTOS组件,暂时为空 | ||
Source | 存放FreeRTOS内核源码,暂时为空 | ||
Source/include | 存放头文件,暂时为空 | ||
Source/portable/RVDS/ARM_CM4 | 存放与处理器相关的接口文件,也叫移植文件,暂时为空 | ||
User | 存放main.c和用户编写的其它程序,main第一次使用时需要用户自行新建 |
二、使用KEIL新建工程
- New Project
- 1 打开KEIL5软件,新建一个工程,保存放在目录Project下面,名称命名为Fire_FreeRTOS(这里名称必须是英文,切记)
Select Device For Target
当命名好工程名称后,点击确定之后会弹出Select Device For Target的选项框,让我们选择处理器,这里我们选择ARMCM4,见下图:Manage Run-Time Environment
选择好处理器,点击OK按钮后会弹出Manage Run-Time Environment选项框,这里我们在CMSIS栏选中CORE和DEVICE栏选中Startup这两个文件即可点击OK,关闭Manage Run-Time Environment选项框后,刚刚我们选择的CORE和DEVICE这两个文件就会添加到我们的工程组里面,如图:
这里我们了解下软件底层的原理:其实这两个文件是存放在KEIL的安装目录下,当我们配置Manage Run-Time Environment选项框后,软件就将选好的文件从KEIL的安装目录COPY到我们的工程目录:...\Project\RTE\Device\ARMCM4下,其中startup_ARMCM4.s是汇编编写的启动文件,system_ARMCM4.c是C语言编写的跟时钟相关的文件。在KEIL工程里新建文件组
在工程里添加user、FreeRTOS/Ports、FreeRTOS/Source和Doc这几个文件组,用于管理文件。如图:在KEIL工程里添加文件
在工程里添加好组之后,我们把本地工程里面新建好的文件添加到工程里面。把readme.txt添加到Doc组,main.c添加到user组,其它的组当前暂时不添加。如图:编写main函数
此时我们编译一定会出错:因为程序里没有找到main函数(我们的main函数里什么也没写)。系统在刚开始的时候先执行启动文件里的复位程序,复位程序会调用C库函数_mian,_main的作用是初始化好系统变量,如全局变量,只读的,可读可写的等等。_main最后会调用_rtentry,再由_rtentry调用mian函数,从而由汇编跳到C的世界,这里面的mian函数需要我们手动编写,如果没有编写,就会出现main函数没有定义的错误。这里我们是将main函数初始为空,编写如下语句:
三、调试配置
设置软件仿真
为了方便我们全部代码使用软件仿真,即不需要开发板也不需要仿真器,只需要一个KEIL软件即可,设置方法如图:修改时钟大小
在时钟的相关文件system_ARMCM4.c中有一段代码定义了系统时钟是25M,见下图:在软件仿真时,要保持和系统时钟一致,所以设置Options for Target->Target的时钟应该由默认的12M改成25M,设置如下图:
添加头文件的路径
在C/C++选项卡里面指定工程头文件的路径,不然编译会出错,头文件路径的具体制定方法如下:至此一个完整的基于Cortex-M4内核的FreeRTOS软件仿真的工程就建立完毕。