书:P16
在记录中,只是记录比较关键的部分。

1.1 新建本地文件夹

文件夹名称 文件夹 文件夹作用
Doc - 用于存放对整个工程的说明文件,如
readme.txt。通常情况下,我们都要对
整个工程实现的功能,如何编译,如
何使用等做一个简要的说明。
Project - 用于存放新建的工程文件。
freertos Demo 存放板级支持包,暂时为空。
License 存放 FreeRTOS 组件,暂时未空。
Source/include 存放头文件,暂时为空。
Source/portable/RVDS/ARM_CM3 存放与处理器相关的接口文件,也叫
移植文件,暂时为空。
Source/portable/RVDS/ARM_CM4
Source/portable/RVDS/ARM_CM7
Source 存 放 FreeRTOS 内核源码, 暂时为
空。
User 存放 main.c 和其它的用户编写的程
序, main.c 第一次使用需要用户自行
新建

建立完成:
image.png

  • startup_ARMCM3.s(startup_ARMCM4.s 或 startup_ARMCM7.s)是汇编编写的启动文件
  • system_ARMCM3.c(startup_ARMCM4.c 或 startup_ARMCM7.c)是 C 语言编写的跟时钟相关的文件。


    1.2 编写main函数

    系统在开始执行的时候先执行启动文件里面的复位程序,复位程序里面会调用 C 库函数main, main 的作用是初始化好系统变量,如全局变量,只读的,可读可写的等等。 main 最后会调用rtentry,再由__rtentry 调用 main 函数,从而由汇编跳入到 C 的世界,这里面的 main 函数就需要我们手动编写,如果没有编写 main 函数,就会出现 main 函数没有定义的错误,

    创建main,啥事也不干
    1. int main(void)
    2. {
    3. for(;;)
    4. {
    5. /* 啥事不干 */
    6. }
    7. }

1.3 修改时钟的大小

时钟相关文件 system_ARMCM3.c的开头,有一段代码定义了系统时钟的大小为 25M

在软件仿真的时候,确保时间的准确性,代码里面的系统时钟跟软件仿真的时钟必须一致,所以 Optionsfor Target->Target 的时钟应该由默认的 12M 改成 25M

  1. #define XTAL ( 5000000UL) /* Oscillator frequency */
  2. #define SYSTEM_CLOCK (5U * XTAL)

image.png

其它:其它的目录INC文件 自己添加就可。