This program loads values from flash into an array and prints them. If reads 'g' from pc, then adds 20 to every element in the array, and stores it in flash.
Dependencies: mbed FreescaleIAP
main.cpp
- Committer:
- diegocode
- Date:
- 2020-10-25
- Revision:
- 0:48302c51206d
File content as of revision 0:48302c51206d:
#include "mbed.h" #include "FreescaleIAP.h" // cantidad de bytes a guardar const int CANT = 10; DigitalOut myled(LED_GREEN); Serial pc(USBTX, USBRX); int main() { unsigned int status_prg = 0; pc.baud(9600); // address es la dirección donde grabará los 10 bytes // el último sector de FLASH const int address = flash_size() - SECTOR_SIZE; pc.printf("direccion donde graba: %x\r\ncantidad de bytes maximo %d\r\n", address, SECTOR_SIZE); // data apunta al inicio de la dirección donde están grabados loos datos char *data = (char*)address; // erase_sector(address); // pone todo el sector de datos en 0xFF (borrado) // buffer donde cargo datos que leo o que voy a escribir char valores[CANT]; pc.printf("- contenido actual: ---\r\n"); // muestra el contenido de los 10 bytes // carga datos en el vector // si es 0xFF (nunca se utilizó) coloca en el vector un valor default for(int k =0; k < CANT; k++) { if (*(data + k) != 0xFF) valores[k] = *(data + k); else valores[k] = k; pc.printf("%x - %d\r\n", valores[k], valores[k]); } pc.printf("- a grabar: ---\r\n"); bool grabado = false; while(true) { // si se recibe 'g' de la pc... if (pc.getc() == 'g'){ // y no se grabó aun... if (!grabado){ // le suma 20 a cada valor en el vector for(int k =0; k < CANT; k++) { valores[k] = valores[k] + 20; pc.printf("%x - %d\r\n", valores[k], valores[k]); } // borra el espacio de FLASH status_prg = erase_sector(address); pc.printf("borrado 0x%02X-----\r\n", status_prg); // guarda el vector en FLASH status_prg = program_flash(address, (char*)&valores, CANT); pc.printf("grabado 0x%02X-----\r\n", status_prg); grabado = true; } } } }