目录:

  1. 新建本地工程文件夹
  2. 使用KEIL新建工程
  3. 调试配置

一、 新建本地工程文件夹

        在电脑本地新建一个文件夹,命名为“新建FreeRTOS工程之软件仿真”(可根据自己喜好命名),然后在此文件夹里放入以下文件夹和文件:

根文件夹

文件夹

文件夹

文件夹作用

新建FreeRTOS工程之软件仿真

Doc

 

存放工程说明文档,如readme.txt。通常情况下我们都要对整个文档实现的功能,如何编译,如何使用等做一个简要说明

Project

 

用于存放新建的工程文件

freertos

Demo

存放板级支持包,暂时为空

 

License

存放FreeRTOS组件,暂时为空

 

Source

存放FreeRTOS内核源码,暂时为空

 

Source/include

存放头文件,暂时为空

 

Source/portable/RVDS/ARM_CM4

存放与处理器相关的接口文件,也叫移植文件,暂时为空

User

 

存放main.c和用户编写的其它程序,main第一次使用时需要用户自行新建

二、使用KEIL新建工程

  1. New Project
    1. 1 打开KEIL5软件,新建一个工程,保存放在目录Project下面,名称命名为Fire_FreeRTOS(这里名称必须是英文,切记)
  2. Select Device For Target

           当命名好工程名称后,点击确定之后会弹出Select Device For Target的选项框,让我们选择处理器,这里我们选择ARMCM4,见下图:
  3. 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语言编写的跟时钟相关的文件。
  4. 在KEIL工程里新建文件组

    在工程里添加user、FreeRTOS/Ports、FreeRTOS/Source和Doc这几个文件组,用于管理文件。如图:                                           
  5. 在KEIL工程里添加文件

    在工程里添加好组之后,我们把本地工程里面新建好的文件添加到工程里面。把readme.txt添加到Doc组,main.c添加到user组,其它的组当前暂时不添加。如图:
  6. 编写main函数

    此时我们编译一定会出错:因为程序里没有找到main函数(我们的main函数里什么也没写)。系统在刚开始的时候先执行启动文件里的复位程序,复位程序会调用C库函数_main,_main的作用是初始化好系统变量,如全局变量,只读的,可读可写的等等。_main最后会调用_rtentry,再由_rtentry调用mian函数,从而由汇编跳到C的世界,这里面的mian函数需要我们手动编写,如果没有编写,就会出现main函数没有定义的错误。这里我们是将main函数初始为空,编写如下语句:

三、调试配置

  1. 设置软件仿真

    为了方便我们全部代码使用软件仿真,即不需要开发板也不需要仿真器,只需要一个KEIL软件即可,设置方法如图:
  2. 修改时钟大小

    在时钟的相关文件system_ARMCM4.c中有一段代码定义了系统时钟是25M,见下图:在软件仿真时,要保持和系统时钟一致,所以设置Options for Target->Target的时钟应该由默认的12M改成25M,设置如下图:
  3. 添加头文件的路径

    在C/C++选项卡里面指定工程头文件的路径,不然编译会出错,头文件路径的具体制定方法如下:    至此一个完整的基于Cortex-M4内核的FreeRTOS软件仿真的工程就建立完毕。

 

 

 

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