27
27
*/
28
28
29
29
#ifndef PORTMACRO_H
30
- #define PORTMACRO_H
30
+ #define PORTMACRO_H
31
31
32
32
/* *INDENT-OFF* */
33
33
#ifdef __cplusplus
48
48
/* The compiler needs to be told functions that are only referenced by pointer
49
49
* are to be included in the build. NOTE: Omitting these lines will result in a
50
50
* run-time crash, not a linker error! */
51
- #pragma funcall vTaskStartScheduler prvIdleTask
52
- #pragma funcall xTimerCreateTimerTask prvTimerTask
51
+ #pragma funcall vTaskStartScheduler prvIdleTask
52
+ #pragma funcall xTimerCreateTimerTask prvTimerTask
53
53
54
54
/* Type definitions. */
55
- #define portCHAR char
56
- #define portFLOAT float
57
- #define portDOUBLE double
58
- #define portLONG long
59
- #define portSHORT short
60
- #define portSTACK_TYPE uint32_t
61
- #define portBASE_TYPE long
62
-
63
- typedef portSTACK_TYPE StackType_t ;
64
- typedef long BaseType_t ;
65
- typedef unsigned long UBaseType_t ;
66
-
67
- #if ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_16_BITS )
68
- typedef uint16_t TickType_t ;
69
- #define portMAX_DELAY ( TickType_t ) 0xffff
70
- #elif ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_32_BITS )
71
- typedef uint32_t TickType_t ;
72
- #define portMAX_DELAY ( TickType_t ) 0xffffffffUL
55
+ #define portCHAR char
56
+ #define portFLOAT float
57
+ #define portDOUBLE double
58
+ #define portLONG long
59
+ #define portSHORT short
60
+ #define portSTACK_TYPE uint32_t
61
+ #define portBASE_TYPE long
62
+
63
+ typedef portSTACK_TYPE StackType_t ;
64
+ typedef long BaseType_t ;
65
+ typedef unsigned long UBaseType_t ;
66
+
67
+ #if ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_16_BITS )
68
+ typedef uint16_t TickType_t ;
69
+ #define portMAX_DELAY ( TickType_t ) 0xffff
70
+ #elif ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_32_BITS )
71
+ typedef uint32_t TickType_t ;
72
+ #define portMAX_DELAY ( TickType_t ) 0xffffffffUL
73
73
74
74
/* 32-bit tick type on a 32-bit architecture, so reads of the tick count do
75
75
* not need to be guarded with a critical section. */
76
- #define portTICK_TYPE_IS_ATOMIC 1
77
- #else
78
- #error configTICK_TYPE_WIDTH_IN_BITS set to unsupported tick type width.
79
- #endif
76
+ #define portTICK_TYPE_IS_ATOMIC 1
77
+ #else
78
+ #error configTICK_TYPE_WIDTH_IN_BITS set to unsupported tick type width.
79
+ #endif
80
80
/*-----------------------------------------------------------*/
81
81
82
82
/* Architecture specifics. */
83
- #define portSTACK_GROWTH ( -1 )
84
- #define portTICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ )
85
- #define portBYTE_ALIGNMENT 8
83
+ #define portSTACK_GROWTH ( -1 )
84
+ #define portTICK_PERIOD_MS ( ( TickType_t ) 1000 / configTICK_RATE_HZ )
85
+ #define portBYTE_ALIGNMENT 8
86
86
/*-----------------------------------------------------------*/
87
87
88
88
/* Scheduler utilities. */
89
- #define portYIELD () \
89
+ #define portYIELD () \
90
90
{ \
91
91
/* Set a PendSV to request a context switch. */ \
92
92
portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT ; \
93
93
\
94
94
/* Barriers are normally not required but do ensure the code is completely \
95
95
* within the specified behaviour for the architecture. */ \
96
- __asm { dsb }; \
97
- __asm { isb }; \
96
+ __asm{ dsb }; \
97
+ __asm{ isb }; \
98
98
}
99
99
100
100
#define portNVIC_INT_CTRL_REG ( *( ( volatile uint32_t * ) 0xe000ed04 ) )
@@ -116,91 +116,87 @@ typedef unsigned long UBaseType_t;
116
116
/*-----------------------------------------------------------*/
117
117
118
118
/* Critical section management. */
119
- extern void vPortEnterCritical ( void );
120
- extern void vPortExitCritical ( void );
121
- #define portDISABLE_INTERRUPTS () CPU_REG_SET( CPU_BASEPRI, configMAX_SYSCALL_INTERRUPT_PRIORITY ); __asm { dsb }; __asm { isb }
122
- #define portENABLE_INTERRUPTS () CPU_REG_SET( CPU_BASEPRI, 0 );
123
- #define portENTER_CRITICAL () vPortEnterCritical()
124
- #define portEXIT_CRITICAL () vPortExitCritical()
125
- #define portSET_INTERRUPT_MASK_FROM_ISR () ulPortRaiseBASEPRI()
126
- #define portCLEAR_INTERRUPT_MASK_FROM_ISR ( x ) CPU_REG_SET( CPU_BASEPRI, x ); /* Barrier instructions not used as this is only used to lower the basepri. */
119
+ extern void vPortEnterCritical ( void );
120
+ extern void vPortExitCritical ( void );
121
+ #define portDISABLE_INTERRUPTS () CPU_REG_SET( CPU_BASEPRI, configMAX_SYSCALL_INTERRUPT_PRIORITY ); __asm{ dsb }; __asm{ isb }
122
+ #define portENABLE_INTERRUPTS () CPU_REG_SET( CPU_BASEPRI, 0 );
123
+ #define portENTER_CRITICAL () vPortEnterCritical()
124
+ #define portEXIT_CRITICAL () vPortExitCritical()
125
+ #define portSET_INTERRUPT_MASK_FROM_ISR () ulPortRaiseBASEPRI()
126
+ #define portCLEAR_INTERRUPT_MASK_FROM_ISR ( x ) CPU_REG_SET( CPU_BASEPRI, x ); /* Barrier instructions not used as this is only used to lower the basepri. */
127
127
128
128
/*-----------------------------------------------------------*/
129
129
130
130
/* Task function macros as described on the FreeRTOS.org WEB site. These are
131
131
* not necessary for to use this port. They are defined so the common demo files
132
132
* (which build with all the ports) will build. */
133
- #define portTASK_FUNCTION_PROTO ( vFunction , pvParameters ) void vFunction( void * pvParameters )
134
- #define portTASK_FUNCTION ( vFunction , pvParameters ) void vFunction( void * pvParameters )
133
+ #define portTASK_FUNCTION_PROTO ( vFunction , pvParameters ) void vFunction( void * pvParameters )
134
+ #define portTASK_FUNCTION ( vFunction , pvParameters ) void vFunction( void * pvParameters )
135
135
/*-----------------------------------------------------------*/
136
136
137
137
/* Tickless idle/low power functionality. */
138
- #ifndef portSUPPRESS_TICKS_AND_SLEEP
139
- extern void vPortSuppressTicksAndSleep ( TickType_t xExpectedIdleTime );
140
- #define portSUPPRESS_TICKS_AND_SLEEP ( xExpectedIdleTime ) vPortSuppressTicksAndSleep( xExpectedIdleTime )
141
- #endif
138
+ #ifndef portSUPPRESS_TICKS_AND_SLEEP
139
+ extern void vPortSuppressTicksAndSleep ( TickType_t xExpectedIdleTime );
140
+ #define portSUPPRESS_TICKS_AND_SLEEP ( xExpectedIdleTime ) vPortSuppressTicksAndSleep( xExpectedIdleTime )
141
+ #endif
142
142
/*-----------------------------------------------------------*/
143
143
144
144
/* Architecture specific optimisations. */
145
- #ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION
146
- #define configUSE_PORT_OPTIMISED_TASK_SELECTION 1
147
- #endif
145
+ #ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION
146
+ #define configUSE_PORT_OPTIMISED_TASK_SELECTION 1
147
+ #endif
148
148
149
- #if configUSE_PORT_OPTIMISED_TASK_SELECTION == 1
149
+ #if configUSE_PORT_OPTIMISED_TASK_SELECTION == 1
150
150
151
151
/* Generic helper function. */
152
- __attribute__( ( always_inline ) ) static inline uint8_t ucPortCountLeadingZeros ( uint32_t ulBitmap )
153
- {
154
- uint8_t ucReturn ;
152
+ __attribute__( ( always_inline ) ) static inline uint8_t ucPortCountLeadingZeros ( uint32_t ulBitmap )
153
+ {
154
+ uint8_t ucReturn ;
155
155
156
- __asm volatile ( "clz %0, %1" : "=r" ( ucReturn ) : "r" ( ulBitmap ) );
156
+ __asm volatile ( "clz %0, %1" : "=r" ( ucReturn ) : "r" ( ulBitmap ) );
157
157
158
- return ucReturn ;
159
- }
158
+ return ucReturn ;
159
+ }
160
160
161
161
/* Check the configuration. */
162
- #if ( configMAX_PRIORITIES > 32 )
163
- #error configUSE_PORT_OPTIMISED_TASK_SELECTION can only be set to 1 when configMAX_PRIORITIES is less than or equal to 32. It is very rare that a system requires more than 10 to 15 difference priorities as tasks that share a priority will time slice.
164
- #endif
162
+ #if ( configMAX_PRIORITIES > 32 )
163
+ #error configUSE_PORT_OPTIMISED_TASK_SELECTION can only be set to 1 when configMAX_PRIORITIES is less than or equal to 32. It is very rare that a system requires more than 10 to 15 difference priorities as tasks that share a priority will time slice.
164
+ #endif
165
165
166
166
/* Store/clear the ready priorities in a bit map. */
167
- #define portRECORD_READY_PRIORITY ( uxPriority , uxReadyPriorities ) ( uxReadyPriorities ) |= ( 1UL << ( uxPriority ) )
168
- #define portRESET_READY_PRIORITY ( uxPriority , uxReadyPriorities ) ( uxReadyPriorities ) &= ~( 1UL << ( uxPriority ) )
167
+ #define portRECORD_READY_PRIORITY ( uxPriority , uxReadyPriorities ) ( uxReadyPriorities ) |= ( 1UL << ( uxPriority ) )
168
+ #define portRESET_READY_PRIORITY ( uxPriority , uxReadyPriorities ) ( uxReadyPriorities ) &= ~( 1UL << ( uxPriority ) )
169
169
170
170
/*-----------------------------------------------------------*/
171
171
172
- #define portGET_HIGHEST_PRIORITY ( uxTopPriority , uxReadyPriorities ) uxTopPriority = ( 31UL - ( uint32_t ) ucPortCountLeadingZeros( ( uxReadyPriorities ) ) )
172
+ #define portGET_HIGHEST_PRIORITY ( uxTopPriority , uxReadyPriorities ) uxTopPriority = ( 31UL - ( uint32_t ) ucPortCountLeadingZeros( ( uxReadyPriorities ) ) )
173
173
174
- #endif /* configUSE_PORT_OPTIMISED_TASK_SELECTION */
174
+ #endif /* configUSE_PORT_OPTIMISED_TASK_SELECTION */
175
175
176
176
/*-----------------------------------------------------------*/
177
177
178
- #ifdef configASSERT
179
- void vPortValidateInterruptPriority ( void );
180
- #define portASSERT_IF_INTERRUPT_PRIORITY_INVALID () vPortValidateInterruptPriority()
181
- #endif
178
+ #ifdef configASSERT
179
+ void vPortValidateInterruptPriority ( void );
180
+ #define portASSERT_IF_INTERRUPT_PRIORITY_INVALID () vPortValidateInterruptPriority()
181
+ #endif
182
182
183
183
/* portNOP() is not required by this port. */
184
- #define portNOP ()
184
+ #define portNOP ()
185
185
186
- BaseType_t xPortIsInsideInterrupt ( void );
186
+ BaseType_t xPortIsInsideInterrupt ( void );
187
187
188
188
/*-----------------------------------------------------------*/
189
189
190
- static inline uint32_t ulPortRaiseBASEPRI ( void )
191
- {
192
- uint32_t ulOriginalBASEPRI ;
193
-
194
- ulOriginalBASEPRI = CPU_REG_GET ( CPU_BASEPRI );
195
- CPU_REG_SET ( CPU_BASEPRI , configMAX_SYSCALL_INTERRUPT_PRIORITY );
196
- __asm {
197
- dsb
198
- };
199
- __asm {
200
- isb
201
- };
202
- return ulOriginalBASEPRI ;
203
- }
190
+ static inline uint32_t ulPortRaiseBASEPRI ( void )
191
+ {
192
+ uint32_t ulOriginalBASEPRI ;
193
+
194
+ ulOriginalBASEPRI = CPU_REG_GET ( CPU_BASEPRI );
195
+ CPU_REG_SET ( CPU_BASEPRI , configMAX_SYSCALL_INTERRUPT_PRIORITY );
196
+ __asm{ dsb };
197
+ __asm{ isb };
198
+ return ulOriginalBASEPRI ;
199
+ }
204
200
/*-----------------------------------------------------------*/
205
201
206
202
/* *INDENT-OFF* */
0 commit comments