您现在的位置: 主页 > MCU > 单片机技术应用 > MSP430读写片内FLASH保存数据 -
本文所属标签:
为本文创立个标签吧:

MSP430读写片内FLASH保存数据 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-06 

[导读]
FLASH型的MSP430单片机都带有信息存储器SegmengA及SegmentB,SegmengA及SegmentB各有128字,SegmentB的地址是:0x01000h到0x107F,SegmentA的地址是:0x01080h到0x010FFh。程序被写入MSP430之后,程序通

FLASH型的MSP430单片机都带有信息存储器SegmengA及SegmentB,SegmengA及SegmentB各有128字,SegmentB的地址是:0x01000h到0x107F,SegmentA的地址是:0x01080h到0x010FFh。程序被写入MSP430之后,程序通过SegmengA及SegmentB就可以保存不掉电数据。注意:每次程序烧写到MSP430时,SegmengA及SegmentB都会被擦除!

本文引用地址: http://www.21ic.com/app/mcu/201806/764605.htm

接下来贴出本文的程序代码,以及程序写入信息存储器之后的FLASH数据:

  1. #include

  2. voidWriteSegment_256(charindex,char*value,charsize);

  3. charReadSegment_256(charindex);

  4. voidmain(void)

  5. {

  6. WDTCTL=WDTPW+WDTHOLD;//Stopwatchdogtimer

  7. FCTL2=FWKEY+FSSEL0+FN0;//MCLK/2forFlashTimingGenerator

  8. charstr1[3]={0xAA,0xBB,0xCC};

  9. WriteSegment_256(0,str1,3);

  10. for(chari=0;i<255;i++)

  11. _NOP();

  12. charstr2[3]={0xBB,0xAA,0xCC};

  13. WriteSegment_256(0,str2,3);

  14. }

  15. #defineSegmentStart0x01000//Segment=0x01000~0x010FF

  16. #defineSegmentSize255//SegmentA+SegmentB=256

  17. //*********************************************************

  18. //读取片内存储的数据

  19. //*********************************************************

  20. charReadSegment_256(charindex)

  21. {

  22. char*flash_ptr=((char*)SegmentStart)+index;

  23. return*flash_ptr;

  24. }

  25. //*****************************************************

  26. //把数组写入数据到片内FLASH,必须先全部擦除再写入

  27. //参数index:保存数组的位置

  28. //参数value:数组的指针

  29. //参数size:数组的大小

  30. //*****************************************************

  31. voidWriteSegment_256(charindex,char*value,charsize)

  32. {

  33. charbuffer[SegmentSize],i=0;

  34. char*flash_ptr=(char*)SegmentStart;

  35. //先读取原FLASH数组

  36. for(i=0;i

  37. buffer[i]=ReadSegment_256(i);

  38. //擦除FLASH,必须

  39. FCTL1=FWKEY+ERASE;//SetErasebit

  40. FCTL3=FWKEY;//ClearLockbit

  41. *flash_ptr=0;//DummywritetoeraseFlashsegment

  42. //把整个数组都写入FLASH

  43. FCTL1=FWKEY+WRT;//SetWRTbitforwriteoperation

  44. for(i=0;i

  45. buffer[index+i]=value[i];

  46. for(i=0;i

  47. *(flash_ptr++)=buffer[i];

  48. FCTL1=FWKEY;//ClearWRTbit

  49. FCTL3=FWKEY+LOCK;//SetLOCKbit

  50. }




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机技术应用 > MSP430读写片内FLASH保存数据 -
 

"MSP430读写片内FLASH保存数据 -"的相关文章

网站地图

围观()