使用Keil内置工具一键为工程安装FreeRTOS

最近正在学习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(亮灯)功能.

  • 6
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值