27 #error Improper PLATFORM_HEADER
30 #if (__VER__ < 5040005)
31 #error Only IAR EWARM versions later than 5.40.5 are supported
35 #ifndef DOXYGEN_SHOULD_SKIP_THIS
36 #include <intrinsics.h>
38 #if defined (CORTEXM3_STM32W108)
39 #include "micro/cortexm3/stm32w108/regs.h"
40 #include "micro/cortexm3/stm32w108/stm32w108-type.h"
41 #elif defined (CORTEXM3_STM32F103)
42 #include "stm32f10x.h"
44 #error Unknown CORTEXM3 micro
49 #define NVIC_CONFIG "hal/micro/cortexm3/nvic-config.h"
53 #ifdef I_AM_AN_EMULATOR
57 #undef DATA_EMU_REGS_BASE
58 #undef DATA_EMU_REGS_END
59 #undef DATA_EMU_REGS_SIZE
60 #undef I_AM_AN_EMULATOR
61 #undef I_AM_AN_EMULATOR_REG
62 #undef I_AM_AN_EMULATOR_ADDR
63 #undef I_AM_AN_EMULATOR_RESET
64 #undef I_AM_AN_EMULATOR_I_AM_AN_EMULATOR
65 #undef I_AM_AN_EMULATOR_I_AM_AN_EMULATOR_MASK
66 #undef I_AM_AN_EMULATOR_I_AM_AN_EMULATOR_BIT
67 #undef I_AM_AN_EMULATOR_I_AM_AN_EMULATOR_BITS
68 #endif//I_AM_AN_EMULATOR
70 #error MICRO currently not supported for emulator builds.
77 #pragma diag_suppress = pe161
79 #endif // DOXYGEN_SHOULD_SKIP_THIS
93 typedef unsigned char boolean;
94 typedef unsigned char uint8_t;
95 typedef signed char int8_t;
96 typedef unsigned short uint16_t;
97 typedef signed short int16_t;
98 typedef unsigned int uint32_t;
99 typedef signed int int32_t;
100 typedef unsigned int PointerType;
106 #define _HAL_USE_COMMON_PGM_
120 #define BIGENDIAN_CPU FALSE
127 #define NO_STRIPPING __root
134 #define EEPROM errorerror
137 #ifndef __SOURCEFILE__
143 #define __SOURCEFILE__ __FILE__
151 #undef __delay_cycles
158 #define __delay_cycles(x) please_use_halCommonDelayMicroseconds_instead_of_delay_cycles
167 #define DEBUG_LEVEL FULL_DEBUG
169 #define DEBUG_LEVEL BASIC_DEBUG
178 #define APPLICATION_IMAGE_START ((u32) __section_begin("FLASH_IMAGE"))
179 #define APPLICATION_IMAGE_END ((u32) __section_end ("FLASH_IMAGE"))
188 #define halResetWatchdog() halInternalResetWatchDog()
194 #define __attribute__(nothing)
212 #define STACK_FILL_VALUE 0xCDCDCDCD
222 #define RAMFUNC __ramfunc
228 #define NO_OPERATION() __no_operation()
234 #define SET_REG_FIELD(reg, field, value) \
236 reg = ((reg & (~field##_MASK)) | (value << field##_BIT)); \
242 #define simulatedTimePasses()
246 #define simulatedTimePassesMs(x)
250 #define simulatedSerialTimePasses()
256 #define _HAL_USE_COMMON_DIVMOD_
263 #define VAR_AT_SEGMENT(__variableDeclaration, __segmentName) \
264 __variableDeclaration @ __segmentName
266 #define _QUOTEME(a) #a
267 #define QUOTEME(a) _QUOTEME(a)
268 #define ALIGN_VAR(__variableDeclaration, alignment) _Pragma(QUOTEME(data_alignment=alignment)) \
269 __variableDeclaration
281 #define __NO_INIT__ ".noinit"
282 #define __INTVEC__ ".intvec"
283 #define __CSTACK__ "CSTACK"
284 #define __DATA_INIT__ ".data_init"
285 #define __DATA__ ".data"
286 #define __BSS__ ".bss"
287 #define __CONST__ ".rodata"
288 #define __TEXT__ ".text"
289 #define __TEXTRW_INIT__ ".textrw_init"
290 #define __TEXTRW__ ".textrw"
291 #define __FAT__ "FAT" // Fixed address table
292 #define __NVM__ "NVM" //Non-Volatile Memory data storage
302 #pragma segment=__NO_INIT__
303 #pragma segment=__INTVEC__
304 #pragma segment=__CSTACK__
305 #pragma segment=__DATA_INIT__
306 #pragma segment=__DATA__
307 #pragma segment=__BSS__
308 #pragma segment=__CONST__
309 #pragma segment=__TEXT__
310 #pragma segment=__TEXTRW_INIT__
311 #pragma segment=__TEXTRW__
312 #pragma segment=__FAT__
313 #pragma segment=__NVM__
315 #pragma segment="FLASH_IMAGE"
322 void _executeBarrierInstructions(
void);
324 #define _HAL_MPU_UNUSED_
340 #define ATOMIC_LITE(blah) ATOMIC(blah)
341 #define DECLARE_INTERRUPT_STATE_LITE DECLARE_INTERRUPT_STATE
342 #define DISABLE_INTERRUPTS_LITE() DISABLE_INTERRUPTS()
343 #define RESTORE_INTERRUPTS_LITE() RESTORE_INTERRUPTS()
346 #ifndef DOXYGEN_SHOULD_SKIP_THIS
348 #define DECLARE_INTERRUPT_STATE
349 #define DISABLE_INTERRUPTS() do { } while(0)
350 #define RESTORE_INTERRUPTS() do { } while(0)
351 #define INTERRUPTS_ON() do { } while(0)
352 #define INTERRUPTS_OFF() do { } while(0)
353 #define INTERRUPTS_ARE_OFF() (FALSE)
354 #define ATOMIC(blah) { blah }
355 #define HANDLE_PENDING_INTERRUPTS() do { } while(0)
356 #define SET_BASE_PRIORITY_LEVEL(basepri) do { } while(0)
357 #endif // DOXYGEN_SHOULD_SKIP_THIS
360 #ifndef DOXYGEN_SHOULD_SKIP_THIS
366 #define DECLARE_INTERRUPT_STATE uint8_t _emIsrState
375 extern uint8_t _readBasePri(
void);
376 extern void _writeBasePri(uint8_t priority);
380 extern void _enableBasePri(
void);
381 extern uint8_t _disableBasePri(
void);
382 extern boolean _basePriIsDisabled(
void);
386 extern void _setPriMask(
void);
387 extern void _clearPriMask(
void);
388 #endif // DOXYGEN_SHOULD_SKIP_THIS
398 #define DISABLE_INTERRUPTS() \
400 _emIsrState = _disableBasePri(); \
411 #define RESTORE_INTERRUPTS() \
413 _writeBasePri(_emIsrState); \
421 #define INTERRUPTS_ON() \
431 #define INTERRUPTS_OFF() \
433 (void)_disableBasePri(); \
440 #define INTERRUPTS_ARE_OFF() ( _basePriIsDisabled() )
446 #define INTERRUPTS_WERE_ON() (_emIsrState == 0)
452 #define ATOMIC(blah) \
454 DECLARE_INTERRUPT_STATE; \
455 DISABLE_INTERRUPTS(); \
457 RESTORE_INTERRUPTS(); \
468 #define HANDLE_PENDING_INTERRUPTS() \
470 if (INTERRUPTS_ARE_OFF()) { \
490 #define SET_BASE_PRIORITY_LEVEL(basepri) \
492 _writeBasePri(basepri); \
503 #define _HAL_USE_COMMON_MEMUTILS_
532 #define PLATCOMMONOKTOINCLUDE
534 #undef PLATCOMMONOKTOINCLUDE
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.