在初步了解完FreeRTOS介绍之后,可以新建一个FreeRTOS的工程了。这个学习计划先是从FreeRTOS Nano 为蓝本了解完FreeRTOS的源码实现之后,再来重新使用它。
软件:keilv5(MDK)
Device:Cortex-M3
新建本地工程文件夹
在本地电脑新建一个文件夹用于存放工程,然后再在该文件夹下面新建各个文件夹和文件,有关这些文件夹的包含关系和作用,如下表。
工程文件夹根目录下的文件夹的作用
文件夹名称 | 文件夹作用 | |
---|---|---|
Doc | 用于存放对整个工程的说明文件,如readme.txt。通常情况下,我们都要对整个工程实现的功能,如何编译,如何使用等做一个简要的说明 | |
Project | 用于存放新建的工程文件 | |
freertos | Demo | 存放板级支持包,暂时为空。 |
License | 存放FreeRTOS组件,暂时为空 | |
Source | 存放FreeRTOS内核源码,暂时为空 | |
Source/include | 存放头文件,暂时为空 | |
Source/portable/RVDS/ARM_CM3 | 存放与处理器相关的接口文件,也叫移植文件,暂时为空 | |
User | 存放main.c和其他的用户编写的程序,main.c第一次使用需要用户自行新建。 |
使用KEIL新建工程
1.New Project
打开KEIL5软件,新建一个工程,工程文件放在目录Project下面,名称为TEST_FreeRTOS。(名称可以随便起,但是必须是英文)
2.Select Device For Target
当命名好工程名称,点击确定之后会弹出Select Device for Target的选项框,这里选择ARMCM3。
3.Manage Run-Time Environment
选择好处理器,点击OK按钮后会弹出Manage Run-Time Environment选项框。这里在CMSIS栏选中CORE,Device栏选中Startup。
点击OK,关闭
在KEIL工程里面新建文件组
在工程里面添加user、FreeRTOS/Ports、FreeRTOS/Source、doc,用于文件管理。
在KEIL工程里面添加文件
在工程里面添加好组之后,需要把本地工程里面新建好的文件添加到工程里面。把readme.txt文件添加到doc组,main.c添加到user组,FreeRTOS相关的文件还没有编写暂时为空。
编写main函数
/*
************************************************************************
* main 函数
************************************************************************
*/
int main(void)
{
for(;;)
{
/*啥事不干*/
}
}
调试配置
设置软件仿真
最后,再配置下调试相关的配置即可。为了方便,我们的代码都用软件仿真,不需要开发板,也不需要仿真器,只需要一个KEIL软件就可以。
修改时钟大小
在时钟相关文件 system_ARMCM3.c的开头,有一段
代码定义了系统时钟的大小为25M。在软件仿真的时候,确保时间的准确性,代码里面的系统时钟跟软件仿真必须一致,所以Options for Target->Target的时钟应该由默认的 12M 改成 25M。
/*----------------------------------------------------------------------------
Define clocks
*----------------------------------------------------------------------------*/
#define __HSI ( 8000000UL)
#define __XTAL ( 5000000UL) /* Oscillator frequency */
#define __SYSTEM_CLOCK (5*__XTAL)
/*----------------------------------------------------------------------------
System Core Clock Variable
*----------------------------------------------------------------------------*/
uint32_t SystemCoreClock = __SYSTEM_CLOCK;/* System Core Clock Frequency */
添加头文件路径
在 C/C++ 选项卡里面指定工程头文件的路径,不然编译会出错。
OK,一个完整的基于 Cortex-M3内核的 FreeRTOS 软件仿真的工程就建立完成了。
参考资料:参考资料:《FreeRTOS 内核实现与应用开发实战—基于RT1052》