This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430G2553:写入信息内存时出现问题

Guru**** 2540720 points
Other Parts Discussed in Thread: MSP430G2553

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/586608/msp430g2553-problem-in-writing-on-information-memory

器件型号:MSP430G2553

你好

我尝试在 msp430g2553的信息存储器中保存少量变量。 我尝试在存储器中写入一些数据
位置01000h 和01001h。

但是、当我写入上面的一个位置时、另一个位置会被擦除。

在这种情况下、我还尝试在子例程 FLASHWRITE1中省略假写入、两个存储器都已更新
成功一次、但第二次当我尝试更新该位置的内容时、不会发生任何情况。

请查找随附的代码。


此致

Dilraj

#include


org 0200h;



;------------------------------------------------------------------
org 0F800h;程序重置
;------------------------------------------------------------------
复位        MOV.w #0280h、SP                         ;初始化 stackpointer
StopWDT      MOV.w #WDTPW+WDTHOLD、&WDTCTL         ;停止 WDT

MOV         #01000h、R8
MOV.b        #010h、r7
调用          FLASHWRITE1

MOV         01001h、R8
MOV.b        #011h、r7
调用         FLASHWRITE1

MOV         #01000h、R8
MOV.b       012h、r7
调用         FLASHWRITE1

MOV        01001h、R8
MOV.b       #013h、r7
调用         FLASHWRITE1
JMP $


============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

============================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
FLASHWRITE1
            MOV     #FWKEY + FSSEL1+FN1、和 FCTL2       ;SMCLK/2
            MOV     #FWKEY、和 FCTL3                  ;清除锁定
            MOV     #FWKEY +擦除、和 FCTL1
            MOV.B   #0、0 (R8)                         ;虚拟写入
            MOV     #FWKEY + WRT、和 FCTL1              ;启用写入
            MOV.B   R7.0 (R8)                         ;将 R7的内容写入 R8指向的内存位置
            MOV     #FWKEY、和 FCTL1                  ;完成。 清除 WRT  
            MOV     #FWKEY + LOCK、和 FCTL3            ; 设置锁定
可重置

--------------------------------------

;------------------------------------------------------------------
延迟
MOV #0FFFH、R10
LV DEC R10;减量 R5
JNZ LV;延迟?
可重置

;------------------------------------------------------------------
;中断矢量
;------------------------------------------------------------------
org 0FFFEh;MSP430复位向量
DW 重置;
结束

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    擦除只能在整个段上完成。 (请参阅用户指南的第7节。)

    您必须重新组织您的程序以仅在需要时擦除段、并写入所有值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果要更改段内的内容、必须将完整段加载到缓冲区中、擦除段、更改缓冲区内的值并将缓冲区写回空段。