Ho un problema con la scrittura di gestori di interrupt nel compilatore ARM Keil per LPC1114. Quando scrivo un programma in C ++ e specifico l'opzione del compilatore --cpp, tutto il codice dei gestori di interrupt scompare, viene sostituito con un ciclo infinito. Ho scritto un semplice programma che illustra il mio problema.
#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();
}
Quando provo a compilare questo codice con l'opzione del compilatore --cpp ottengo un ciclo infinito nel disasma:
SysTick_Handler PROC
EXPORT SysTick_Handler [WEAK]
B .
ENDP
Questo è il posto dove deve essere __NOP () dal programma precedente. Ed è lì quando sto compilando il codice con l'opzione del compilatore --c99 o senza opzioni aggiuntive. La versione di Keil MDK è la 4.12. Qualcuno può dirmi che c'è qualche soluzione o soluzione?
volatile
al suo interno.