J'ai un problème avec l'écriture des gestionnaires d'interruption dans le compilateur Keil ARM pour LPC1114. Lorsque j'écris un programme en C ++ et que je spécifie l'option du compilateur --cpp, tout le code des gestionnaires d'interruption disparaît, il est remplacé par une boucle infinie. J'ai écrit un programme simple qui illustre mon problème.
#include "LPC11xx.h" // LPC11xx definitions
#define SYSTICK_DELAY 120000 // for 10 ms systick @ 12MHz osc
void SysTick_Handler(void)
{
__NOP();
}
int main (void)
{
SystemInit(); // from system_LPC11xx.c
SysTick_Config(SYSTICK_DELAY); // from core_cm0.h
// Loop forever
while (1) __NOP();
}
Lorsque j'essaye de compiler ce code avec l'option de compilation --cpp, j'obtiens une boucle infinie en disasm:
SysTick_Handler PROC
EXPORT SysTick_Handler [WEAK]
B .
ENDP
C'est l'endroit où doit être __NOP () du programme ci-dessus. Et il est là lorsque je compile du code avec l'option de compilation --c99 ou sans options supplémentaires. La version Keil MDK est 4.12. Quelqu'un peut-il me dire s'il existe une solution ou une solution?
volatile
.