He definido una matriz global en main.c:
__IO uint8_t data[3]={0,0,0};
luego, yo externo y asigno valores a esta matriz en otro archivo c:
extern __IO uint8_t *data;
INTERRUPT_HANDLER(EXTI_PORTB_IRQHandler, 4){
if(GPIO_ReadInputPin (GPIOB, GPIO_PIN_0) == SET)
data[0] = 1;
if(GPIO_ReadInputPin (GPIOB, GPIO_PIN_1) == RESET);
data[1] = 0;
if(GPIO_ReadInputPin (GPIOB, GPIO_PIN_1) == SET)
data[1] = 1;
if(GPIO_ReadInputPin (GPIOB, GPIO_PIN_2) == RESET);
data[2] = 0;
if(GPIO_ReadInputPin (GPIOB, GPIO_PIN_2) == SET)
data[2] = 1; }
el problema es que no puedo cambiar el valor de 'datos' (obtengo la vara a través del modo de depuración de IAR mediante J-link). Si defino esta matriz como variable local puedo cambiar el valor:
__IO uint8_t data[3]={0,0,0};
INTERRUPT_HANDLER(EXTI_PORTB_IRQHandler, 4){
if(GPIO_ReadInputPin (GPIOB, GPIO_PIN_0) == SET)
data[0] = 1;
if(GPIO_ReadInputPin (GPIOB, GPIO_PIN_1) == RESET);
data[1] = 0;
if(GPIO_ReadInputPin (GPIOB, GPIO_PIN_1) == SET)
data[1] = 1;
if(GPIO_ReadInputPin (GPIOB, GPIO_PIN_2) == RESET);
data[2] = 0;
if(GPIO_ReadInputPin (GPIOB, GPIO_PIN_2) == SET)
data[2] = 1; }
en el pasado, defino una variable global, no una matriz y puedo cambiar externamente el valor en otro archivo. entonces, ¿cuál es la diferencia entre un vriable y una matriz usada como globle?