zoukankan      html  css  js  c++  java
  • 基于STM32的FreeRTOS移植

    简介

    通过STM32CubeMX建立MDK工程,手动进行FreeRTOS移植,以及任务创建。

    开发平台

    硬件平台:STM32F746 Discovery Kit
    软件源码:FreeRTSO V9.0.0
    开发环境:MDK V5.28

    移植准备

    1. 源码获取
      通过访问FreeRTOS官网可以直接下载源码,解压后文件夹的FreeRTOS目录包含了移植所需的文件和一些Demo。
    2. 工程准备
      打开STM32CubeMX,选择芯片STM32F746NGHx创建工程,在System Core栏目下的RCC项配置LSE为Crystal/Ceramic Resonator,HSE为BYPASS Clock Source

      根据官方的原理图,选择控制LD1的闪烁作为一个任务,所以配置该引脚为输出模式

      配置系统时钟

      在工程管理导航栏设置工程名称、保存路径和IDE类别,然后点击右上角GENERATE CODE按钮生成工程

    源码移植

    1. 在工程根目录建立FreeRTOS文件夹,并建立Source、Include、Portable三个子目录,存放有关于FreeRTOS的源码

    2. 源码文件夹FreeRTOS/Source路径下的所有.c文件复制到刚才建立的Source文件夹

    3. 源码文件夹FreeRTOS/Source/include路径下的所有.h文件复制到刚才建立的Include文件夹

    4. 源码文件夹FreeRTOS/Source/portable/MemMang路径的所有.c文件和FreeRTOS/Source/portable/RVDS/ARM_CM7/r0p1路径下的所有文件复制到刚才建立的Portable文件夹

    5. 源码文件夹FreeRTOS/Demo/CORTEX_M7_STM32F7_STM32756G-EVAL_IAR_Keil路径下的FreeRTOSConfig.h文件复制到刚才建立的FreeRTOS目录下,该文件是对FreeRTOS内核功能的配置文件,需要好好了解每个宏定义配置的功能。

    MDK配置及文件修改

    1. 使用MDK打开工程,把建立的FreeRTOS目录下文件添加到工程中,并且添加包含路径

    2. 修改stm32f7xx_it.c文件,屏蔽掉SVC_HandlerPendSV_HandlerSysTick_Handler三个函数。工程中把HAL库与FreeRTOS共用Systic,所以在FreeRTOS的xPortSysTickHandler函数中添加HAL_IncTick函数的执行。

    3. 修改FreeRTOSConfig.h文件,否则暂时状态下编译会报错。把configUSE_IDLE_HOOKconfigUSE_TICK_HOOKconfigCHECK_FOR_STACK_OVERFLOWconfigUSE_MALLOC_FAILED_HOOK这几个宏定义设为0;重定义configASSERT( x ),或者实现vAssertCalled函数。

    创建任务

    1. 在main.c中包含有关于FreeRTOS的.h文件

    2. 创建任务句柄和入口函数

    3. 创建并启动调度器

    总结

    编译后下载程序,观察到板子上LD1开始闪烁,任务创建并成功运行。

  • 相关阅读:
    计算属性(computed)、方法(methods)和侦听属性(watch)的区别与使用场景
    DatagramChannel
    IIS发布问题集锦
    ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象
    MVC教程--MiniProfiler.EF监控调试MVC和EF的性能
    关于EF输出sql的执行日志
    Entity Framework扩展库
    C#中特性,以及应用场景(收藏链接)
    ajax原理
    .net中session无效
  • 原文地址:https://www.cnblogs.com/niu-li/p/12498196.html
Copyright © 2011-2022 走看看