Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed SDFileSystem
Diff: main.cpp
- Revision:
- 4:a73ad3555745
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Tue May 04 12:30:39 2021 +0000 @@ -0,0 +1,354 @@ + +#include "mbed.h" +#include "mbed_genie.h" +#include "eeprom_flash.h" +#include "SDFileSystem.h" + +Serial pc(USBTX, USBRX); +DigitalOut myled(LED1); + +void enableEEPROMWriting() +{ + HAL_StatusTypeDef status = HAL_FLASH_Unlock(); + FLASH_PageErase(EEPROM_START_ADDRESS); + CLEAR_BIT(FLASH->CR, FLASH_CR_PER); +} + +void disableEEPROMWriting() +{ + HAL_FLASH_Lock(); +} + +HAL_StatusTypeDef writeEEPROMHalfWord(uint32_t address, uint16_t data) +{ + HAL_StatusTypeDef status; + address = address + EEPROM_START_ADDRESS; + status = HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, address, data); + return status; +} + + +uint16_t readEEPROMHalfWord(uint32_t address) +{ + uint16_t val = 0; + address = address + EEPROM_START_ADDRESS; + val = *(__IO uint16_t*)address; + return val; +} + +int flag = 0; +int chrono0; +int chrono1; +int i=0; +int tab[40]; +int adresse = 0x00; +int lecture; + +void myGenieEventHandler(void) +{ + genieFrame Event; + genieDequeueEvent(&Event); + if(Event.reportObject.cmd == GENIE_REPORT_EVENT) { + + if (Event.reportObject.object == GENIE_OBJ_4DBUTTON) { + if (Event.reportObject.index == 0) { + wait(0.2); + flag=1; + } + if (Event.reportObject.index == 1) { + wait(0.2); + flag=0; + } + if (Event.reportObject.index == 2) { + pc.baud(9600); + char numberstring[120]; + int number; + SDFileSystem sd(PA_7, PA_6, PA_5, PB_6, "sd"); + pc.printf("Bienvenu!\n\r"); + FILE *fp = fopen("/sd/Temps.txt", "r"); + fgets(numberstring, 120, fp); + if(fp == NULL) { + error("Impossible d'ouvrir le fichier pour la lecture\n\r"); + } + sscanf(numberstring, "%d", &number); + pc.printf ("%d\n\r", number); + tab[0]=number; + sscanf(numberstring+3, "%d", &number); + pc.printf ("%d\n\r", number); + tab[1]=number; + sscanf(numberstring+6, "%d", &number); + pc.printf ("%d\n\r", number); + tab[2]=number; + sscanf(numberstring+9, "%d", &number); + pc.printf ("%d\n\r", number); + tab[3]=number; + sscanf(numberstring+12, "%d", &number); + pc.printf ("%d\n\r", number); + tab[4]=number; + sscanf(numberstring+15, "%d", &number); + pc.printf ("%d\n\r", number); + tab[5]=number; + sscanf(numberstring+18, "%d", &number); + pc.printf ("%d\n\r", number); + tab[6]=number; + sscanf(numberstring+21, "%d", &number); + pc.printf ("%d\n\r", number); + tab[7]=number; + sscanf(numberstring+24, "%d", &number); + pc.printf ("%d\n\r", number); + tab[8]=number; + sscanf(numberstring+27, "%d", &number); + pc.printf ("%d\n\r", number); + tab[9]=number; + sscanf(numberstring+30, "%d", &number); + pc.printf ("%d\n\r", number); + tab[10]=number; + sscanf(numberstring+33, "%d", &number); + pc.printf ("%d\n\r", number); + tab[11]=number; + sscanf(numberstring+36, "%d", &number); + pc.printf ("%d\n\r", number); + tab[12]=number; + sscanf(numberstring+39, "%d", &number); + pc.printf ("%d\n\r", number); + tab[13]=number; + sscanf(numberstring+42, "%d", &number); + pc.printf ("%d\n\r", number); + tab[14]=number; + sscanf(numberstring+45, "%d", &number); + pc.printf ("%d\n\r", number); + tab[15]=number; + sscanf(numberstring+48, "%d", &number); + pc.printf ("%d\n\r", number); + tab[16]=number; + sscanf(numberstring+51, "%d", &number); + pc.printf ("%d\n\r", number); + tab[17]=number; + sscanf(numberstring+54, "%d", &number); + pc.printf ("%d\n\r", number); + tab[18]=number; + sscanf(numberstring+57, "%d", &number); + pc.printf ("%d\n\r", number); + tab[19]=number; + sscanf(numberstring+60, "%d", &number); + pc.printf ("%d\n\r", number); + tab[20]=number; + sscanf(numberstring+63, "%d", &number); + pc.printf ("%d\n\r", number); + tab[21]=number; + sscanf(numberstring+66, "%d", &number); + pc.printf ("%d\n\r", number); + tab[22]=number; + sscanf(numberstring+69, "%d", &number); + pc.printf ("%d\n\r", number); + tab[23]=number; + sscanf(numberstring+72, "%d", &number); + pc.printf ("%d\n\r", number); + tab[24]=number; + sscanf(numberstring+75, "%d", &number); + pc.printf ("%d\n\r", number); + tab[25]=number; + sscanf(numberstring+78, "%d", &number); + pc.printf ("%d\n\r", number); + tab[26]=number; + sscanf(numberstring+81, "%d", &number); + pc.printf ("%d\n\r", number); + tab[27]=number; + sscanf(numberstring+84, "%d", &number); + pc.printf ("%d\n\r", number); + tab[28]=number; + sscanf(numberstring+87, "%d", &number); + pc.printf ("%d\n\r", number); + tab[29]=number; + sscanf(numberstring+90, "%d", &number); + pc.printf ("%d\n\r", number); + tab[30]=number; + sscanf(numberstring+93, "%d", &number); + pc.printf ("%d\n\r", number); + tab[31]=number; + sscanf(numberstring+96, "%d", &number); + pc.printf ("%d\n\r", number); + tab[32]=number; + sscanf(numberstring+99, "%d", &number); + pc.printf ("%d\n\r", number); + tab[33]=number; + sscanf(numberstring+102, "%d", &number); + pc.printf ("%d\n\r", number); + tab[34]=number; + sscanf(numberstring+105, "%d", &number); + pc.printf ("%d\n\r", number); + tab[35]=number; + sscanf(numberstring+108, "%d", &number); + pc.printf ("%d\n\r", number); + tab[36]=number; + sscanf(numberstring+111, "%d", &number); + pc.printf ("%d\n\r", number); + tab[37]=number; + sscanf(numberstring+114, "%d", &number); + pc.printf ("%d\n\r", number); + tab[38]=number; + sscanf(numberstring+117, "%d", &number); + pc.printf ("%d\n\r", number); + tab[39]=number; + /* Ecriture*/ + enableEEPROMWriting(); //autorisation d'ecriture dans l'eeprom + + writeEEPROMHalfWord(adresse, tab[0]); + writeEEPROMHalfWord(adresse+2, tab[1]); + writeEEPROMHalfWord(adresse+4, tab[2]); + writeEEPROMHalfWord(adresse+6, tab[3]); + writeEEPROMHalfWord(adresse+8, tab[4]); + writeEEPROMHalfWord(adresse+10, tab[5]); + writeEEPROMHalfWord(adresse+12, tab[6]); + writeEEPROMHalfWord(adresse+14, tab[7]); + writeEEPROMHalfWord(adresse+16, tab[8]); + writeEEPROMHalfWord(adresse+18, tab[9]); + writeEEPROMHalfWord(adresse+20, tab[10]); + writeEEPROMHalfWord(adresse+22, tab[11]); + writeEEPROMHalfWord(adresse+24, tab[12]); + writeEEPROMHalfWord(adresse+26, tab[13]); + writeEEPROMHalfWord(adresse+28, tab[14]); + writeEEPROMHalfWord(adresse+30, tab[15]); + writeEEPROMHalfWord(adresse+32, tab[16]); + writeEEPROMHalfWord(adresse+34, tab[17]); + writeEEPROMHalfWord(adresse+36, tab[18]); + writeEEPROMHalfWord(adresse+38, tab[19]); + writeEEPROMHalfWord(adresse+40, tab[20]); + writeEEPROMHalfWord(adresse+42, tab[21]); + writeEEPROMHalfWord(adresse+44, tab[22]); + writeEEPROMHalfWord(adresse+46, tab[23]); + writeEEPROMHalfWord(adresse+48, tab[24]); + writeEEPROMHalfWord(adresse+50, tab[25]); + writeEEPROMHalfWord(adresse+52, tab[26]); + writeEEPROMHalfWord(adresse+54, tab[27]); + writeEEPROMHalfWord(adresse+56, tab[28]); + writeEEPROMHalfWord(adresse+58, tab[29]); + writeEEPROMHalfWord(adresse+60, tab[30]); + writeEEPROMHalfWord(adresse+62, tab[31]); + writeEEPROMHalfWord(adresse+64, tab[32]); + writeEEPROMHalfWord(adresse+66, tab[33]); + writeEEPROMHalfWord(adresse+68, tab[34]); + writeEEPROMHalfWord(adresse+70, tab[35]); + writeEEPROMHalfWord(adresse+72, tab[36]); + writeEEPROMHalfWord(adresse+74, tab[37]); + writeEEPROMHalfWord(adresse+76, tab[38]); + writeEEPROMHalfWord(adresse+78, tab[39]); + disableEEPROMWriting(); //Interdiction d'ecriture + + /*lecture et affichage*/ + lecture=readEEPROMHalfWord(adresse); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+2); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+4); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+6); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+8); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+10); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+12); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+14); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+16); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+18); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+20); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+22); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+24); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+26); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+28); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+30); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+32); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+34); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+36); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+38); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+40); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+42); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+44); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+46); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+48); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+50); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+52); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+54); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+56); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+58); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+60); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+62); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+64); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+66); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+68); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+70); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+72); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+74); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+76); + pc.printf ("valeur lue: %d\n\r",lecture); + lecture=readEEPROMHalfWord(adresse+78); + pc.printf ("valeur lue: %d\n\r",lecture); + + } + } + } +} + +int main() + +{ + SetupGenie(); + genieAttachEventHandler(&myGenieEventHandler); + genieWriteContrast(15); + + while(1) { + + if (flag == 1) { + printf("%d",flag); + genieWriteObject(GENIE_OBJ_LED_DIGITS, 0x00, chrono0); + genieWriteObject(GENIE_OBJ_LED_DIGITS, 0x01, chrono1); + chrono0=chrono0-1; + chrono1=chrono1+1; + wait (1); + if(chrono0==0) { + chrono0=tab[i]; + printf("%d\n\r",chrono0); + i=i+1; + } + } + else if(flag == 0) { + genieWriteObject(GENIE_OBJ_LED_DIGITS, 0x00, 0); + genieWriteObject(GENIE_OBJ_LED_DIGITS, 0x01, 0); + chrono0=tab[i]; + wait (0.2); + } + } +}