29 #error Improper PLATFORM_HEADER
33 #error Only GNU C versions later than 4.3.2 are supported
35 #if (__GNUC_MINOR__ < 3)
36 #error Only GNU C versions later than 4.3.2 are supported
37 #elif (__GNUC_MINOR__ == 3)
38 #if (__GNUC_PATCHLEVEL__ < 2)
39 #error Only GNU C versions later than 4.3.2 are supported
45 #ifndef DOXYGEN_SHOULD_SKIP_THIS
48 #if defined (CORTEXM3_STM32W108)
49 #include "micro/cortexm3/stm32w108/regs.h"
50 #include "micro/cortexm3/stm32w108/stm32w108-type.h"
52 #error Unknown CORTEXM3 micro
57 #define NVIC_CONFIG "hal/micro/cortexm3/nvic-config.h"
61 #ifdef I_AM_AN_EMULATOR
65 #undef DATA_EMU_REGS_BASE
66 #undef DATA_EMU_REGS_END
67 #undef DATA_EMU_REGS_SIZE
68 #undef I_AM_AN_EMULATOR
69 #undef I_AM_AN_EMULATOR_REG
70 #undef I_AM_AN_EMULATOR_ADDR
71 #undef I_AM_AN_EMULATOR_RESET
72 #undef I_AM_AN_EMULATOR_I_AM_AN_EMULATOR
73 #undef I_AM_AN_EMULATOR_I_AM_AN_EMULATOR_MASK
74 #undef I_AM_AN_EMULATOR_I_AM_AN_EMULATOR_BIT
75 #undef I_AM_AN_EMULATOR_I_AM_AN_EMULATOR_BITS
76 #endif//I_AM_AN_EMULATOR
77 #error MICRO currently not supported for emulator builds.
85 #endif // DOXYGEN_SHOULD_SKIP_THIS
99 typedef unsigned char boolean;
106 typedef unsigned int PointerType;
112 #define _HAL_USE_COMMON_PGM_
126 #define BIGENDIAN_CPU FALSE
140 #define EEPROM errorerror
143 #ifndef __SOURCEFILE__
149 #define __SOURCEFILE__ __FILE__
155 #define assert(condition) do { if (! (condition)) {while (1); }} while(0)
157 do {
if (! (condition)) { \
158 printf (
"Assert failed %s %d\r\n",
__SOURCEFILE__, __LINE__); }}
while(0)
162 #undef __delay_cycles
169 #define __delay_cycles(x) please_use_halCommonDelayMicroseconds_instead_of_delay_cycles
178 #define DEBUG_LEVEL FULL_DEBUG
180 #define DEBUG_LEVEL BASIC_DEBUG
189 #define APPLICATION_IMAGE_START ((u32) &__ApplicationFlashStart)
190 #define APPLICATION_IMAGE_END ((u32) &__ApplicationFlashEnd)
191 extern char __ApplicationFlashStart;
192 extern char __ApplicationFlashEnd;
200 #define halResetWatchdog() halInternalResetWatchDog()
223 #define STACK_FILL_VALUE 0xCDCDCDCD
233 #define RAMFUNC __ramfunc
239 #define NO_OPERATION() __no_operation()
245 #define SET_REG_FIELD(reg, field, value) \
247 reg = ((reg & (~field##_MASK)) | (value << field##_BIT)); \
253 #define simulatedTimePasses()
257 #define simulatedTimePassesMs(x)
261 #define simulatedSerialTimePasses()
267 #define _HAL_USE_COMMON_DIVMOD_
274 #define VAR_AT_SEGMENT(__variableDeclaration, __segmentName) \
275 __variableDeclaration __attribute__ ((section (__segmentName)))
277 #define ALIGN_VAR(__variableDeclaration, alignment) \
278 __variableDeclaration __attribute__ ((aligned(alignment)))
290 #define __NO_INIT__ ".noinit"
291 #define __INTVEC__ ".intvec"
292 #define __CSTACK__ "CSTACK"
293 #define __DATA_INIT__ ".data_init"
294 #define __DATA__ ".data"
295 #define __BSS__ ".bss"
296 #define __CONST__ ".rodata"
297 #define __TEXT__ ".text"
298 #define __TEXTRW_INIT__ ".textrw_init"
299 #define __TEXTRW__ ".textrw"
300 #define __FAT__ "FAT" // Fixed address table
301 #define __NVM__ "NVM" //Non-Volatile Memory data storage
312 #pragma segment=__NO_INIT__
313 #pragma segment=__INTVEC__
314 #pragma segment=__CSTACK__
315 #pragma segment=__DATA_INIT__
316 #pragma segment=__DATA__
317 #pragma segment=__BSS__
318 #pragma segment=__CONST__
319 #pragma segment=__TEXT__
320 #pragma segment=__TEXTRW_INIT__
321 #pragma segment=__TEXTRW__
322 #pragma segment=__FAT__
323 #pragma segment=__NVM__
331 void _executeBarrierInstructions(
void);
347 #define ATOMIC_LITE(blah) ATOMIC(blah)
348 #define DECLARE_INTERRUPT_STATE_LITE DECLARE_INTERRUPT_STATE
349 #define DISABLE_INTERRUPTS_LITE() DISABLE_INTERRUPTS()
350 #define RESTORE_INTERRUPTS_LITE() RESTORE_INTERRUPTS()
353 #ifndef DOXYGEN_SHOULD_SKIP_THIS
355 #define DECLARE_INTERRUPT_STATE
356 #define DISABLE_INTERRUPTS() do { } while(0)
357 #define RESTORE_INTERRUPTS() do { } while(0)
358 #define INTERRUPTS_ON() do { } while(0)
359 #define INTERRUPTS_OFF() do { } while(0)
360 #define INTERRUPTS_ARE_OFF() (FALSE)
361 #define ATOMIC(blah) { blah }
362 #define HANDLE_PENDING_INTERRUPTS() do { } while(0)
363 #define SET_BASE_PRIORITY_LEVEL(basepri) do { } while(0)
364 #endif // DOXYGEN_SHOULD_SKIP_THIS
367 #ifndef DOXYGEN_SHOULD_SKIP_THIS
373 #define DECLARE_INTERRUPT_STATE uint8_t _emIsrState
382 extern uint8_t _readBasePri(
void);
383 extern void _writeBasePri(uint8_t priority);
387 extern void _enableBasePri(
void);
388 extern uint8_t _disableBasePri(
void);
389 extern boolean _basePriIsDisabled(
void);
393 extern void _setPriMask(
void);
394 extern void _clearPriMask(
void);
395 #endif // DOXYGEN_SHOULD_SKIP_THIS
405 #define DISABLE_INTERRUPTS() \
407 _emIsrState = _disableBasePri(); \
418 #define RESTORE_INTERRUPTS() \
420 _writeBasePri(_emIsrState); \
428 #define INTERRUPTS_ON() \
438 #define INTERRUPTS_OFF() \
440 (void)_disableBasePri(); \
447 #define INTERRUPTS_ARE_OFF() ( _basePriIsDisabled() )
453 #define INTERRUPTS_WERE_ON() (_emIsrState == 0)
459 #define ATOMIC(blah) \
461 DECLARE_INTERRUPT_STATE; \
462 DISABLE_INTERRUPTS(); \
464 RESTORE_INTERRUPTS(); \
475 #define HANDLE_PENDING_INTERRUPTS() \
477 if (INTERRUPTS_ARE_OFF()) { \
497 #define SET_BASE_PRIORITY_LEVEL(basepri) \
499 _writeBasePri(basepri); \
510 #define _HAL_USE_COMMON_MEMUTILS_
539 #define PLATCOMMONOKTOINCLUDE
541 #undef PLATCOMMONOKTOINCLUDE
#define __SOURCEFILE__
The SOURCEFILE macro is used by asserts to list the filename if it isn't otherwise defined...
int abs(int I)
Returns the absolute value of I (also called the magnitude of I).
See platform_common for detailed documentation.
void halInternalResetWatchDog(void)
Resets the watchdog timer.