参考资料:《正点原子STM32F4 FreeRTOS开发手册_V1.1》《野火FreeRTOS 内核实现与应用开发实战—基于STM32》

学习RTOS的意义

当我们进入嵌入式这个领域的时候,往往首先接触的都是单片机编程,单片机编程又
首选51 单片机来入门。这里面说的单片机编程通常都是指裸机编程,即不加入任何RTOS
(Real Time Operating System 实时操作系统)的程序。常用的RTOS 有国外的FreeRTOS、
μC/OS、RTX和国内的FreeRTOS、Huawei LiteOS 和AliOS-Things 等,其中尤以国外开源
且免费的FreeRTOS 的市场占有率最高。
在裸机系统中,所有的程序基本都是自己写的,所有的操作都是在一个无限的大循环
里面实现。现实生活中的很多中小型的电子产品用的都是裸机系统,而且也能够满足需求。
但是为什么还要学习RTOS 编程,偏偏还要整个操作系统进来。一是项目需要,随着产品
要实现的功能越来越多,单纯的裸机系统已经不能够完美地解决问题,反而会使编程变得
更加复杂,如果想降低编程的难度,我们可以考虑引入RTOS 实现多任务管理,这是使用
RTOS 的最大优势。

FreeRTOS编程风格

变量名

在FreeRTOS 中,定义变量的时候往往会把变量的类型当作前缀加在变量上,这样的
好处是让用户一看到这个变量就知道该变量的类型。比如char 型变量的前缀是c,short 型
变量的前缀是s,long 型变量的前缀是l, portBASE_TYPE 类型变量的前缀是x。还有其他
的数据类型,比如数据结构,任务句柄,队列句柄等定义的变量名的前缀也是x。
如果一个变量是无符号型的那么会有一个前缀u,如果是一个指针变量则会有一个前
缀p。因此,当我们定义一个无符号的char 型变量的时候会加一个uc 前缀,当定义一个
char 型的指针变量的时候会有一个pc 前缀。

函数名

函数名包含了函数返回值的类型、函数所在的文件名和函数的功能,如果是私有的函
数则会加一个prv(private)的前缀。特别的,在函数名中加入了函数所在的文件名,这大
大的帮助了用户提高寻找函数定义的效率和了解函数作用的目的,具体的举例如下:

  1. vTaskPrioritySet()函数的返回值为void 型,在task.c 这个文件中定义。
  2. xQueueReceive()函数的返回值为portBASE_TYPE 型,在queue.c 这个文件中定义。
  3. vSemaphoreCreateBinary()函数的返回值为void 型,在semphr.h 这个文件中定义。

宏均是由大写字母表示,并配有小写字母的前缀,前缀用于表示该宏在哪个头文件定
义,部分举例具体见表格

STM32 FreeRTOS系列教程(一)FreeRTOS简介相关推荐

  1. [FreeRTOS系列教程]学习FreeRTOS前的准备工作-----初学者必看

    转自:http://bbs.armfly.com/read.php?tid=1552 转载说明:本文仅为转载,下面有几位同学询问对应的教程,教程请参考下面的链接,是以帖子的形式分章节说明. http: ...

  2. STM32 基础系列教程 50 – MbedTls

    前言 mbed TLS(以前称为PolarSSL)是TLS和SSL协议的实现,并且需要相应的加密算法和支持代码.这是双重许可与Apache许可证 2.0版(与GPLv2许可也可).网站上指出,mbed ...

  3. STM32 基础系列教程 49 – Jansson

    前言 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全 ...

  4. STM32 基础系列教程 48 – CJSON

    前言 JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全 ...

  5. STM32 基础系列教程 47 - MD5

    前言 MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信 ...

  6. STM32 基础系列教程 46 – RNG

    前言 随机数发生器(RNG)是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 32 位的随机数.STM32F407自带RNG ,本节将给大演示STM32F4系列MCU中的RNG的使用.用 ...

  7. STM32 基础系列教程 45 - FSMC_LCD_Touch

    前言 上一节我们完成了用 STM32F4的 FSMC接口来控制 TFTLCD的显示的操作,其实正点原子的探索者F4开发板带的屏幕支持触摸操作,笔者用的是4.3寸的电容触摸屏,本节我们继续实验,来完成基 ...

  8. STM32 基础系列教程 44 - FSMC_LCD

    前言 TFT-LCD 即薄膜晶体管液晶显示器.其英文全称为: Thin Film Transistor-Liquid Crystal Display. TFT-LCD 与无源 TN-LCD. STN- ...

  9. STM32 基础系列教程 43 – SRAM

    前言 STM32F407ZGT6 自带了 192K 字节的 SRAM,对一般应用来说,已经足够了,不过在一些对内存要求高的场合, 比如跑算法或者跑 GUI 等,自带的这些内存就不够用了.比如跑算法或者 ...

  10. STM32 基础系列教程 42 - SDMMC+Fatfs

    前言 本节我们将基于42讲 "STM32 基础系列教程 41 - SDMMC" 的基础来实现基于SD卡文件系统的文件操作. 示例详解 基于硬件平台: 正点源子的stm32f4 探索 ...

最新文章

  1. Python 常用内置函数map、zip、filter、reduce、enumerate
  2. vsftp匿名访问目录_vsftp 使用匿名帐号登陆
  3. 【计算机网络】数据链路层 : 流量控制 ( “流量控制“ 机制 | 停止-等待协议 | 滑动窗口协议 | 后退 N 帧协议 GBN | 选择重传协议 SR | 滑动窗口 与 流量控制、可靠传输 )
  4. JavaScript中的Try...Catch 语句
  5. MySQL Replication--复制异常1
  6. mui app webview 沉浸式导航_AR实景导航 轻松找到网约车!高崎机场推出网约车专属上车区等便民举措...
  7. JSONP 初步学习--但是还是有疑问
  8. Web前端培训:有哪些好用的前端开发工具呢?
  9. 手握价值70万录用书的程序员提离职,领导:你已升职成功,还走?
  10. 外点惩处函数法·约束优化问题
  11. dblink查询_分库数据如何查询统计
  12. mysql几种语言_mysql的几种SQL语句
  13. python exec函数和eval函数_Python exec()和eval()的使用注意事项
  14. (3.13)常用知识-元数据函数
  15. 集群为什么最少6个_结构化面试答题技巧:多年的经验告诉你,最少要注意这6个方面...
  16. CTRL+ALT快捷键汇总
  17. Bluecoat代理设备维护手册
  18. android8 avb检验,android avb(Android Verified Boot)验证
  19. 原生js实现循环精灵图
  20. 高等代数 具有度量的线性空间(第10章)2 实内积空间

热门文章

  1. 软考中级网络工程师知识目录
  2. 群晖3617可以有几个网卡_【群晖系统】黑群晖洗白13问~经典QA
  3. 达梦数据库的学习使用
  4. 如何使用速问速答求解一元二次方程
  5. android 息屏锁频录音、录视频、电话自动录音
  6. java简历编写及面试技巧
  7. Qt 小项目 -- 颜色拾取器
  8. Qt编写Modbus从机程序
  9. 济南遥墙机场停5天怎么收费,济南遥墙国际机场停车场收费标准
  10. 2022上海Java工资收入概览