| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 【FreeRTOS】基于STM32F407的Freertos实时操作系统移植 -> 正文阅读 |
|
[嵌入式]【FreeRTOS】基于STM32F407的Freertos实时操作系统移植 |
FreeRTOS工程移植简介在裸机系统中,所有的程序基本都是自己写的,所有的操作都是在一个无限的大循环里面实现。现在还有一些项目开发用的都是裸机系统,而且也能够满足需求。 为什么还要学习 RTOS 编程,偏偏还要整个操作系统进来。一是项目需要,随着项目要实现的功能越来越多,单纯的裸机系统已经不能够完美地解决问题,反而会使编程变得更加复杂,如果想降低编程的难度,我们可以考虑引入RTOS 实现多任务管理,这是使用 RTOS 的最大优势。二是学习的需要,进入实时操作系统的学习对于我们后面学习Linux系统开发会有不少的帮助; 资源下载Github下载:https://github.com/freertos
工程创建选择自己对应的芯片 配置串口1
配置工程
移植FreeRTOS在工程目录下新建一个FreeRTOS的文件夹再在这个文件夹下面建立三个文件夹分别是include、src和port; 将FreeRTOSv9.0.0\FreeRTOS\Source文件夹下面的所有.c文件拷贝到src目录 将FreeRTOSv9.0.0\FreeRTOS\Source\include下面所有文件拷贝到include目录 将FreeRTOSv9.0.0\FreeRTOS\Source\portable目录下的MemMang文件夹和RVDS文件夹拷贝到port目录 其实在stm32CUBEMX中我们可以直接添加FreeRTOS的包,而且建立工程更加方便,但是自动生成的工程很难让我们了解这个工程的组成这里只是走一遍流程,后续如果在项目中使用到FreeRTOS可以选择利于自己开发的方式创建即可; 然后我们打开keil添加我们的freertos源码文件进来 heap_1.c:适合一些不会删除任务,队列以及信号量的任务,特别是一些比较简单的系统和一些对安全性要求比较高的系统。事实上,很多系统中只要创建了任务之后就会一直执行,不会删除任务。所以这个文件适用环境还是比较多的。 heap_2.c:能分配,能回收,但是回收时不考虑内存碎片的场所。适合一些申请和释放操作不是特别频繁,而且不会申请大数组的场所。(申请和释放会造成内存碎片,过多操作内存中可能没有大的连续区域) heap_3.c:这种方法实际使用的还是c语言的malloc和free函数。与平台没有太大关系。 heap_4.c:内存分配和释放操作比较频繁的系统。例如要重复创建删除任务,队列,信号量等。 heap_5.c:系统需要管理不连续的内存空间,例如接入外部ram的场合
然后我们开始编译: 错误1:…\FreeRTOS\port\RVDS\ARM_CM4F\port.c(483): error: A1586E: Bad operand types (UnDefOT, Constant) for operator解决办法:全局搜索__NVIC_PRIO_BITS将4U改成4 错误2:中断函数的重复定义因为FreeRTOS已经帮我们实现了这几个函数所以我们需要在stm32f4xx_it.h文件中将这三个中断函数注释掉即可; 错误3:STM32F407ZG_FreeRTOS\STM32F407ZG_FreeRTOS.axf: Error: L6218E: Undefined symbol vApplicationIdleHook (referred from tasks.o).等四个函数未定义
初步测试
成功执行,这里需要注意一下头文件的包含,我放在mian.h中包含他就会报错,而且FreeRTOS.h必须在task.h之前包含;
代码下载后面的资源都会在这个连接更新 链接:https://pan.baidu.com/s/1nc1rfyLiMyw6ZhxiZ1Cumg?pwd=free |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:41:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |