最近正在学习FreeRTOS, 觉得每次都要照着流程手动给工程安装, 很麻烦. 一天在无聊乱翻Keil时, 发现Keil内部居然自带FreeRTOS包.

废话不多说, 马上开始操作.

软硬件详情

平台: Keil MDK 5.29
系统: Win10 21H1
设备: 德州仪器TM4C123GH6PM单片机(TM4C123GXL评估板)

操作流程

一、为Keil安装FreeRTOS支持包

打开Keil, 点击工具栏那个像三个饼干装在碗里一样的图标

在Packs一栏里, 找到这个FreeRTOS包, 点击Install, 它会自动开始安装.

Keil内可安装CMSIS-FreeRTOS或Native FreeRTOS, 本文两种方式都会介绍, 按工程需求选择安装类型.

二、为已有工程安装Native FreeRTOS

你能在

Arm/Packs/ARM/CMSIS-FreeRTOS/10.4.6/CMSIS/Documentation/General/html/cre_freertos_proj.html#cmsis_freertos_config

路径下找到官方的安装教程, 只不过是英语的

为了方便大家, 我用中文简单的讲一遍.

任意打开一个简单的空白工程, 我们以Blinky闪灯项目为例(如果硬件型号在Keil PackInstaller里面找得到, 并且资源够用, 一般都能成功安装)

在确保你的工程编译没问题后, 点开这个像一块饼干一样的图标

像我这样勾选(勾多了或是勾少了下面都会有提示)

点击OK, 你就会发现FreeRTOS和芯片Startup的有关源码自动的插入了进去.

接下来兴冲冲的编译, 发现报了几个错.
首先报了一个这个:

#error configUSE_TIMERS must be set to 1 to make the xTimerPendFunctionCall() function available.

可能是原生BUG? 在FreeRTOSConfig.h里面把configUSE_TIMERS改成1就不报错了.

继续编译, 又有一个错

.\output\model.sct(7): error: L6235E: More than one section matches selector - cannot all be FIRST/LAST.
Not enough information to list image symbols.
Not enough information to list load addresses in the image map.
Finished: 2 information, 0 warning and 1 error messages.
".\output\model.axf" - 1 Error(s), 0 Warning(s).

网上查了查, 这类错误一般是startup文件有重复导致的.

把startup文件删得只剩一个, 编译, 不报错了.

三、注意事项

  • 原工程文件夹里面千万不要有和FreeRTOS有关源代码重名的文件, 如: task.h, list.h等, 这样会导致文件冲突, 报莫名其妙的错.
  • FreeRTOSConfig.h已经按照你用的硬件改好了, 像中断优先级那些都不用改
  • 加在里面的RTOS源代码并没有添加进工程文件夹, 而是呆在了Keil的安装目录里面. 这样一来可能可移植性不会太好, 而且在Git代码时无法把那堆源码Git上去, 在大型项目合作时用之前要三思

四、为工程安装CMSIS-FreeRTOS

该类型和Native FreeRTOS安装流程基本一样, 有以下几点不同:

  • RTOS Config选项不一样(注意红线处)
  • 这个方式生成的FreeRTOSConfig.h可以用内置Configuration Wizard工具来编辑(两种方式生成的FreeRTOSConfig.h文件是不一样的)

注意
对于TM4C系列单片机, 若滴答定时器需要精准计时一秒, 则需要将系统时钟配置为80Mhz

SysCtlClockSet(SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |SYSCTL_XTAL_16MHZ); //设置系统时钟为80MHz

并把FreeRTOSConfig.h中的configCPU_CLOCK_HZ参数设置为80000000

#define configCPU_CLOCK_HZ                    (80000000)

下一篇文章将着重介绍用CMSIS-FreeRTOS实现Blinky(亮灯)功能.

