freeRTOS系列教程之freeRTOS入门与工程实践【文档+视频教程+进阶视频教程】

《freeRTOS入门与工程实践》

  • 前言
    • 课程内容
    • 授课方式
  • 学前知识普及
  • 学前准备
    • 硬件准备
    • 资料准备
  • 视频教程
  • 文档教程
    • 更好的阅读体验

前言

课程内容

嵌入式软件工程师的学习路线一般是:单片机->RTOS->Linux。当你掌握单片机开发后,如果要进一步提升编程水平,建议学习RTOS(Real Time Operating System,实时操作系统)。

有很多优秀的RTOS,比如FreeRTOS、RT-Thread、UCOS等等。FreeRTOS使用范围最广泛,RT-Thread生态丰富,UCOS是收费的并且很少使用了。

对于初学者,建议先学习FreeRTOS。只要学会了任意一款RTOS,肯定就会使用其他RTOS了。

百问网在2022年已经推出了《FreeRTOS快速入门》课程:https://blog.csdn.net/qq_35181236/article/details/122070883。

为何还要重新制作《FreeRTOS入门与工程实践》?《FreeRTOS快速入门》只是讲解FreeRTOS的各类API的理论、用法、示例,这些实验是基于Keil自带的STM32F103模拟器。没有使用更多的硬件模块、不能体现工作中的实际场景。

在《FreeRTOS入门与工程实践》,将引入更多的硬件模块,并展示实际工程示例中的用法。另外,基于RTOS的程序一般都比较复杂,涉及的源文件非常多,在工作中一般都基于面向对象 的思想来写程序。

所以,本课程会涉及如下内容:

  • 讲解FreeRTOS的常用API:理论、用法
  • 选择合适的硬件模块,展示这些API的实例
  • 实现合适的小项目,展示工作中的编程方法

授课方式

  • 对于每一个实验,我们会精心设计:要解决什么问题;然后讲解FreeRTOS提供的解决方法。
  • 讲解FreeRTOS的API及内部原理(不深入讲解内部源码,只是进行原理性介绍)
  • 讲解实验过程使用的模块的接口函数(只讲使用,不讲内部实现,模块的源码实现单独开课讲解)
  • 讲解原理时,配合着文档、现场画图进行讲解,跟学校老师写黑板一样
  • 最后现场从0编写程序并调试

一切都是现场操作,绝对不会照着PPT念,绝对不会照着现成的代码讲解。只有现场从0操作,学员才能身临其境地学习,跟着教程:碰到问题、解决问题。

学前知识普及

对于RTOS初学者或者对RTOS的基础概念不太清楚的同学,请先学习 这个视频课程,在充分理解什么是RTOS之后再开始学习,对于你的学习能达到事半功倍的作用!
视频观看地址: https://www.bilibili.com/video/BV1844y1g7ud

学前准备

硬件准备

本课程基于韦东山百问网推出的 DshanMCU-103学习套件 进行编写,它由3部分组成:STM32F103C8T6的最小系统板、扩展底板、各类模块。如下图所示:

在这里插入图片描述

上述硬件再加一个ST-Link(套餐配套)即可学完本课程所有内容。

主板DshanMCU-103是基于STM32F103C8T6的最小系统板。之所以选择最小系统板,而不是把所有模块都放在一个整体的电路板上,目的如下:

  • 低成本尝试:嵌入式软件开发并不一定适合你,可以购买最小系统板进行体验、及时放弃
  • 按需购买:用到再买,讲究一个性价比

资料准备

  • 配套资料获取:https://rtos.100ask.net/zh/freeRTOS/DShanMCU-F103

视频教程

  • 百问网官方学习平台:https://100ask.net
  • 哔哩哔哩:https://space.bilibili.com/275908810

