TODOPIC
Otros Microcontroladores / Dispositivos programables => Microcontroladores ARM => Mensaje iniciado por: juaperser1 en 06 de Octubre de 2019, 15:00:29
-
Buenas, estoy intentando grabar unos datos en la flash del microcontrolador STM32G030C8T6, pero no me termina de funcionar:
las paginas son de 2K y la memoria flash de 64KB.
tengo el siguiente código basico para guardar un dato:
HAL_FLASH_Unlock(); //Desbloquemos la memoria
EraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES; //Indicamos que vamos a borrar paginas de la memoria y no la memoria entera
EraseInitStruct.Page = FLASH_USER_START_ADDR; //Indicamos el inicio de la memoria de usuario
EraseInitStruct.NbPages = 1; //Indicamos el numero de paginas a borrar
HAL_FLASHEx_Erase(&EraseInitStruct, &pagina_error); //Iniciamos el proceso de borrado de la memoria
direccion_guardar=FLASH_USER_START_ADDR;
HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, direccion_guardar, (uint64_t)Parametros.A01);
He probado con bastantes direcciones de memoria inicial a ver si esque estaba pisando el codigo pero nada, el debug se queda colgado justo despues de la linea :
HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, direccion_guardar, (uint64_t)Parametros.A01);
la direccion que he colocado es la 0x0800 F800 que es la ultima pagina de la memoria para este micro.
¿que estoy haciendo mal?
-
Una vez actualizado, descarga y edita el binario a ver lo que ha hecho el programa, pero si se bloquea parece claro que estás escribiendo en la página donde está el programa en ejecución.
-
ya lo he resuelto, resulta que el problema estaba al borrar la hoja no al escribirla, antes las librerias te pedian la direccion de memoria de la pagina a borrar, ahora te piden directamente la pagina que vas a borrar, o sea la 31.
un saludo