able to build lpc11u with IAR
clean ending warming with IAR
This commit is contained in:
@@ -350,189 +350,9 @@ static __INLINE void __set_FPSCR(uint32_t fpscr)
|
|||||||
#elif (defined (__ICCARM__)) /*---------------- ICC Compiler ---------------------*/
|
#elif (defined (__ICCARM__)) /*---------------- ICC Compiler ---------------------*/
|
||||||
/* IAR iccarm specific functions */
|
/* IAR iccarm specific functions */
|
||||||
|
|
||||||
#if defined (__ICCARM__)
|
#include <cmsis_iar.h>
|
||||||
#include <intrinsics.h> /* IAR Intrinsics */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#pragma diag_suppress=Pe940
|
#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/
|
||||||
|
|
||||||
/** \brief Enable IRQ Interrupts
|
|
||||||
|
|
||||||
This function enables IRQ interrupts by clearing the I-bit in the CPSR.
|
|
||||||
Can only be executed in Privileged modes.
|
|
||||||
*/
|
|
||||||
#define __enable_irq __enable_interrupt
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief Disable IRQ Interrupts
|
|
||||||
|
|
||||||
This function disables IRQ interrupts by setting the I-bit in the CPSR.
|
|
||||||
Can only be executed in Privileged modes.
|
|
||||||
*/
|
|
||||||
#define __disable_irq __disable_interrupt
|
|
||||||
|
|
||||||
|
|
||||||
/* intrinsic unsigned long __get_CONTROL( void ); (see intrinsic.h) */
|
|
||||||
/* intrinsic void __set_CONTROL( unsigned long ); (see intrinsic.h) */
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief Get ISPR Register
|
|
||||||
|
|
||||||
This function returns the content of the ISPR Register.
|
|
||||||
|
|
||||||
\return ISPR Register value
|
|
||||||
*/
|
|
||||||
static uint32_t __get_IPSR(void)
|
|
||||||
{
|
|
||||||
__ASM("mrs r0, ipsr");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief Get APSR Register
|
|
||||||
|
|
||||||
This function returns the content of the APSR Register.
|
|
||||||
|
|
||||||
\return APSR Register value
|
|
||||||
*/
|
|
||||||
static uint32_t __get_APSR(void)
|
|
||||||
{
|
|
||||||
__ASM("mrs r0, apsr");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief Get xPSR Register
|
|
||||||
|
|
||||||
This function returns the content of the xPSR Register.
|
|
||||||
|
|
||||||
\return xPSR Register value
|
|
||||||
*/
|
|
||||||
static uint32_t __get_xPSR(void)
|
|
||||||
{
|
|
||||||
__ASM("mrs r0, psr"); // assembler does not know "xpsr"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief Get Process Stack Pointer
|
|
||||||
|
|
||||||
This function returns the current value of the Process Stack Pointer (PSP).
|
|
||||||
|
|
||||||
\return PSP Register value
|
|
||||||
*/
|
|
||||||
static uint32_t __get_PSP(void)
|
|
||||||
{
|
|
||||||
__ASM("mrs r0, psp");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief Set Process Stack Pointer
|
|
||||||
|
|
||||||
This function assigns the given value to the Process Stack Pointer (PSP).
|
|
||||||
|
|
||||||
\param [in] topOfProcStack Process Stack Pointer value to set
|
|
||||||
*/
|
|
||||||
static void __set_PSP(uint32_t topOfProcStack)
|
|
||||||
{
|
|
||||||
__ASM("msr psp, r0");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief Get Main Stack Pointer
|
|
||||||
|
|
||||||
This function returns the current value of the Main Stack Pointer (MSP).
|
|
||||||
|
|
||||||
\return MSP Register value
|
|
||||||
*/
|
|
||||||
static uint32_t __get_MSP(void)
|
|
||||||
{
|
|
||||||
__ASM("mrs r0, msp");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief Set Main Stack Pointer
|
|
||||||
|
|
||||||
This function assigns the given value to the Main Stack Pointer (MSP).
|
|
||||||
|
|
||||||
\param [in] topOfMainStack Main Stack Pointer value to set
|
|
||||||
*/
|
|
||||||
static void __set_MSP(uint32_t topOfMainStack)
|
|
||||||
{
|
|
||||||
__ASM("msr msp, r0");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* intrinsic unsigned long __get_PRIMASK( void ); (see intrinsic.h) */
|
|
||||||
/* intrinsic void __set_PRIMASK( unsigned long ); (see intrinsic.h) */
|
|
||||||
|
|
||||||
|
|
||||||
#if (__CORTEX_M >= 0x03)
|
|
||||||
|
|
||||||
/** \brief Enable FIQ
|
|
||||||
|
|
||||||
This function enables FIQ interrupts by clearing the F-bit in the CPSR.
|
|
||||||
Can only be executed in Privileged modes.
|
|
||||||
*/
|
|
||||||
static __INLINE void __enable_fault_irq(void)
|
|
||||||
{
|
|
||||||
__ASM ("cpsie f");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief Disable FIQ
|
|
||||||
|
|
||||||
This function disables FIQ interrupts by setting the F-bit in the CPSR.
|
|
||||||
Can only be executed in Privileged modes.
|
|
||||||
*/
|
|
||||||
static __INLINE void __disable_fault_irq(void)
|
|
||||||
{
|
|
||||||
__ASM ("cpsid f");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* intrinsic unsigned long __get_BASEPRI( void ); (see intrinsic.h) */
|
|
||||||
/* intrinsic void __set_BASEPRI( unsigned long ); (see intrinsic.h) */
|
|
||||||
/* intrinsic unsigned long __get_FAULTMASK( void ); (see intrinsic.h) */
|
|
||||||
/* intrinsic void __set_FAULTMASK(unsigned long); (see intrinsic.h) */
|
|
||||||
|
|
||||||
#endif /* (__CORTEX_M >= 0x03) */
|
|
||||||
|
|
||||||
|
|
||||||
#if (__CORTEX_M == 0x04)
|
|
||||||
|
|
||||||
/** \brief Get FPSCR
|
|
||||||
|
|
||||||
This function returns the current value of the Floating Point Status/Control register.
|
|
||||||
|
|
||||||
\return Floating Point Status/Control register value
|
|
||||||
*/
|
|
||||||
static uint32_t __get_FPSCR(void)
|
|
||||||
{
|
|
||||||
#if (__FPU_PRESENT == 1)
|
|
||||||
__ASM("vmrs r0, fpscr");
|
|
||||||
#else
|
|
||||||
return(0);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief Set FPSCR
|
|
||||||
|
|
||||||
This function assigns the given value to the Floating Point Status/Control register.
|
|
||||||
|
|
||||||
\param [in] fpscr Floating Point Status/Control value to set
|
|
||||||
*/
|
|
||||||
static void __set_FPSCR(uint32_t fpscr)
|
|
||||||
{
|
|
||||||
#if (__FPU_PRESENT == 1)
|
|
||||||
__ASM("vmsr fpscr, r0");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* (__CORTEX_M == 0x04) */
|
|
||||||
|
|
||||||
#pragma diag_default=Pe940
|
|
||||||
|
|
||||||
|
|
||||||
#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/
|
|
||||||
/* GNU gcc specific functions */
|
/* GNU gcc specific functions */
|
||||||
|
|
||||||
/** \brief Enable IRQ Interrupts
|
/** \brief Enable IRQ Interrupts
|
||||||
|
|||||||
@@ -263,193 +263,10 @@ extern void __CLREX(void);
|
|||||||
#elif (defined (__ICCARM__)) /*---------------- ICC Compiler ---------------------*/
|
#elif (defined (__ICCARM__)) /*---------------- ICC Compiler ---------------------*/
|
||||||
/* IAR iccarm specific functions */
|
/* IAR iccarm specific functions */
|
||||||
|
|
||||||
#include <intrinsics.h> /* IAR Intrinsics */
|
#include <cmsis_iar.h>
|
||||||
|
|
||||||
#pragma diag_suppress=Pe940
|
|
||||||
|
|
||||||
/** \brief No Operation
|
|
||||||
|
|
||||||
No Operation does nothing. This instruction can be used for code alignment purposes.
|
|
||||||
*/
|
|
||||||
#define __NOP __no_operation
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief Wait For Interrupt
|
#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/
|
||||||
|
|
||||||
Wait For Interrupt is a hint instruction that suspends execution
|
|
||||||
until one of a number of events occurs.
|
|
||||||
*/
|
|
||||||
static __INLINE void __WFI(void)
|
|
||||||
{
|
|
||||||
__ASM ("wfi");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief Wait For Event
|
|
||||||
|
|
||||||
Wait For Event is a hint instruction that permits the processor to enter
|
|
||||||
a low-power state until one of a number of events occurs.
|
|
||||||
*/
|
|
||||||
static __INLINE void __WFE(void)
|
|
||||||
{
|
|
||||||
__ASM ("wfe");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief Send Event
|
|
||||||
|
|
||||||
Send Event is a hint instruction. It causes an event to be signaled to the CPU.
|
|
||||||
*/
|
|
||||||
static __INLINE void __SEV(void)
|
|
||||||
{
|
|
||||||
__ASM ("sev");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* intrinsic void __ISB(void) (see intrinsics.h) */
|
|
||||||
/* intrinsic void __DSB(void) (see intrinsics.h) */
|
|
||||||
/* intrinsic void __DMB(void) (see intrinsics.h) */
|
|
||||||
/* intrinsic uint32_t __REV(uint32_t value) (see intrinsics.h) */
|
|
||||||
/* intrinsic __SSAT (see intrinsics.h) */
|
|
||||||
/* intrinsic __USAT (see intrinsics.h) */
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief Reverse byte order (16 bit)
|
|
||||||
|
|
||||||
This function reverses the byte order in two unsigned short values.
|
|
||||||
|
|
||||||
\param [in] value Value to reverse
|
|
||||||
\return Reversed value
|
|
||||||
*/
|
|
||||||
static uint32_t __REV16(uint32_t value)
|
|
||||||
{
|
|
||||||
__ASM("rev16 r0, r0");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* intrinsic uint32_t __REVSH(uint32_t value) (see intrinsics.h */
|
|
||||||
|
|
||||||
|
|
||||||
#if (__CORTEX_M >= 0x03)
|
|
||||||
|
|
||||||
/** \brief Reverse bit order of value
|
|
||||||
|
|
||||||
This function reverses the bit order of the given value.
|
|
||||||
|
|
||||||
\param [in] value Value to reverse
|
|
||||||
\return Reversed value
|
|
||||||
*/
|
|
||||||
static uint32_t __RBIT(uint32_t value)
|
|
||||||
{
|
|
||||||
__ASM("rbit r0, r0");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief LDR Exclusive (8 bit)
|
|
||||||
|
|
||||||
This function performs a exclusive LDR command for 8 bit value.
|
|
||||||
|
|
||||||
\param [in] ptr Pointer to data
|
|
||||||
\return value of type uint8_t at (*ptr)
|
|
||||||
*/
|
|
||||||
static uint8_t __LDREXB(volatile uint8_t *addr)
|
|
||||||
{
|
|
||||||
__ASM("ldrexb r0, [r0]");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief LDR Exclusive (16 bit)
|
|
||||||
|
|
||||||
This function performs a exclusive LDR command for 16 bit values.
|
|
||||||
|
|
||||||
\param [in] ptr Pointer to data
|
|
||||||
\return value of type uint16_t at (*ptr)
|
|
||||||
*/
|
|
||||||
static uint16_t __LDREXH(volatile uint16_t *addr)
|
|
||||||
{
|
|
||||||
__ASM("ldrexh r0, [r0]");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief LDR Exclusive (32 bit)
|
|
||||||
|
|
||||||
This function performs a exclusive LDR command for 32 bit values.
|
|
||||||
|
|
||||||
\param [in] ptr Pointer to data
|
|
||||||
\return value of type uint32_t at (*ptr)
|
|
||||||
*/
|
|
||||||
/* intrinsic unsigned long __LDREX(unsigned long *) (see intrinsics.h) */
|
|
||||||
static uint32_t __LDREXW(volatile uint32_t *addr)
|
|
||||||
{
|
|
||||||
__ASM("ldrex r0, [r0]");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief STR Exclusive (8 bit)
|
|
||||||
|
|
||||||
This function performs a exclusive STR command for 8 bit values.
|
|
||||||
|
|
||||||
\param [in] value Value to store
|
|
||||||
\param [in] ptr Pointer to location
|
|
||||||
\return 0 Function succeeded
|
|
||||||
\return 1 Function failed
|
|
||||||
*/
|
|
||||||
static uint32_t __STREXB(uint8_t value, volatile uint8_t *addr)
|
|
||||||
{
|
|
||||||
__ASM("strexb r0, r0, [r1]");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief STR Exclusive (16 bit)
|
|
||||||
|
|
||||||
This function performs a exclusive STR command for 16 bit values.
|
|
||||||
|
|
||||||
\param [in] value Value to store
|
|
||||||
\param [in] ptr Pointer to location
|
|
||||||
\return 0 Function succeeded
|
|
||||||
\return 1 Function failed
|
|
||||||
*/
|
|
||||||
static uint32_t __STREXH(uint16_t value, volatile uint16_t *addr)
|
|
||||||
{
|
|
||||||
__ASM("strexh r0, r0, [r1]");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief STR Exclusive (32 bit)
|
|
||||||
|
|
||||||
This function performs a exclusive STR command for 32 bit values.
|
|
||||||
|
|
||||||
\param [in] value Value to store
|
|
||||||
\param [in] ptr Pointer to location
|
|
||||||
\return 0 Function succeeded
|
|
||||||
\return 1 Function failed
|
|
||||||
*/
|
|
||||||
/* intrinsic unsigned long __STREX(unsigned long, unsigned long) (see intrinsics.h )*/
|
|
||||||
static uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)
|
|
||||||
{
|
|
||||||
__ASM("strex r0, r0, [r1]");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** \brief Remove the exclusive lock
|
|
||||||
|
|
||||||
This function removes the exclusive lock which is created by LDREX.
|
|
||||||
|
|
||||||
*/
|
|
||||||
static __INLINE void __CLREX(void)
|
|
||||||
{
|
|
||||||
__ASM ("clrex");
|
|
||||||
}
|
|
||||||
|
|
||||||
/* intrinsic unsigned char __CLZ( unsigned long ) (see intrinsics.h) */
|
|
||||||
|
|
||||||
#endif /* (__CORTEX_M >= 0x03) */
|
|
||||||
|
|
||||||
#pragma diag_default=Pe940
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#elif (defined (__GNUC__)) /*------------------ GNU Compiler ---------------------*/
|
|
||||||
/* GNU gcc specific functions */
|
/* GNU gcc specific functions */
|
||||||
|
|
||||||
/** \brief No Operation
|
/** \brief No Operation
|
||||||
|
|||||||
@@ -2984,7 +2984,7 @@
|
|||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>CCDiagError</name>
|
<name>CCDiagError</name>
|
||||||
<state></state>
|
<state>Pa050</state>
|
||||||
</option>
|
</option>
|
||||||
<option>
|
<option>
|
||||||
<name>CCObjPrefix</name>
|
<name>CCObjPrefix</name>
|
||||||
@@ -4772,6 +4772,9 @@
|
|||||||
<name>$PROJ_DIR$\..\..\bsp\lpc43xx\CMSIS_LPC43xx_DriverLib\src\system_LPC43xx.c</name>
|
<name>$PROJ_DIR$\..\..\bsp\lpc43xx\CMSIS_LPC43xx_DriverLib\src\system_LPC43xx.c</name>
|
||||||
</file>
|
</file>
|
||||||
</group>
|
</group>
|
||||||
|
<file>
|
||||||
|
<name>$PROJ_DIR$\..\..\bsp\boards\microbuilder\board_rf1ghznode.c</name>
|
||||||
|
</file>
|
||||||
</group>
|
</group>
|
||||||
<group>
|
<group>
|
||||||
<name>tinyusb</name>
|
<name>tinyusb</name>
|
||||||
|
|||||||
@@ -83,6 +83,9 @@
|
|||||||
|
|
||||||
#define TUSB_CFG_OS_TICKS_PER_SECOND 1000
|
#define TUSB_CFG_OS_TICKS_PER_SECOND 1000
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// USB RAM PLACEMENT
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
#ifdef __CODE_RED // compiled with lpcxpresso
|
#ifdef __CODE_RED // compiled with lpcxpresso
|
||||||
#if (TUSB_CFG_MCU == MCU_LPC11UXX) || (TUSB_CFG_MCU == MCU_LPC13UXX)
|
#if (TUSB_CFG_MCU == MCU_LPC11UXX) || (TUSB_CFG_MCU == MCU_LPC13UXX)
|
||||||
#define TUSB_RAM_SECTION ".data.$RAM2"
|
#define TUSB_RAM_SECTION ".data.$RAM2"
|
||||||
|
|||||||
Reference in New Issue
Block a user