Msp430_Flash.C
上传用户:zanguozi01
上传日期:2014-02-19
资源大小:155k
文件大小:3k
源码类别:

GPS编程

开发平台:

Others

  1. /********************************************************
  2. * 文件名:  Msp430_Flash.C
  3. * 创建时间:2005年10月16日
  4. * 创建人:  
  5. * 版本号:  1.00
  6. * 功能:
  7. * 文件属性:特殊文件
  8. * 修改历史:(每条详述)
  9. ********************************************************/
  10. #include <msp430x14x.h>
  11. #include "Msp430_Flash.h"
  12. #include "General.h"
  13. /*
  14. #include "TA_Uart.h"
  15. #include "SPI45DB041.h"
  16. #include "W_Protocol.h"
  17. #include "Handle_Protocol.h"
  18. #include "Uart01.h"
  19. #include "M22_AT.h"
  20. #include "Define_Bit.h"
  21. #include "D_Buffer.h"
  22. #include "Other_Define.h"
  23. #include "Main_Init.h"
  24. #include "Sub_C.h"
  25. #include "Check_GSM.h"
  26. #include "Do_Reset.h"
  27. #include "Do_M22.h"
  28. #include "Do_Handle.h"
  29. #include "Do_GPS.h"
  30. #include "Do_Disp.h"
  31. #include "Do_Other.h"
  32. #include "Do_SRAM.h"
  33. #include "Do_Record.h"
  34. #include "Record_Protocol.h"
  35. */
  36. /********************************************************
  37. * 函数名:Init_OperFlash()
  38. 作用域:外部文件调用
  39. * 功能:
  40. * 参数:
  41. * 返回值:
  42. * 创建人:
  43. ********************************************************/
  44. void Init_OperFlash(void)
  45. {
  46. WDTCTL=WDTPW+WDTHOLD;   //关闭看门狗WDT  ,WDTPW看门狗的口令
  47. FCTL2 = FWKEY + FSSEL1 + FN0;
  48. }
  49. /********************************************************
  50. * 函数名:Write_SegAB()
  51. 作用域:外部文件调用
  52. * 功能:
  53. * 参数:
  54. * 返回值:
  55. * 创建人:
  56. ********************************************************/
  57. void Write_SegAB(unsigned char Address_Flag)
  58. {
  59. char *Flash_ptr;
  60. unsigned int i;
  61. if(Address_Flag==0)
  62. {
  63. Flash_ptr = (char *)0x1080; //初始化指针
  64. }
  65. else if(Address_Flag==1)
  66. {
  67. Flash_ptr = (char *)0x1000; //初始化指针
  68. }
  69. else
  70. {
  71. return;
  72. }
  73. _DINT(); //关闭其他所有中断
  74. FCTL1 = FWKEY + ERASE; //使能擦除操作
  75. FCTL3 = FWKEY; //FLASH解锁
  76. *Flash_ptr = 0; //空写,启动擦除
  77. FCTL1 = FWKEY + WRT; //允许写操作
  78. for(i=0;i<128;i++)
  79. {
  80. *Flash_ptr++=gGeneral_Buffer[i];
  81. }
  82. FCTL1 = FWKEY;
  83. FCTL3 = FWKEY+LOCK; //写完了,锁定
  84. _EINT(); //开启其他所有中断
  85. }
  86. /********************************************************
  87. * 函数名:Erase_SegAB()
  88. 作用域:外部文件调用
  89. * 功能:
  90. * 参数:
  91. * 返回值:
  92. * 创建人:
  93. ********************************************************/
  94. void Read_SegAB(unsigned char Address_Flag)
  95. {
  96. unsigned char *Flash_ptr;
  97. unsigned int i;
  98. if(Address_Flag==0)
  99. {
  100. Flash_ptr = (unsigned char *)0x1080; //初始化指针
  101. }
  102. else if(Address_Flag==1)
  103. {
  104. Flash_ptr = (unsigned char *)0x1000; //初始化指针
  105. }
  106. else
  107. {
  108. return;
  109. }
  110. for(i=0;i<128;i++)
  111. {
  112. gGeneral_Buffer[i]=*Flash_ptr++;
  113. }
  114. }