当前位置: 首页 > news >正文

FreeRTOS内核实现与应用之0——编码风格

内容来源于:

1. 刘火良老师的《FreeRTOS内核实现与应用开发实战指南》;

2. 硬汉嵌入式论坛 - Powered by Discuz! 论坛的安富莱_STM32-V5开发板_FreeRTOS教程(V1.1).pdf;

安富莱的文档质量很高,感谢!!!

FreeRTOS命名规则

1. 变量

  •  uint32_t定义的变量都加上前缀ul。u代表unsigned 无符号,l代表long长整型。
  • uint16_t定义的变量都加上前缀us。u代表unsigned无符号,s代表short短整型。
  • uint8_t定义的变量都加上前缀uc。u代表unsigned无符号,c代表char字符型。
  • stdint.h文件中未定义的变量类型,在定义变量时需要加上前缀x,比如BaseType_t和TickType_t定义的变量。
  • stdint.h文件中未定义的无符号变量类型,在定义变量时要加上前缀u,比如UBaseType_t 定义的变量要加上前缀ux。 typedef unsigned long UBaseType_t;
  • size_t 定义的变量也要加上前缀ux。
  • x 前缀**​:标识 FreeRTOS 自定义类型(如 BaseType_tTickType_t),增强可读性和可移植性。
  • 枚举变量会加上前缀e。
  • 指针变量会加上前缀p,比如uint16_t定义的指针变量会加上前缀pus。
  • 根据MISRA代码规则,char定义的变量只能用于ASCII字符,前缀使用c。
  • 根据MISRA代码规则,char *定义的指针变量只能用于ASCII字符串,前缀使用pc。

前缀与数据类型的对应关系

前缀数据类型典型用途示例
xBaseType_t/自定义类型内核状态标志、返回值、句柄xQueuexTask
ucuint8_t无符号字符或小整数ucPriority
uluint32_t计时器、计数器ulTimerCount
pvvoid*通用指针(动态内存、参数传递)pvTaskParameter
px结构体指针指向任务、队列等内核对象的指针pxReadyTasksList

2. 函数

  • 加上了static声明的函数,定义时要加上前缀prv,这个是单词private的缩写。
  •  带有返回值的函数,根据返回值的数据类型,加上相应的前缀,如果没有返回值,即void类型 ,函数的前缀加上字母v。
  •  根据文件名,文件中相应的函数定义时也将文件名加到函数命名中,比如tasks.c文件中函数vTaskDelete,函数中的task就是文件名中的task。

3. 宏定义

  •  根据宏定义所在的文件,文件中的宏定义声明时也将文件名加到宏定义中,比如宏定义configUSE_PREEMPTION 是定义在文件 FreeRTOSConfig.h里面。宏定义中的config就是文件名中的config。另外注意,前缀要小写。
  • 除了前缀,其余部分全部大写,同时用下划线分开。

http://www.dtcms.com/a/276660.html

相关文章:

  • 【离线数仓项目】——电商域DWS层开发实战
  • 【AI大模型】部署优化量化:INT8压缩模型
  • 深入理解设计模式:原型模式(Prototype Pattern)
  • 深入解析5G核心网容灾:SMF在PCF全故障下的PDU会话处理机制
  • 绘制气候预报图:利用地理空间技术解锁气候洞察
  • 深大计算机游戏开发 实验二
  • Linux操作系统之进程间通信:共享内存
  • 商编轮巡作为一种策略,旨在帮助商户规避支付平台(如VX. ZFB) 的风控措施。这种策略通过轮换使用不同的商户编号(商编)来减少单一商户因频繁交
  • c++-base
  • ActionPeice-ICML2025-谷歌deepmind-生成式推荐中上下文感知分词技术
  • 深入浅出:RS232、RS485、UART、Modbus与差分信号、共模信号的那些事儿
  • 力扣刷题(第八十五天)
  • dubbo源码学习3-dubbo反射调用服务源码分析
  • Unity开发中常用的洗牌算法
  • 数据结构——散列表
  • 数据结构栈的实现(C语言)
  • C语言--原码、反码、补码转换
  • 知识宇宙-思考篇:AI大模型如何重塑软件开发流程?
  • Sentinel+nacos实现push模式规则持久化
  • Java生产带文字、带边框的二维码
  • matplotlib:饼图、环形图、爆炸式饼图
  • 五、深度学习——CNN
  • Raft 代码分析
  • 基于STM32F412+RT-Thread的智能汽车CAN通信仪表盘
  • 深度学习-卷积化
  • Kerberos5 安装
  • 2025XYD Summer Camp 7.11 模考
  • scrapy项目开发流程
  • jQuery 头像裁剪实现
  • 若依前后端分离Vue3版本接入阿里云OSS