历史上的今天
今天是:2025年01月20日(星期一)
2021年01月20日 | MSP430F5529 flash 读写 详解
2021-01-20 来源:eefocus
MSP430F5529falsh的读写
先上代码
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
unsigned long * Flash_ptrD; // 定义指向信息存储器D段的指针
unsigned long value;
OLED_Init();
Flash_ptrD = (unsigned long *) 0x1800; // 初始化指针
value = 0x00000678; // 初始化需写入的长字
FCTL3 = FWKEY; // 清除Flash锁定位
FCTL1 = FWKEY + ERASE; // 设置擦除控制位 #define ERASE (0x0002) #define FWKEY (0xA500)
_DINT(); // Flash操作期间不允许中断,否则将导致不可预计的错误
*Flash_ptrD = 0; // 向段内地址写0,即空写入,启动擦除操作
while(FCTL3 & BUSY); // 等待擦除操作完成
FCTL1 = FWKEY + BLKWRT; // 使能长字写入操作
*Flash_ptrD = value; // 将长字写入目的Flash段
while(FCTL3 & BUSY); // 等待写入操作完成
_EINT(); // 启动全局中断
FCTL1 = FWKEY; // Flash退出写模式
FCTL3 = FWKEY + LOCK; // 恢复Flash的锁定位,保护数据
unsigned long * read_point;
unsigned long read_content = 0;
read_point = (unsigned long *) 0x1800;
read_content = *read_point;
OLED_Write_Num5(0,0,read_content);
while(1); // 主循环,可在此处设置断点查看内存空间
}

1656为 0x00000678的十进制
有OLED会方便一点,没有的话就把OLED有关代码注释了,然后debug看内存。
地址要在一定范围之内,一般MSP430的地址0x1000-0x10FF

这是FCTL1寄存器的说明。
其中15-8bit是密码 #define FWKEY (0xA500) 操作该寄存器的时候需要带上密码
这两位共同决定了擦除模式,需要注意的是当擦除或者写入操作完成时该两位回自动置为0。 0-0不擦除,0-1 segment擦除,1-0 bank擦除,1-1全擦了(qwq)
这是FCTL3寄存器的说明。
其中BUSY表示flash现在是否在忙。
LOCK表示flash是否被锁上(保护)
该位解锁闪存进行写入或擦除。在字节或字写入或擦除操作期间,可以随时设置锁定位,并且操作正常完成。在块写入模式下,如果在BLKWRT=WAIT=1时设置了锁位,BLKWRT和WAIT将复位,并且模式正常结束。0=解锁1=锁定。解锁之后写入数据,写完了之后锁定保护数据。
史海拾趣
|
可有偿哦-有高手能提供点读笔芯片组开发支持吗,或提供芯片原组代码 想做一款点读的东东,好像有好几个厂家的芯片组可以选择,请问谁可以提供开发芯片组(或在哪儿有代理可以买),有源代码更好了,兄弟自己掏点儿银子也行啊,哈哈… 查看全部问答> |
|
我在eVC下使用STL的map,会有这样的编译错误: error LNK2019: unresolved external symbol \"public: __thiscall std::_Lockit::~_Lockit(void)\" error LNK2019: unresolved external symbol \"public: __thiscall std::_Lockit::_Lockit(void ...… 查看全部问答> |
|
重温一个旧的例程 ADC 仍然十分简单,将DMA应用于 ADC 这个就比较实用了。 ADC规则数据寄存器(ADC_DR) 0x4001244C /************************************************************** ADC PB1_ADC9 ******************* ...… 查看全部问答> |
|
LM3S8962, ASM问题求助 为什么以下代码可以正常运行: OSIntCtxSw PUSH {R4, R5} LDR R4, =NVIC_INT_CTRL ; trigger the PendSV exception LDR R5, =NVIC_PENDSVSET STR R5, [R4] POP {R4, R5} BX LR NOP 但如果改为以下就出错: OSI ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 04:21 编辑 基本有求:电压增益大于60DB,输入电压的有效值小于10mv,电压增益可以再0到60连续可调 输出 ...… 查看全部问答> |
|
ORG 0000H LJMP START ORG 0040H START: MOV SP,#60H MOV DPTR,#0000H ;置外部RAM读写地址 MOV A,#55H ;测试的数据一 MOV B,A MOVX @DPTR,A ;写外部RAM MOVX A,@DPTR ;读外部RAM XRL A,B ;比较读回的数据 JNZ ERROR MOV A,#0AAH ;测试 ...… 查看全部问答> |