文档教程

  • 第1章 课程介绍
  • 第2章 单片机程序设计模式
  • 第3章 搭建开发环境安装
  • 第4章 开发板使用
  • 第5章 模块使用说明与STM32CubeMX配置
  • 第6章 创建FreeRTOS工程
  • 第7章 FreeRTOS源码概述
  • 第8章 内存管理
  • 第9章 任务管理
  • 第10章 同步互斥与通信
  • 第11章 队列(queue)
  • 第12章 信号量(semaphore)
  • 第13章 互斥量(mutex) (待更新)
  • 第14章 事件组(event group) (待更新)
  • 第15章 任务通知(Task Notifications) (待更新)
  • 第16章 软件定时器(software timer) (待更新)
  • 第17章 中断管理(Interrupt Management) (待更新)
  • 第18章 资源管理(Resource Management) (待更新)
  • 第19章 调试与优化 (待更新)

更好的阅读体验

需要获取更好阅读体验的同学,请访问我们专门设立的站点查看,地址:http://rtos.100ask.net

在这里插入图片描述

最后,请别忘了收藏本文,下次学习不迷路!


本文完

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/77183.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VUE 的eslint 代码规范检查

报错: You may use special comments to disable some warnings. Use // eslint-disable-next-line to ignore the next line. Use /* eslint-disable */ to ignore all warnings in a file. 解决: 注释:...(config.dev.useEslint ? [creat…

go初识iris框架(七) - 实战资源导入和项目框架搭建

实战项目框架搭建 如下是项目框架搭建后的说明: config::项目配置文件及读取配置文件的相关功能controller:控制器目目录,项目各个模块的控制器及业务逻辑处理的所在目录datasource:实现mysql连接和操作、封装操作mysql数据库的目录。model:数据实体目…

趣解设计原则之《只是买台咖啡机,竟然要学习咖啡器的运行原理?》

〇、小故事 小王最近工作特别的忙,每天要早出晚归,睡眠质量很差,为了可以精力充沛的投入到每天的工作中,她都在上班路上买一杯公司楼下的星巴克咖啡来提提神。咖啡味道很好,但是每天买咖啡的人真的是太多了&#xff0…

Linux编辑器-vim使用

文章目录 前言一、vim编辑器1、vim的基本概念2、vim的基本操作2.1 命令模式切换至插入模式2.2 插入模式切换至命令模式2.3 命令模式切换至底行模式 3、vim命令模式命令集3.1 移动光标3.2 删除文字3.3 复制与粘贴3.4 替换3.5 撤销上一次操作3.6 更改3.7 跳至指定的行 4、vim末行…

关于运行franka_ros包中的franka_gazebo报错VMware: vmw_ioctl_command error 无效的参数.

参考的博文,感谢,解决Vmware下虚拟机下打开gazebo报错 ,VMware: vmw_ioctl_command error 无效的参数. 首先第一个VMware: vmw_ioctl_command error 无效的参数的问题。这应该是虚拟机的bug,毕竟使用虚拟机和真实的物理机上是有差…

C语言实现三子棋游戏(详解)

目录 引言: 1.游戏规则: 2.实现步骤: 2.1实现菜单: 2.2创建棋盘并初始化: 2.3绘制棋盘: 2.4玩家落子: 2.5电脑落子: 2.6判断胜负: 3.源码: 结语&…

GB28181学习(三)——心跳保活

心跳保活 要求: 1. 当原设备发现工作异常时,应立即向本SIP监控域的SIP服务器发送状态信息; 2. 无异常时,定时向本SIP监控域的SIP服务器发送状态信息; 3. 状态信息报送采用**MESSGAE**方法; 4. SIP设备宜在…

简简单单教你如何用C语言实现获取当前所有可用网口!

一、获取本机所有可用网卡名 原理: 在 Linux 系统中,/proc 目录是一个位于内存中的伪文件系统。 /proc目录是内核提供给我们的查询中心,通过查询该目录下的文件内容,可以获取到有关系统硬件及当前运行进程的信息,如…

leetcode 54. 螺旋矩阵

