I have just downloaded uVision v4 (sept 09) and am using the following code:
#include <AT91SAM7S256.h> #define LED (1<<0) // PA0 #define INPUT_PIN (1<<1) // PA1 #define INT_PIN (1<<2) // PA2 static void initialize( void); int main(void) { volatile long input; initialize(); volatile AT91PS_PIO pPIOA = AT91C_BASE_PIOA; while(1) { input = pPIOA->PIO_PDSR; //for debugging. Watch input variable to check if inputs working. pPIOA->PIO_CODR = LED; pPIOA->PIO_CODR = 0x01; pPIOA->PIO_SODR = LED; } } static void initialize(void) { //Turn on the peripheral clock. Without this on, inputs do not actually register in the PDSR register volatile AT91PS_PMC pPMC = AT91C_BASE_PMC; // pointer to PMC data structure pPMC->PMC_PCER = (1<<AT91C_ID_PIOA); // enable Timer0 peripheral clock volatile AT91PS_PIO pPIOA = AT91C_BASE_PIOA; pPIOA->PIO_PER = (LED | INPUT_PIN); // Set PIO to control LED and button. // Initialize Input pPIOA->PIO_ODR = INPUT_PIN ; // Disable outputs for INPUT pins. (not needed as all pins default input on reset) pPIOA->PIO_PPUER = INPUT_PIN; //Pullup Enable (not needed as all pullups are enabled on reset) // Initialize Output pPIOA->PIO_OER = LED; // Enable output for LED. pPIOA->PIO_SODR = LED; // Turn LED off. pPIOA->PIO_PPUDR = LED; //Pullup disable }
and it throws up the following compile error:
main.c(14): error: #268: declaration may not appear after executable statement in block
with lines:
volatile AT91PS_PIO pPIOA = AT91C_BASE_PIOA;
and:
What am I doing wrong. It compiles OK with my other compiler.
Please let me know