微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Freescale 9S12 系列单片机应用笔记(EETS4K模块) 1

Freescale 9S12 系列单片机应用笔记(EETS4K模块) 1

时间:11-20 来源:互联网 点击:

  1. EEPROM
  2. *@paramaddress,thestartofthe4-bytesectortoaddress
  3. *@return
  4. *NVM_NO_ERR-EEPROMWriteSuccess
  5. *NVM_ODD_ACCESS_ERR-EEPROMWriteError,Addressnotonanevenaddressboundry
  6. *NVM_ACCESS_ERR-EEPROMWriteError,AccessViolation
  7. *NVM_PROTECTION_ERR-EEPROMWriteError,Attemptedtowriteaprotectedsector
  8. */
  9. charEEPROM_Erase_Sector(unsignedintaddress)
  10. {
  11. while(!ESTAT_CBEIF){/*WaitforEEPROMaccesscontrollertobecomeready*/
  12. ;
  13. }
  14. ESTAT=(ESTAT_ACCERR_MASK|ESTAT_PVIOL_MASK);/*Clearexistingerrorflags*/
  15. if(address&0x0001){
  16. return(NVM_ODD_ACCESS_ERR);/*AddressisNOTalignedonanevenboundry?*/
  17. }
  18. (*(unsignedint*)address)=0xFFFF;/*Writethedatatothespecifiedaddress*/
  19. ECMD=ECMD_CMDB6_MASK;/*StoreprogrammingcommandinFCMD*/
  20. ESTAT_CBEIF=1;/*Executethecommand*/
  21. if(ESTAT_ACCERR){/*Checkiftherehasbeenanaccesserror*/
  22. return(NVM_ACCESS_ERR);/*ReturnanAccessErrorcode*/
  23. }
  24. if(ESTAT_PVIOL){/*Checkiftherehasbeenaprotectionerror*/
  25. return(NVM_PROTECTION_ERR);/*ReturnaProtectionErrorcode*/
  26. }
  27. return(NVM_NO_ERR);/*ReturnNoError*/
  28. }
  29. charEEPROM_Erase_All(void)
  30. {
  31. while(!ESTAT_CBEIF){/*WaitforEEPROMaccesscontrollertobecomeready*/
  32. ;
  33. }
  34. ESTAT=(ESTAT_ACCERR_MASK|ESTAT_PVIOL_MASK);/*Clearexistingerrorflags*/
  35. (*(unsignedint*)0x0400)=0xFFFF;/*Writethedatatothespecifiedaddress*/
  36. ECMD=0x41;/*StoreprogrammingcommandinFCMD*/
  37. ESTAT_CBEIF=1;/*Executethecommand*/
  38. if(ESTAT_ACCERR){/*Checkiftherehasbeenanaccesserror*/
  39. return(NVM_ACCESS_ERR);/*ReturnanAccessErrorcode*/
  40. }
  41. if(ESTAT_PVIOL){/*Checkiftherehasbeenaprotectionerror*/
  42. return(NVM_PROTECTION_ERR);/*ReturnaProtectionErrorcode*/
  43. }
  44. return(NVM_NO_ERR);/*ReturnNoError*/
  45. }
  46. /**@briefThisfunctionreadsa16-bitwordfromthespecifiedaddressinEEPROM
  47. *@paramaddress,thestartofthe16-bitdatatoread
  48. *@returnThe16-bitwordstoredinlocationaddress
  49. */
  50. unsignedintEEPROM_Read_Word(unsignedintaddress)
  51. {
  52. unsignedintdata;
  53. while(!ESTAT_CBEIF){/*WaitforEEPROMaccesscontrollertobecomeready*/
  54. ;
  55. }
  56. data=(*(unsignedint*)address);/*Readthedataatlocationaddress*/
  57. return(data);/*Returnthedata*/
  58. }

  1. #include/*commondefinesandmacros*/
  2. #include"derivative.h"/*derivative-specificdefinitions*/
  3. #include"sci.h"
  4. #include"eets4k.h"
  5. voidmain(void)
  6. {
  7. unsignedintdata;
  8. EEPROM_Init(16384);
  9. EnableInterrupts;
  10. EEPROM_Erase_All();
  11. EEPROM_Write_Word(0x400,1234);
  12. data=EEPROM_Read_Word(0x400);
  13. for(;;)
  14. {
  15. _FEED_COP();/*feedsthedog*/
  16. }/*loopforever*/
  17. }


Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top