当前位置:网站首页>Naming rules for FreeRTOS
Naming rules for FreeRTOS
2022-07-05 08:06:00 【Car chezi】
List of articles
If it's just touching FreeRTOS, See its name , It's ridiculous , Like a heavenly book . therefore , It is still necessary to understand its naming rules .
Variable
uint32_t The defined variables are prefixed ul. u representative unsigned Unsigned ,l representative long Long integer .
for example :
static portFORCE_INLINE uint32_t Atomic_CompareAndSwap_u32( uint32_t volatile * pulDestination, uint32_t ulExchange, uint32_t ulComparand )
ulExchange,ulComparand this is it
uint16_t The defined variables are prefixed us. u representative unsigned Unsigned ,s representative short Short .
for example :
const uint16_t usStackDepth
uint8_t The defined variables are prefixed uc. u representative unsigned Unsigned ,c representative char Character .
for example :
#if ( configUSE_TASK_NOTIFICATIONS == 1 ) uint32_t ulDummy18[ configTASK_NOTIFICATION_ARRAY_ENTRIES ]; uint8_t ucDummy19[ configTASK_NOTIFICATION_ARRAY_ENTRIES ]; #endif #if ( tskSTATIC_AND_DYNAMIC_ALLOCATION_POSSIBLE != 0 ) uint8_t uxDummy20; #endif
ucDummy19 this is it ;
But I don't understand ,uxDiummy20 Why is it used ux Well ?
int The defined variables are prefixed i.i representative int
for example :
int iTaskErrno;
stdint.h Variable types not defined in the file , When defining variables, you need to prefix x.
for example :
BaseType_t xCoRoutinePreviouslyWoken
MiniListItem_t xListEnd
stdint.h Unsigned variable type not defined in the file , When defining variables, prefix them u, such as UBaseType_t Definition
The variable of should be prefixed ux.for example :
typedef unsigned long UBaseType_t;
UBaseType_t uxPriority;
Enumerating variables will be prefixed e.
for example :
typedef enum { eRunning = 0, /* A task is querying the state of itself, so must be running. */ eReady, /* The task being queried is in a ready or pending ready list. */ eBlocked, /* The task being queried is in the Blocked state. */ eSuspended, /* The task being queried is in the Suspended state, or is in the Blocked state with an infinite time out. */ eDeleted, /* The task being queried has been deleted, but its TCB has not yet been freed. */ eInvalid /* Used as an 'invalid state' value. */ } eTaskState; eTaskState eState;
Pointer variables are prefixed p.
for example :
TCB_t * pxTCB;
uint8_t * pucQueueStorage; // Because it's unsigned , So it is pu
according to MISRA (The Motor Industry Software Reliability Association, The Chinese name is Automobile Industry Software Reliability Association ) Code rules ,char Defined variables can only be used for ASCII character , Prefix usage c.
for example :
char cRxedChar;
according to MISRA Code rules ,**char *** The defined pointer variable can only be used for ASCII character string , Prefix usage pc.
for example :
char *pcStringToSend;
function
Combined with the static Declared function , Prefix the definition prv( word private Abbreviation ).
for example :
static void prvInitialiseCoRoutineLists( void );
Function with return value , According to the data type of the return value , Add the corresponding prefix , If there is no return value , namely void type , Prefix functions with letters v.
for example :
BaseType_t xQueueGenericReset( QueueHandle_t xQueue, BaseType_t xNewQueue ); #define configRUN_TIME_COUNTER_TYPE uint32_t configRUN_TIME_COUNTER_TYPE ulTaskGetIdleRunTimePercent( void ); StackType_t * pxPortInitialiseStack( StackType_t * pxTopOfStack, StackType_t * pxEndOfStack, TaskFunction_t pxCode, void * pvParameters, BaseType_t xRunPrivileged ); const char * pcQueueGetName( QueueHandle_t xQueue );
According to the file name , When defining the corresponding function in the file, the file name may be added to the function name , such as tasks.c Functions in the file
vTaskDelete, Function task Is in the file name task.
Macro definition
According to the file where the macro definition is located , The file name is also added to the macro definition when the macro definition in the file is declared , For example, macro definition
configUSE_PREEMPTION Is defined in the file FreeRTOSConfig.h Inside . In the macro definition config It's Wen
In the piece name config. Also note , Prefix should be lowercase .Except for the prefix , The rest is capitalized , At the same time, separate with underline .
for example :
// include\queue.h #define queueQUEUE_TYPE_SET ( ( uint8_t ) 0U ) // include\list.h #define listINSERT_END( pxList, pxNewListItem ) \ { \ ListItem_t * const pxIndex = ( pxList )->pxIndex; \ ... // include\timers.h #define tmrCOMMAND_EXECUTE_CALLBACK_FROM_ISR ( ( BaseType_t ) -2 ) // include\croutine.h #define crQUEUE_RECEIVE_FROM_ISR( pxQueue, pvBuffer, pxCoRoutineWoken ) \ xQueueCRReceiveFromISR( ( pxQueue ), ( pvBuffer ), ( pxCoRoutineWoken ) )
Conclusion
If you study it carefully FreeRTOS The name of , You will also see that some places do not conform to the above rules .
I don't know what the author thinks , Anyway, I don't like such a name .
Reference material
边栏推荐
- Baiwen 7-day smart home learning experience of Internet of things
- Drive LED -- GPIO control
- C # joint configuration with Halcon
- Live555 push RTSP audio and video stream summary (I) cross compilation
- C, Numerical Recipes in C, solution of linear algebraic equations, LU decomposition source program
- Ble encryption details
- 找不到实时聊天软件?给你推荐电商企业都在用的!
- Network communication model -- Network OSI tcp/ip layering
- Relationship between line voltage and phase voltage, line current and phase current
- 生产中影响滑环质量的因素
猜你喜欢
Ble encryption details
Measurement fitting based on Halcon learning [i] fuse Hdev routine
Halcon's practice based on shape template matching [1]
Soem EtherCAT source code analysis attachment 1 (establishment of communication operation environment)
Introduction of air gap, etc
C, Numerical Recipes in C, solution of linear algebraic equations, LU decomposition source program
Network port usage
C WinForm [help interface - send email] - practice five
Solutions to compilation warnings in Quartus II
Consul installation
随机推荐
The firmware of the connected j-link does not support the following memory access
Some thoughts on extracting perspectives from ealfa and Ebeta
Step motor generates S-curve upper computer
IC software learning
UEFI development learning 3 - create UEFI program
C WinForm [view status bar -- statusstrip] - Practice 2
OLED 0.96 inch test
找不到实时聊天软件?给你推荐电商企业都在用的!
Explain task scheduling based on Cortex-M3 in detail (Part 1)
Live555 push RTSP audio and video stream summary (III) flower screen problem caused by pushing H264 real-time stream
[trio basic from introduction to mastery tutorial 20] trio calculates the arc center and radius through three points of spatial arc
Summary -st2.0 Hall angle estimation
String judgment
Sql Server的存储过程详解
Makefile application
Altium designer 19.1.18 - hide the fly line of a network
WiFi wpa_ Detailed description of supplicant hostpad interface
Volatile of C language
A simple method to prove 1/t Fourier transform
Bluetooth hc-05 pairing process and precautions