首页 > 其他分享 >使用FreeRTOS官方移植,移植到STM32F1平台中

使用FreeRTOS官方移植,移植到STM32F1平台中

时间:2024-07-28 18:24:47浏览次数:18  
标签:文件 头文件 FreeRTOS 官方 STM32F1 文件夹 port 移植

本教程基本参照[野火]《FreeRTOS内核实现与应用开发实战指南》,本人相当推荐此教程,尤其是第一部分从0开始写内核,虽然比较晦涩,但是学完之后对FreeRTOS的运行原理还有框架的认识会有一个很大的提高。

首先获取FreeRTOS的源码

我们从官网下载9.0版本的压缩包

解压后

Plus中包含付费的应用程序,不予使用

打开FreeRTOS文件夹

license是许可协议,非商用不需要考虑。

Demo中有FreeRTOS官方对许多平台写的例程,我们到时候裁剪和设置就需要参考这里面的demo

Source中就有我们最需要的源码了

由于我们是使用官方做的移植,而不是我们从源码开始写API,所以我们使用官方写好的对应芯片的源码,所以我们创建一个可以直接使用的RTOS文件夹

1.创建RTOS文件夹,内部如下

1.打开Source

将Source中的游离文件放入创建的src

将官方的include文件夹内容放入我们RTOS文件夹的include文件夹中

将portable中RVDS(keil与RVDS相同)放入我们创建的port文件夹(也可以选择具体内核)中,再将memmang(内存管理)放入port文件夹中,实际使用选择其中一个heap文件

然后我们将制作好的RTOS文件放入一个简单的裸机例程中

再在keil中为这个裸机例程添加两个组,如下。

将src中.c文件添加进FreeRTOS/src组中,将port中memmang还有RVDS中ARM_CM3中的.c文件添加进FreeRTOS/port组中

添加头文件路径

将FreeRTOS支持文件都导入后,对中断进行修改,因为FreeRTOS中无论是任务启动或者任务切换调度还是时间片的切换,都是在中断(SVC、PendSV,还有systick)中进行,当然FreeRTOS官方很贴心已经重写PendSV_Handler()与 SVC_Handler(),,滴答中断也在port.c中实现了xPortSysTickHandler()。所以我们要注释掉stm32f10x_it.c中的PendSV_Handler()还有 SVC_Handler(),对systick进行重写在里面加入xPortSysTickHandler()(内部实现了按任务延时列表来切换任务)

重写部分

在重写前在stm32f10x_it.c加入FreeRTOS.h与task.h头文件(顺序不能错)

修改完中断之后我们打开官方Demo文件中stm32f103的demo,将其中的conf文件添加进裸机程序中(里面的内容详解以后有时间再做,当然也可以用野火的conf文件,里面已经加了中文注释,结合野火教程中的第一章内容就能看懂),然后加上#include "stm32f10x.h"头文件
 

注意:FreeRTOS.h头文件一定要在我们添加的freertos相关的头文件之前

否则会报如上等错误

最后编译烧录进开发板中

成功烧录,目前还未创建任务,所以没有现象

标签:文件,头文件,FreeRTOS,官方,STM32F1,文件夹,port,移植
From: https://blog.csdn.net/m0_53981848/article/details/140753375

相关文章

  • STM32第二十三课:GUI-Guider安装使用及项目移植(7.11版本)
    目录目标一、GUI-Guider获取与安装1.GUI-Guider获取2.安装二、使用步骤1.创建一个新项目2.快速使用三、项目移植注意事项目标1.安装GUI-guider。2.学会使用GUI-guider设计界面。3.学会将GUI-guider设计后的界面移植到项目工程中。一、GUI-Guider获取与安装 ......
  • STM32F103 SPI详解及示例代码
    1SPI协议详解 SPI是串行外设接口(SerialPeripheralInterface)的缩写,是美国摩托罗拉公司(Motorola)最先推出的一种同步串行传输规范,也是一种单片机外设芯片串行扩展接口,是一种高速、全双工、同步通信总线,所以可以在同一时间发送和接收数据,SPI没有定义速度限制,通常能达到甚至超过10......
  • STM32 串行FLASH W25Q64 移植文件系统FatFs ——(2)
    引言简述本篇文章目标:介绍如何将FatFs文件系统移植到STM32平台上的W25Q64串行FLASH。回顾上篇内容:软件模拟SPI驱动的实现。一、FatFs文件系统简介文件系统相对庞大且复杂,需要根据具体应用的文件系统格式进行编写。通常,文件系统与底层驱动分离,便于移植。因此,在实际工程应......
  • Clion开发STM32——移植FreeModbus
    STM32型号:STM32H743VIT6FreeModbus版本:1.6使用工具:stm32cubeMX,Clion使用STM32作从机,模式:RTU网上用keil的比较多,用Clion的比较少,如果你也用Clion,那么希望本文可以给你提供些许参考。1下载官网源码官网地址:https://www.embedded-experts.at/en/freemodbus/about/dem......
  • 三星app移植修复(app反编译修改)
    工具:apktoolADT命令:反编译java-jarapktool.jardtest.apk重打包java-jarapktool.jarbtest签名使用ADTsmail语言粗略理解(其实对于修改来说,大概熟悉就就ok)类定义.classpublicLcom/example/MyClass;.superLjava/lang/Object;.class指定类名和修饰符......
  • FreeRTOS操作系统(详细速通篇)——— 第十章
            本专栏将对FreeRTOS进行快速讲解,带你了解并使用FreeRTOS的各部分内容。适用于快速了解FreeRTOS并进行开发、突击面试、对新手小白非常友好。期待您的后续关注和订阅!目录FreeRTOS任务相关API函数1任务优先级相关API函数(1)uxTaskPriorityGet(2)vTaskPriorityS......
  • STM32F103C8T6与LD3320进行串口通讯控制LED灯的亮灭
    目录概要整体架构流程技术名词解释技术细节LD3320部分LD3320串口测试32单片机代码部分main.c(要与LD3320保持一致)串口部分概要STM32微控制器与LD3320语言模块通过串口进行数据交互,实现语音识别和控制功能。整体架构流程通过STC-ISP将LD3320部分的代码烧录进LD......
  • FreeRTOS操作系统(详细速通篇)——— 第八章
            本专栏将对FreeRTOS进行快速讲解,带你了解并使用FreeRTOS的各部分内容。适用于快速了解FreeRTOS并进行开发、突击面试、对新手小白非常友好。期待您的后续关注和订阅!目录列表与列表项管理1列表与列表项简介1.1定义1.2结构体介绍2相关API函数介绍2.1......
  • 移植FreeRTOS于LPC54608芯片,IAR
      1.源码下载·        在移植之前,我们首先要获取到FreeRTOS的官方的源码包FreeRTOS-MarketleadingRTOS(RealTimeOperatingSystem)forembeddedsystemswithInternetofThingsextensions直接在官网下载freertos源码包。下载后打开文件夹可以看到......
  • USB_IAP例程讲解及移植步骤
    IAP是InApplicationProgramming的缩写,‌含义为应用编程技术,此方式允许用户在自己的程序运行过程中对Flash存储器的部分区域进行烧写,‌方便地通过预留的通信口对产品中的固件程序进行更新升级。‌此外,USB_IAPDemo中的两个工程可通过预留的jumpApp接口和jumpToIap接口进行地址指......