1. 题解 如果一条边从头遍历到底,则下一条边遍历的起点随之变化选择不遍历到底,可以减小横向、竖向遍历之间的影响一轮迭代结束时,4条边的两端同时收窄 1一轮迭代所做的事情变得很清晰:遍历一个“圈”,遍历的范围收缩为…

日常开发小汇总(3)js类型判断

1.typeof 能判断出字符串、数字、方法和undefined,array、null、object判断不出 let num 1;let str "x";let fn function user(){}let arr [1,2]let obj {name:"zhangs"}let und;let nul null;console.log(typeof num) //numberconsole.l…

JAVAEE初阶相关内容第八弹--多线程(初阶)

本文目录 阻塞队列 阻塞队列是什么? 标准库中的阻塞队列 生产者消费者模型 阻塞队列的实现 普通队列实现: 入队列: 出队列: 完整代码: 加阻塞 加锁 加阻塞 阻塞队列 队列:先进先出,…

量化:基于支持向量机的择时策略

文章目录 参考机器学习简介策略简介SVM简介整体流程收集数据准备数据建立模型训练模型测试模型调节参数 参考 Python机器学习算法与量化交易 利用机器学习模型,构建量化择时策略 机器学习简介 机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。…

请重新安装msvcp140.dll的修复方法,多种msvcp140.dll的处理方案

当你在电脑上安装或运行某些程序时出现了“缺少msvcp140.dll”或“msvcp140.dll丢失”会要求你“重新安装msvcp140.dll”等的错误提示,这意味着你的计算机缺少了一个重要的动态链接库文件。msvcp140.dll是微软Visual C Redistributable for Visual Studio 2015库的一…

硬件总线基础07:PCIe总线基础-事务层(2)

说在开头:关于哲学 在《东邪西毒》电影里欧阳锋说:“看来你的年纪也有四十出头了,这四十多年来,总有些事你是不愿再提,或是有些人不想再见,有的人曾经对不起你,也许你想过杀了他们,…

vue2中使用富文本编辑器tinyMCE全过程

第一步:安装TinyMCE $npm install tinymce5.10.0 -S $npm install tinymce/tinymce-vue3.0.1 -S 第二步:在node_modules中找到tinymce文件夹将内部文件移入pubilc/tinymce文件夹中在index.html文件中引入tinymce.min.js 注意:不把js文件放…

在 Arweave 中轻松管理文件:借助 4EVERLAND 完成 Web3 前端Path Manifests的终极指南

为什么使用Path Manifests? 当在 IPFS 上发布 NFT 时,图片和元数据会被上传到 IPFS 网络以获得一个根 CID,其形式如下: ipfs://bafybeic36ik6cngu37xbzmpytuvyo7z3lyeen44clkkxq5d263zj4nkzr4 通过使用这个根 CID,每…

运算放大器典型应用(二)

文章目录 十、采样保持电路十一、有源滤波电路二阶有源低通滤波器问题二阶截至频率如何算 十、采样保持电路 十一、有源滤波电路 给单片机供电R一般大于4.1Ω小于10Ω,太大会产生功耗 二阶有源低通滤波器问题 二阶截至频率如何算 通频带比较窄可以用这种&#xff0…

揭秘策划行业就业前景怎么样?

策划这个行业总的来说就是:门槛低,上限高!! 咱们一般说的策划也分很多类型,这里选取身边朋友做的最多的4种类型简单说说。 1、前端品牌策划,转型容易出路广 品牌策划以品牌思维为核心去分析公司的经营发…

计算机毕业设计 高校课程评价系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

Revit SDK 介绍:AddSpaceAndZone 添加空间和分区

前言 这个例子介绍添加空间和分区。 内容 从 UI 界面看空间和分区。“分析”选项卡“空间和分区”面板: 创建空间 点击“Create Space”按钮,点“OK”,出现右边所示的6个空间。 核心逻辑: // SpaceManager::CreateSpaces(…