FreeRTOS学习记录 00--编码标准与风格

本文档详细介绍了FreeRTOS的代码风格和命名规则,包括变量命名(如uint32_t类型的ul、uint16_t类型的us等)、函数命名(如使用prv前缀的私有函数和根据返回值类型命名的API函数)以及宏定义命名(如configUSE_PREEMPTION)。此外,还提及了数据类型的选择,如BaseType_t、TickType_t等,这些类型与STM32F4处理器的32位架构相匹配,以实现高效处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0 前言

@ Author         :Dargon
@ Record Date    :2021/07/12
@ Reference Book : `FreeRTOS源码详解与应用开发`,`ARM Cortex-M3与Cortex-M4权威指南`,`B站正点原子FreeRTOS讲解视频`
@ Purpose        :学习正点原子的miniFly,该飞控基于FreeRTOS系统开发的,所以学习一下记录下关于RTOS系统的一些基本操作,大概了解系统的工作原理,如何创建,运行,切换任务等等基本操作流程。在此进行学习的记录。

FreeRTOS作为一个系统有自己的一套代码的风格,熟悉和了解其内部的代码风格,在看到一个函数名、变量名字的时候,会清晰的得知,函数的返回类型,函数属于哪个文件夹下面,变量的定义类型等。将更多有助于学习源码。

1 命名规则

1.1 变量命名

  • uint32_t 类型变量表示 ul “u” 表示unsigned,“l”表示long型,表示32位变量
  • uint16_t 类型变量表示 us “u” 表示unsigned,“l”表示short型,表示16位变量
  • uint8_t 类型变量表示 uc “u” 表示unsigned,“c”表示char型,表示8位变量
  • 非标准定义的类型变量的前缀使用x,例如 BaseType_tTickType_t,这两种类型的是进行重定义得出的。
  • 非标准定义的无符号类型变量的前缀使用u,例如ux表示 UBaseType_t
  • 位于文件portmacro.h ,端口 宏

/* Type definitions. */
#define portCHAR		char
#define portFLOAT		float
#define portDOUBLE		double
#define portLONG		long
#define portSHORT		short
#define portSTACK_TYPE	uint32_t
#define portBASE_TYPE	long

// --未找到 BaseType_t的typedef
typedef portSTACK_TYPE StackType_t;
typedef long BaseType_t;
typedef unsigned long UBaseType_t;
typedef uint32_t TickType_t;
#define portMAX_DELAY ( TickType_t ) 0xffffffffUL

  • 枚举enum 类型变量使用 e开头
  • 指针类型 前面加p,例如指针指向一个uint16 类型的变量,这个指针前缀pus
  • char 类型变量 前缀c, char* 变量用于字符串,前缀pc

1.2 函数命名

  • 使用static 限定某个文件的私有函数使用前缀 prv,表明这个函数的作用域只在当前文件中有效
  • API函数根据 函数的返回值的类型来决定函数的前缀,例如返回uint32_t类型的,前缀为ul,返回void类型的,前缀为v
  • 函数名字会使用他们所在的文件名
// --v: return void ;port: 位于port.c 文件夹内
void vPortEndScheduler( void )
{
	/* Not implemented in ports where there is nothing to return to.
	Artificially force an assert. */
	configASSERT( uxCriticalNesting == 1000UL );
}

1.3 宏macro命名

  • 例如#define configUSE_PREEMPTION config:表示在config文件中定义,后面的单词均是大写的,且用下划线"_"隔开

2 数据类型

  • 使用的是STM32 F4,对应的MPU是32位的架构,对应的是4个宏定义的类型BaseType_tTickType_tUBaseType_tStackType_t,对应的都是处理器32位的架构,属于处理器所处理效率最高的数据类型
    _tUBaseType_tStackType_t`,对应的都是处理器32位的架构,属于处理器所处理效率最高的数据类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值