历史上的今天
返回首页

历史上的今天

今天是: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看内存。

  1. 地址要在一定范围之内,一般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=锁定。解锁之后写入数据,写完了之后锁定保护数据。


推荐阅读

史海拾趣

超霸(GP)公司的发展小趣事

2013年,绿索超容在南京江宁区智能电网产业园正式成立。公司自创立之初,就明确了“制造中国可靠性最高的超级电容”的目标,以及“引领超容行业,做绿色能源模范”的使命。这一清晰的发展定位,为绿索超容后续的技术创新和市场拓展奠定了坚实的基础。公司初期虽然面临资金和技术挑战,但通过不懈努力,逐步建立了自己的研发团队和生产体系。

CITIZEN公司的发展小趣事

西铁城公司的历史可以追溯到1881年,由日本商人户田清创立。最初,公司名为“户田时计商店”,主要从事时计的维修和销售业务。然而,随着时间的推移,户田清意识到仅仅依靠维修和销售并不能满足市场的需求,于是公司开始致力于制造自己的钟表产品。这一转变不仅扩大了公司的业务范围,也为西铁城日后在电子行业中的崛起奠定了基础。

Analog Microelectronics GmbH公司的发展小趣事

近年来,西铁城公司在市场推广方面也进行了一些大胆的尝试。其中,与著名花样滑冰选手羽生结弦的跨界合作尤为引人注目。双方共同推出了限量版签名腕表“四周半”,这一产品以羽生结弦的经典动作为灵感,融合了西铁城独特的光动能技术,展现了技术与艺术的完美结合。这一合作不仅提升了西铁城品牌的市场影响力,也展示了公司在产品创新和市场推广方面的新思路和新策略。

这些故事只是西铁城公司发展过程中的一部分,但它们都充分展示了公司在电子行业中的创新实力和市场竞争力。从最初的维修和销售到如今的全球知名品牌,西铁城的发展历程充满了挑战和机遇,也为我们提供了一个观察电子行业发展和变革的窗口。

DSP Group Inc公司的发展小趣事

DSP Group Inc公司成立于1987年,早期专注于数字信号处理(DSP)技术的研发。在成立之初,公司便认识到了DSP技术在语音处理、音频编解码等领域的巨大潜力。通过不断的技术创新和研发投入,DSP Group逐渐在DSP领域树立了领先地位,为后续的发展奠定了坚实的基础。

长江微电(cjiang)公司的发展小趣事

在发展过程中,长江微电始终坚持自主创新之路。公司注重人才培养和团队建设,积极引进高端人才和先进技术。同时,公司还建立了完善的研发体系和创新机制,鼓励员工发挥创新精神和创造力。通过自主创新,长江微电在电感产品领域取得了多项核心技术和专利成果,为公司的持续发展提供了强大动力。

以上五个故事分别从不同角度展现了长江微电(CJIANG)公司的发展历程和成就。这些故事不仅记录了公司的发展历程和成长轨迹,也彰显了其坚韧不拔、创新求变的精神和追求卓越、服务客户的理念。

Corsair Electrical Connectors Inc公司的发展小趣事

在国内市场取得一定成绩后,Corsair开始将目光投向了更广阔的国际市场。公司积极参加国际电子展会,与海外客户建立联系,拓展销售渠道。同时,Corsair还根据不同国家和地区的市场需求,调整产品策略,提供定制化的解决方案。这些努力使得Corsair的产品逐渐走进了国际市场,公司的影响力也不断扩大。

问答坊 | AI 解惑

电子元件教程

绝缘电阻:理想中的变压器的各组绕组之间及与铁芯之间,在电气理论中是绝缘要求.绝缘电阻是施加电压与产生的电流之比:绝缘电阻/M=施加电压V/产生漏电流A如果电源变压器的绝缘电阻过低,就可能现初、次级之间短路或与外壳适中现象,造成电路工作异常. ...…

查看全部问答>

可有偿哦-有高手能提供点读笔芯片组开发支持吗,或提供芯片原组代码

想做一款点读的东东,好像有好几个厂家的芯片组可以选择,请问谁可以提供开发芯片组(或在哪儿有代理可以买),有源代码更好了,兄弟自己掏点儿银子也行啊,哈哈…

查看全部问答>

请问eVC下使用STL的map编译出错,应该如何处理?

我在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 ...…

查看全部问答>

单片机音乐乐谱提取软件和音乐常识(软件+程序)

今天开辟刚看到,感觉比较好,发上来大家看看。。。。。。…

查看全部问答>

STM32 ADC1_DMA

重温一个旧的例程 ADC 仍然十分简单,将DMA应用于 ADC 这个就比较实用了。 ADC规则数据寄存器(ADC_DR)   0x4001244C /************************************************************** ADC PB1_ADC9  ******************* ...…

查看全部问答>

LM3S8962 ASM问题求助

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连续可调                  输出 ...…

查看全部问答>

晶振时振时不振

采用PIC16F716的电路中,使用20MHz的晶振,结果出现晶振时振时不振的现象,而且起振时的周期也不对,波形不对,会是什么原因造成的,谢谢大家的赐教。…

查看全部问答>

谁能帮我把这个汇编程序 翻译成c程序

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 ;测试 ...…

查看全部问答>