Problema con el puntero en ARM Cortex M4

0

Estoy trabajando en una placa STM32f4 y tengo un problema al pasar el puntero como entrada en una función. Tengo mi principal:

    float32_t var;
    function(&var);

Y mi función:

    void function(float32_t* x){
        *x = 1.;
    }

Pero, curiosamente, cuando depuro este código, la dirección x no se ajusta a la dirección var (la dirección x es 0x00000000 puntero en función) y el valor de var no es 1 después de la función de llamada. ¿Por qué tengo este problema? Además, este tipo de función funcionó de manera eficiente ...

De hecho, encontré un nuevo error, una vez que inicié el depurador, se produce un error

  

No hay fuente disponible para ""

Nunca tuve este mensaje ...

Uso el compilador GCC GNU ARM con estas opciones:

     -mcpu=cortex-m4; -mthumb; -Wall; -ffunction-sections; -g; -O0; -fno-builtin; -DSTM32F407VG; -DSTM32F4XX; -I.;
    
pregunta user2412542

3 respuestas

1

Esto suena como un simple caso de mala vinculación, porque algunos de sus archivos de objeto no están actualizados, mientras que el prototipo de la función ha cambiado.

Intenta limpiar todos tus archivos .o y reconstruye tu fuente.

    
respondido por el Zuu
0

Nadie puede explicar por qué el depurador inicia este error al inicio:

No source available for ""

Thks.

    
respondido por el user2412542
0

Eso suena como que el compilador optimizó tus instrucciones (aunque especificaste -O0, que debería desactivar las optimizaciones).

¿Puedes tratar de definir tu variable como

float32_t var volátil

¿Y luego intentarlo de nuevo?

    
respondido por el Tom L.

Lea otras preguntas en las etiquetas