当前位置:网站首页>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
边栏推荐
- . Net service governance flow limiting middleware -fireflysoft RateLimit
- MLPerf Training v2.0 榜单发布,在同等GPU配置下百度飞桨性能世界第一
- String judgment
- [trio basic tutorial 16 from introduction to proficiency] UDP communication test supplement
- WiFi wpa_ Detailed description of supplicant hostpad interface
- Relationship between line voltage and phase voltage, line current and phase current
- [untitled] record the visual shock of the Winter Olympics and the introduction of the display screen
- UEFI development learning 6 - creation of protocol
- Live555 push RTSP audio and video stream summary (III) flower screen problem caused by pushing H264 real-time stream
- Altium designer learning (I)
猜你喜欢
UEFI development learning 6 - creation of protocol
[trio basic tutorial 16 from introduction to proficiency] UDP communication test supplement
Beijing Winter Olympics opening ceremony display equipment record 3
PMSM dead time compensation
Factors affecting the quality of slip rings in production
Embedded composition and route
Consul installation
C WinForm [help interface - send email] - practice five
[tutorial 19 of trio basic from introduction to proficiency] detailed introduction of trio as a slave station connecting to the third-party bus (anybus PROFIBUS DP...)
Network port usage
随机推荐
Measurement fitting based on Halcon learning [II] meaure_ pin. Hdev routine
Consul installation
Arduino uses nrf24l01+ communication
My-basic application 1: introduction to my-basic parser
Network communication model -- Network OSI tcp/ip layering
UEFI development learning 2 - running ovmf in QEMU
Cadence learning records
Network port usage
Extern keyword function
Hardware and software solution of FPGA key chattering elimination
导电滑环磨损快的原因
Beijing Winter Olympics opening ceremony display equipment record 3
Summary -st2.0 Hall angle estimation
Ten thousand words detailed eight sorting must read (code + dynamic diagram demonstration)
研究发现,跨境电商客服系统都有这五点功能!
Bootloader implementation of PIC MCU
Shape template matching based on Halcon learning [VII] reuse_ model. Hdev routine
Network communication process
Shape template matching based on Halcon learning [vi] find_ mirror_ dies. Hdev routine
Verilog -- state machine coding method