使用Keil内置工具一键为工程安装FreeRTOS相关推荐

  1. Java虚拟机学习总结(3)——JDK内置工具(jps、jstack、jmap、jstat)使用详解

    一.JDK内置工具 - javap 1. 介绍 java 反编译工具,主要用于根据Java字节码文件反汇编为Java源代码文件. 2.命令 javap <options> <clas ...

  2. 利用Windows内置工具winsat测试硬盘速度(SSD机械盘对比)

    利用Windows内置工具winsat测试硬盘速度(SSD&机械盘对比) 以下是红色内容是在命令行运行: C:\Users\Administrator>winsat disk Windo ...

  3. [MODIS数据处理#2]常用的Arcmap内置工具(一)

    上一篇文章中,我们使用MRT工具完成了对MODIS数据的预处理,并对栅格进行了预处理. 接下来的两期是对Arcmap中常用内置工具的介绍,使用的ArcGIS版本为10.2: • 投影栅格 • 裁剪 • ...

  4. JVM-2.jdk自带内置工具

    文章目录 1. 概要 2. JPS 3. jstat---性能分析 4. jmap--堆内存分析 4.1 打印java堆详情 4.2 打印堆中对象的统计信息 4.3 dump出堆内存信息 4.4 触发 ...

  5. (六)Java关于内置工具类

    Java 内置工具类(String.StringBuffer.LinkedList.ArrayList.HashMap等工具) ​ Java提供了异常丰富的工具类数量巨阳之多,对于 Java学习者而言 ...

  6. 如何使用Deno的内置工具

    首发于我的博客:https://blog.zhangbing.site/ Deno和Node.js之间一个令人惊讶的区别是运行时内置的工具数量.除了Read-Eval-Print Loop(REPL) ...

  7. acer软件保护卡清除工具clear_使用Windows 10内置工具释放硬盘空间的最佳方法

    如果您的磁盘空间不足,可以使用 Windows 10 中内置的工具来清理垃圾文件.应用程序和游戏等,以优化硬盘空间.使用这些清理工具不仅能够释放空间,而且还有助于提高系统性能. 下面小编就为大家汇总介 ...

  8. TS高级类型内置工具类型

    Partial<T> 将泛型 T 中的所有属性转化为可选属性 /*** Make all properties in T optional*/ type Partial<T> ...

  9. 【Appium】元素探测工具UIautomatorViewer 和Appium destop内置工具

    Appium destop内置元素探测工具 platformName-设备平台:填Android或IOS deviceName----设备名:按adb devices查出的设备名填写即可,Androi ...

最新文章

  1. Firefox 66正式向广告宣战!预设禁止自动播放影片并加入加入 Windows Hello
  2. Java8初体验(二)Stream语法详解(转)
  3. Python元组与字典详解
  4. Java集合源码分析(二)ArrayList
  5. 虚拟机安装多了,怎么删除?
  6. SQL SERVER作业的Schedules浅析
  7. 不错的html学习网址。
  8. 没有已启用的仓库。 执行 “yum repolist all“ 查看您拥有的仓库。
  9. 争议激烈!新晋斯隆奖得主发布最新研究,网友:结果成疑,文章结论和实验结果完全相反...
  10. “百度云手机”旗舰版发布,堪比旗舰真机?只需77元/月!
  11. DB2 9 根本(730 磨练)认证指南,第 3 部门: 谋面 DB2 数据(4)
  12. 算法:Sliding Window Maximum(滑动窗口最大值)
  13. mysql序列号生成软件_mysql 序列号生成器
  14. 元胞自动机模型01——认识元细胞机模型
  15. T3.2是什么级别?
  16. 程序员讨论《黑客帝国》(一)真实与虚拟
  17. python手绘效果图_用Python做个海量小姐姐素描图
  18. 哈工大软件学院编译原理实验3——语义分析
  19. 讲真,你绝对是第一次看到如此全面的贴片电阻知识
  20. 人脸检测--传统方法

热门文章

  1. 数据库协作运维大势所趋
  2. bat批处理脚本大全
  3. 了解卡尔曼滤波器1--状态观测器
  4. 从状态观测器角度理解卡尔曼滤波
  5. 基于知识图谱的问答系统(protege,jena,jieba分词的结合)
  6. Mysql循环插入数据
  7. 我的创作纪念日丨感恩这365天来有你相伴,不忘初心,各自精彩
  8. JSE3-类特性-继承,覆盖,多态,static,内部类
  9. Arch图形界面安装
  10. python3 if语句嵌套_3.2.3 if语句的嵌套