当前位置:网站首页>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 usStackDepthuint8_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; #endifucDummy19 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 xCoRoutinePreviouslyWokenMiniListItem_t xListEndstdint.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 puaccording 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
边栏推荐
- Step motor generates S-curve upper computer
- C WinForm [get file path -- traverse folder pictures] - practical exercise 6
- Gradle composite construction
- Extern keyword function
- Halcon's practice based on shape template matching [2]
- IC software learning
- Markdown tips
- C # joint configuration with Halcon
- Verilog -- state machine coding method
- Relationship between line voltage and phase voltage, line current and phase current
猜你喜欢

A simple method to prove 1/t Fourier transform

Create inf module in AMI code

Network communication model -- Network OSI tcp/ip layering

Record the opening ceremony of Beijing Winter Olympics with display equipment

Improve lighting C program

【论文阅读】2022年最新迁移学习综述笔注(Transferability in Deep Learning: A Survey)

Wifi-802.11 negotiation rate table
![C WinForm [change the position of the form after running] - Practical Exercise 4](/img/f7/ddaf5773295ca6929d39d7aa760d36.jpg)
C WinForm [change the position of the form after running] - Practical Exercise 4
![Halcon's practice based on shape template matching [1]](/img/68/206eed7502fbf108a929aa9365b1ae.jpg)
Halcon's practice based on shape template matching [1]
![[trio basic from introduction to mastery tutorial 20] trio calculates the arc center and radius through three points of spatial arc](/img/9e/2524cbb9b90135c54669ba8d5338b7.jpg)
[trio basic from introduction to mastery tutorial 20] trio calculates the arc center and radius through three points of spatial arc
随机推荐
Consul installation
Basic information commands and functions of kernel development
C WinForm [help interface - send email] - practice five
UEFI development learning 5 - simple use of protocol
Drive LED -- GPIO control
UEFI development learning 4 - getting to know variable services
[trio basic tutorial 16 from introduction to proficiency] UDP communication test supplement
. Net service governance flow limiting middleware -fireflysoft RateLimit
My-basic application 2: my-basic installation and operation
UEFI development learning 2 - running ovmf in QEMU
Shape template matching based on Halcon learning [vi] find_ mirror_ dies. Hdev routine
Some tips for using source insight (solve the problem of selecting all)
Global and Chinese market of rammers 2022-2028: Research Report on technology, participants, trends, market size and share
Bootloader implementation of PIC MCU
Design a clock frequency division circuit that can be switched arbitrarily
Shell脚本基本语法
The browser cannot access Baidu
导电滑环磨损快的原因
Measurement fitting based on Halcon learning [III] PM_ measure_ board. Hdev routine
Pointnet++ classification practice