FreeRTOS学习笔记第1篇——初识FreeRTOS

我采用的书籍是 《FreeRTOS内核实现与应用开发实践指南——基于STM32》。我也是一边学习一边总结笔记,不会很全面,是从我的理解出发,有错误之处烦请大家指正,
  
首先,书的引言部分,我看到有一个名词——裸机编程 ,我百度了一下,在下面做个小结。

裸机编程,顾名思义,就是直接在硬件上编程写代码,或者说编写直接在硬件上运行的程序,没有呢操作系统的支持。

一般我们把没有操作系统的编程环境,成为裸机编程环境,比如在单片机上编程,通过串口直接将程序下载到单片机的芯片内部的Flash中,单片机运行的时候,直接调用我们编程的程序,这时,我们编写的程序一般都有个while(1)的死循环存在,这样程序才能一直保持运行。

文章目录

    • FreeRTOS的编程风格
        • 1、数据类型
        • 2、变量名
        • 3、函数名
        • 4、宏
        • 5、格式

FreeRTOS的编程风格

学习一个RTOS,弄清楚她的编程风格是很重要的,可以提高我们阅读代码的效率。

1、数据类型

在FreeRTOS中,使用的数据类型是标准C里面的数据类型,但是针对不同的处理器,对标准C的数据类型进行了重定义,比如,为char重新定义为portCHAR在,这里的port表示接口。

在FreeRTOS中,int型从不使用,只使用short型和long型,在Cortex-M内核的MCU中,short为16位,long为32位。
FreeRTOS学习笔记第1篇——初识FreeRTOS_第1张图片
在编程时,如果用户没有明确char的符号类型,那么编译器会默认指定char型的变量是无符号或者有符号。所以,在FreeRTOS中,我们都需要明确指定char型变量是有符号还是无符号。在keil中,char默认是无符号的,可以在Options for Target->C/C++中修改。

2、变量名

在FreeRTOS中,定义变量时往往会把变量的类型当作前缀加在变量上,这样一样就知道该变量的类型。

类型 前缀
char c
short s
long l
portBASE_TYPE x
数据结构,任务句柄,队列句柄等 x
无符号型 u
执政变量 p

比如,定义一个无符号char类型变量,前缀为uc,定义一个char类型的指针变量,前缀为pc。

3、函数名

函数名包含了函数返回的类型、函数所在的文件名和函数的功能,如果私有函数,会加一个prv(private)的前缀。特别地,在函数名中加入了函数所在的文件名,这样帮助用户提高寻找函数定义的效率并了解函数作用,比如

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

4、宏

FreeRTOS学习笔记第1篇——初识FreeRTOS_第2张图片
要注意信号量的函数都是一个宏定义,但函数命名方法是遵循函数的命名方法而不是宏定义的方法。

下方是几个通用的宏定义:
FreeRTOS学习笔记第1篇——初识FreeRTOS_第3张图片

5、格式

Tab=4个空格,但是编程最好用空格,不用Tab,移植的时候,如果编译器的Tab设置不一样,那么代码会变乱。

你可能感兴趣的:(FreeRTOS)