li lei / eeprom
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers eeprom.cpp Source File

eeprom.cpp

00001 #include "eeprom.h"
00002 
00003 
00004 Eeprom::Eeprom()
00005 {
00006     
00007 }
00008 
00009 
00010 unsigned int Eeprom::eeprom_countor_read(void)
00011 {
00012     unsigned int eeproma,eepromshuil;
00013     
00014     for(eeproma=0;eeproma<9;eeproma++)
00015     {
00016         if(EEPROM_VALUE_SHUILIANGDECIMAL(eeproma)!=EEPROM_MARK_SHUILDECIMAL)      
00017             break;
00018     }
00019     
00020     eepromshuil=EEPROM_VALUE_SHUILIANGMAIN;
00021     eepromshuil+=eeproma;
00022     
00023     return (unsigned short)eepromshuil;
00024 }
00025 
00026 
00027 unsigned int Eeprom::eeprom_countor_write(unsigned int watervalue)
00028 {
00029     unsigned int eepromb;
00030     
00031     /*
00032     /FLASH_ErasePage(EEPROM_ADDR_PAGE0);
00033     FLASH_ErasePage(EEPROM_ADDR_PAGE1); 
00034     FLASH_ErasePage(EEPROM_ADDR_SHUILIANGMAIN);
00035     
00036     HAL_FLASH_Program(1, EEPROM_ADDR_SHUILIANGMAIN, eepromshuil);
00037     */
00038         
00039     return eepromb;
00040 }
00041 
00042 unsigned int Eeprom::eeprom_countor_addone(void)
00043 {
00044     unsigned int eepromb,eeproma,eepromshuil;
00045     
00046     __disable_irq();
00047     
00048     eepromb=HAL_FLASH_Unlock();
00049     
00050     for(eeproma=0;eeproma<10;eeproma++)
00051     {
00052         if(EEPROM_VALUE_SHUILIANGDECIMAL(eeproma)!=EEPROM_MARK_SHUILDECIMAL)      
00053             break;  
00054 
00055     }
00056     //pc.printf("eeproma=%d\n",eeproma);
00057        
00058     if(eeproma>8)
00059     {
00060         eepromshuil=EEPROM_VALUE_SHUILIANGMAIN;
00061         eepromshuil+=10;
00062              
00063         for(eepromb=0;eepromb<9;eepromb++)
00064         {
00065             HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, EEPROM_ADDR_PAGE1+4*eepromb, 0);
00066             wait(0.02);
00067         }
00068         
00069         eepromb=HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, EEPROM_ADDR_SHUILIANGMAIN, 0);
00070         wait(0.02);
00071         eepromb=HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, EEPROM_ADDR_SHUILIANGMAIN, eepromshuil);
00072         wait(0.02);
00073     }
00074     else
00075     {
00076         eepromb=HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, EEPROM_ADDR_SHUILIANGDECIMAL+eeproma*4, EEPROM_MARK_SHUILDECIMAL);    
00077         wait(0.02);
00078     }
00079                 
00080     eepromb=HAL_FLASH_Lock();
00081     
00082     __enable_irq();
00083     
00084     return eepromb;
00085 }