4.2 FreeRTOS的编码标准和命名风格 作为初学者,非常有必要了解 FreeRTOS的编码标准和命名风格,这对于以后的学习大有裨益。 4.2.1 FreeRTOS的编码标准 FreeRTOS核心源码文件的编写遵循 MISRA代码规则,同时支持各种编译器。但考虑到有些编译器的性能还比较 弱,不支持 C语言的新标准 C99和 C11 的一些特性和语法,所以 FreeRTOS的源码中就没有引入 C99和 C11的新特 性,但是有一个例外,源码中有用到头文件 stdint.h(这个文件是 C99标准才引入的)。如果用户使用的编译器没 有这个头文件的话,可以将 FreeRTOS 源码文件中,此路径下 FreeRTOS/Source/include的一个 stdint.readme文 件修改为 stdint.h文件后用于这个编译器。  MISRA MISRA (The Motor Industry Software Reliability Association 汽车工业软件可靠性联会) 是位于英国 的一个跨国汽车工业协会,其成员包括了大部分欧美汽车生产商。其核心使命是为汽车工业提供服务和协助, 帮助厂方开发安全的、高可靠性的嵌入式软件。这个组织最出名的成果是所谓的 MISRA C Coding Standard, 这一标准中包括了 127条 C语言编码标准,通常认为,如果能够完全遵守这些标准,那你的 C代码是易读、可 靠、可移植和易于维护的。现在很多嵌入式开发者都以 MISRA C来衡量自己的编码风格,比如 uC/OS-II就宣 传 99%遵守 MISRA标准。 4.2.2 FreeRTOS的命名规则 初学 FreeRTOS的用户对其变量和函数的命名比较迷惑,下面专门做一下介绍:  变量  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。  size_t 定义的变量也要加上前缀 ux。  枚举变量会加上前缀 e。  指针变量会加上前缀 p,比如 uint16_t定义的指针变量会加上前缀 pus。  根据 MISRA代码规则,char定义的变量只能用于 ASCII字符,前缀使用 c。  根据 MISRA代码规则,char *定义的指针变量只能用于 ASCII字符串,前缀使用 pc。  函数  加上了 static声明的函数,定义时要加上前缀 prv,这个是单词 private的缩写。  带有返回值的函数,根据返回值的数据类型,加上相应的前缀,如果没有返回值,即 void类型 ,函数的前缀加上字母 v。  根据文件名,文件中相应的函数定义时也将文件名加到函数命名中,比如 tasks.c 文件中函数 vTaskDelete,函数中的 task 就是文件名中的 task。  宏定义  根据宏定义所在的文件,文件中的宏定义声明时也将文件名加到宏定义中,比如宏定义 configUSE_PREEMPTION 是定义在文件 FreeRTOSConfig.h 里面。宏定义中的 config就是文件名中的 config。另外注意,前缀要小写。  除了前缀,其余部分全部大写,同时用下划线分开。  char型变量无符号数和有符号数的切换方法 MDK 中可以在 Options->C/C++选项中设置 char型变量为有符号数或者无符号数,默认不选择单选框的情况下 char型变量是 8位无符号数,选上后就是 8位有符号数:
2022-11-11 20:49:35 10.1MB freertos, mcu, 嵌入式
1
Information technology — Generic coding of moving pictures and associated audio information — Part 7: Advanced Audio Coding (AAC); 主要介绍了AAC编码/解码部分
2022-11-11 11:29:57 1.39MB AAC 音频编码解码
1
Easypro绝对值编码器(单圈绝对值编码器或多圈绝对值编码器),具有RS485输出接口,可以与市场上所有PLC的通讯RS485接口连接,读取编码器数据,而不再需要高速计数模块,也可以与单片机的通讯连接直接读取编码器数据。
2022-11-11 08:18:25 77KB PLC Easypro绝对值编码器 单片机 文章
1
在此提交中,我使用 HDL 编码器使用 (5x5) 内核实现了均值滤波器。该设计已成功综合和仿真。
2022-11-10 15:14:05 236KB matlab
1
此软件功能是对图片进行base64编码转换,可以进行图片的文本化,用于纯文本编辑器中添加图片内容,如markdown编辑器可以不引用外部图片,直接把图片的base64文本粘贴到编辑器上,直接可预览到图片
2022-11-10 13:46:25 721KB 图片 base64
1
VideoCompressor 适用于Android的高性能视频压缩器,使用硬件解码和编码API(MediaCodec)。 演示版 用法 调用compressVideoLow,compressVideoMedium和compressVideoHigh,表示3种压缩质量。 VideoCompressTask task = VideoCompress.compressVideoLow(tv_input.getText().toString(), destPath, new VideoCompress.CompressListener() { @Override public void onStart() { //Start Compress }
2022-11-10 00:08:33 1.28MB video compressor mediacodec 附件源码
1
下载网址1: http://download.iguso.com/post-iguso.rar 软件界面图:http://download.iguso.com/post-iguso.jpg 软件简介: 谷搜"全国邮政编码查询系统"满足广大用户的需求。系统不但能查询到每城市的每个区域又能 查询到每个县城每个乡镇的邮政编码。演示:http://postcode.iguso.com v2.0更新查询更精确 http://www.iguso.com
2022-11-09 22:49:26 3.02MB 邮编精确查询
1
(2) 确定弯曲中心的位置 以圆心为矩心,由合力矩定理得 2π 2π S 0 S S 0 (1 cosd d d 2) π A R F e R A R tR F F Rτ τ θθ θ⋅ = = ⋅ = =−∫ ∫ ∫ 解得 2e R= 弯曲中心一定在对称轴上, SF 与对称轴的交点,即由圆心沿 z轴向左量取 2e R= ,就 是弯曲中心。 8.10 习 题 1. 中段开槽的直杆如图 8.44 所示,受轴向力 F 作用;已知: 20mmF = , 25mmh = , 0 10mm,h = 20mmb = ,试求杆内的最大正应力。 图 8.44 2. 如图 8.45 所示,油缸盖与缸体采用 6 个螺栓连接。已知油缸内径 350 mmD = ,油 压 1 MPap = 。若螺栓材料的许用应力[ ] 40 MPaσ = ,试求螺栓的内径。 3. 某拉杆受力如图 8.46所示,已知: 2h b= , 40kNF = ,[ ] 100MPaσ = 。试设计拉杆 截面尺寸 h、b。
2022-11-09 22:14:53 14.93MB 工程力学
1
介绍了编码器的串口通信技术 通过DSP的sci接口 形成高精度的角度采集系统
2022-11-09 21:17:31 197KB 串口通信
1
数据结构实验,实现哈夫曼树的创建,并且实现编码和译码功能,满足任意字符串的输入,输出编码;也可满足任意编码输入,输出字符串。在创建哈夫曼树时输入权值与对应的字符。
2022-11-09 21:07:06 5KB 哈夫曼树 编码 译码 数据结构
1