• 基于STM32F407的FreeRTOS学习笔记(1)——环境搭建


    以前使用STM32单片机一直停留在逻辑开发以及前后台系统,而真正被广泛使用的则是RTOS。

    图片

    前后台系统则是我们常用的,使用一个主循环+许多的调用函数这些构成了后系统,利用中断进行异常处理则是前系统。

    RTOS则是将任务按照优先级排列,优先进行优先级高的任务例如单片机内如的中断服务函数。

    图片

    操作更加的灵活方便,也是嵌入式软件工程师必备的技能之一。

    而FreeRTOS顾名思义,开源且免费,是我们小白入门的不二之选。




    安装FreeRTOS

    某度上搜索FreeRTOS,点入FreeRTOS的官网,进入下载第一个安装包(包含源码)

    图片

    图片

    下载好源码后,我们利用CUBEMX创建我们的工程,我选择的是STM32F407ZGT6这块芯片,之后将我们的下载的RTOS中的Source文件夹拷贝到我们利用CUBEMX创建的工程目录中。

    图片

    其中的portable文件夹中只需保留以下文件即可,在工程中,我们将这些文件夹的内容全部添加到工程内(MemMang中的文件是实施方法,众多的heap文件我们只需要添加一个即可),并从之前FreeRTOS的源码中找到Demo文件夹,找到我们对应的单片机的文件夹。将FreeRTOSConfig.h文件即配置文件拷贝入我们的工程目录,这样子即可完成工程模板的创建。

    图片

    图片

    之后我们编译工程,会发现有关于系统时钟的报错,没有SystemCoreClock的定义。

    图片

    图片

       我们在FreeRTOSConifg.h文件中找到44行,发现这个定义是并不是在MDK这个平台使用的,我们将其进行修改,使之在MDK平台适用

    #if defined(__ICCARM__) || defined(__CC_ARM) ||defined(__GNUC__)  #include   extern uint32_t SystemCoreClock;#endif

    之后又爆出许多错误,如下所示主要是一些函数的重复定义,在heap文件之间的重复定义。

    图片

    我们去这些文件中挨个注释掉这些重复的函数。(我上述是添加了好几个heap文件,实际上添加一个heap文件即可)


    之后我们又遇到了几个报错,这些报错主要是在FreeRTOSConfig.h中我们使能了几个构造函数,但是并没有定义这些构造函数,因此我们需要在FreeRTOSConfig.h中关闭这些构造函数

    图片

    将对应的构造函数值改为0即可关闭这些构造函数。

    图片

    这样子我们的编译就没问题啦

    图片

  • 相关阅读:
    美味的黄油如果不冷藏,会变质吗?
    MacOS Sonoma14.2.1系统SSH免密登录
    高清实拍类型视频素材去哪里找?高清实拍素材网站分享
    【思维】如何放下心中的执念?
    自律挑战30天
    前端之JS篇(十)——BOM概述&定时器&JS执行机制&location&navigator&history
    C++中string对象之间比较、char*之间比较
    区块链游戏的开发流程
    CMS垃圾收集器优缺点
    大数据 DataX 数据同步数据分析入门
  • 原文地址:https://blog.csdn.net/m0_61687959/article/details/133903118