GCC does not use #pragma directives; they use function attributes instead. The syntax for marking an interrupt routine is:
// Timer A0 interrupt service routine // #pragma vector=TIMER1_A0_VECTOR // __interrupt __attribute__((interrupt(TIMER1_A0_VECTOR))) void TIMER1_A0_ISR(void) { Beyond changing that, and removing some of the intrinsics that do not currently exist in mspgcc, the TI examples should work with it. Peter On Mon, May 24, 2010 at 6:12 AM, Andres Vahter <andres.vah...@gmail.com>wrote: > Hi, > > I cannot compile TI's MSP430F21x2 examples with mspgcc. > It gives me following error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or > ‘__attribute__’ before ‘void’ > > * Ubuntu 10.04 > * I downloaded mspgcc4 binary from: > http://sourceforge.net/projects/mspgcc4/files/GCC-4.4.2-GDB-7.0-20091124/20091124-msp430-gcc-4.4.2-gdb-7.0-insight-6.8.7z > * I unpacked it and copied to /opt dir > * Then I added following line to .bashrc file: export > PATH="$PATH:/opt/msp430-gcc-4.4.2/bin" > > Actually I'm not sure if I'm using right mspgcc because I have also > mspgcc-tinyos in my machine ( > http://docs.tinyos.net/index.php/Installing_TinyOS_2.1) maybe that might > cause problems. > > Source main.c: > > > //****************************************************************************** > // MSP430F20x1 Demo - Comp_A, Output Reference Voltages on P1.1 > // > // Description: Output Comparator_A reference levels on P1.1. Program will > // cycle through the on-chip comparator_A reference voltages with output > on > // P1.1. Normal mode is LPM0, TA0_ISR will interrupt LPM0. > // ACLK = n/a, MCLK = SMCLK = default DCO > // > // MSP430F20x1 > // ----------------- > // /|\| XIN|- > // | | | > // --|RST XOUT|- > // | | > // | P1.1/CA1|--> Vref > // | | > // > // M. Buccini / L. Westlund > // Texas Instruments Inc. > // December 2005 > // Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.40A > > //****************************************************************************** > > > #include <msp430x20x1.h> > > void delay(void); // Software delay > > void main (void) > { > WDTCTL = WDTPW + WDTHOLD; // Stop WDT > CACTL2 = P2CA4; // CA1/P1.1 = +comp > CCTL0 = CCIE; // CCR0 interrupt enabled > TACTL = TASSEL_2 + ID_3 + MC_2; // SMCLK/8, cont-mode > _EINT(); // enable interrupts > > while (1) // Loop > { > CACTL1 = 0x00; // No reference voltage > _BIS_SR(LPM0_bits); // Enter LPM0 > CACTL1 = CAREF0 + CAON; // 0.25*Vcc, Comp. on > _BIS_SR(LPM0_bits); // Enter LPM0 > CACTL1 = CAREF1 + CAON; // 0.5*Vcc, Comp. on > _BIS_SR(LPM0_bits); // Enter LPM0 > CACTL1 = CAREF1 + CAREF0 + CAON; // 0.55V, Comp. on > _BIS_SR(LPM0_bits); // Enter LPM0 > } > } > > // Timer A0 interrupt service routine > #pragma vector=TIMERA0_VECTOR > __interrupt void Timer_A (void) > { > _BIC_SR_IRQ(LPM0_bits); // Clear LPM0 bits from 0(SR) > } > > > makefile > > # makfile configuration > NAME = leds > OBJECTS = main.o > CPU = msp430x2012 > > CFLAGS = -mmcu=${CPU} -O2 -Wall -g > > #switch the compiler (for the internal make rules) > CC = msp430-gcc-4.4.2 > > .PHONY: all FORCE clean download download-jtag download-bsl dist > > #all should be the first target. it's built when make is run without args > all: ${NAME}.elf ${NAME}.a43 ${NAME}.lst > > #confgigure the next line if you want to use the serial download > download: download-jtag > #download: download-bsl > > #additional rules for files > ${NAME}.elf: ${OBJECTS} > ${CC} -mmcu=${CPU} -o $@ ${OBJECTS} > > ${NAME}.a43: ${NAME}.elf > msp430-objcopy -O ihex $^ $@ > > ${NAME}.lst: ${NAME}.elf > msp430-objdump -dSt $^ >$@ > > download-jtag: all > msp430-jtag -e ${NAME}.elf > > download-bsl: all > msp430-bsl -e ${NAME}.elf > > clean: > rm -f ${NAME}.elf ${NAME}.a43 ${NAME}.lst ${OBJECTS} > > #backup archive > dist: > tar czf dist.tgz *.c *.h *.txt makefile > > #dummy target as dependecy if something has to be build everytime > FORCE: > > #project dependencies > main.o: main.c > > > > If I'm changing CC = msp430-gcc-4.4.2 to CC=msp430-gcc then i got following > error: > > msp430-gcc -mmcu=msp430x2012 -O2 -Wall -g -c -o main.o main.c > main.c:32: warning: return type of `main' is not `int' > main.c:53: warning: ignoring #pragma vector > main.c:54: syntax error before "void" > main.c: In function `Timer_A': > main.c:56: warning: concatenation of string literals with __FUNCTION__ is > deprecated > make: *** [main.o] Error 1 > > > Do I have to change orginal TI example code to get it compile? > Is makefile OK? > Is there something wrong with my mspgcc installation? > > Andres > > ------------------------------------------------------------------------------ > > > _______________________________________________ > Mspgcc-users mailing list > Mspgcc-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/mspgcc-users > >