首页 MSP430单片机flash存储器

MSP430单片机flash存储器

举报
开通vip

MSP430单片机flash存储器MSP430单片机flash存储器 MSP430F149单片机基础知识 1、 FCTL1寄存器 15 8 7 6 5 4 3 2 1 0 安全键值 BLKWRT WRT Reserved Reserved Reserved MERAS ERASE Reserved rw-0 rw-0 r0 r0 r0 rw-0 rw-0 r0 该寄存器定义了Flash模块的擦除和编程的控制位。其中高8位为安全键值,该字段读出的内容总是96H,写入时必须为A5H,否则不能进行操作。 下面分别对低8位进行介绍: BLK...

MSP430单片机flash存储器
MSP430单片机flash存储器 MSP430F149单片机基础知识 1、 FCTL1寄存器 15 8 7 6 5 4 3 2 1 0 安全键值 BLKWRT WRT Reserved Reserved Reserved MERAS ERASE Reserved rw-0 rw-0 r0 r0 r0 rw-0 rw-0 r0 该寄存器定义了Flash模块的擦除和编程的控制位。其中高8位为安全键值,该字段读出的 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 总是96H,写入时必须为A5H,否则不能进行操作。 下面分别对低8位进行介绍: BLKWRT Bit7 按块写模式位。复位值为0,在进行块写操作时,WRT位必须置1;当 设置EMEX位时,BLKWRT自动复位。 0 块写模式关闭; 块写模式开启。 1 WRT Bit6 写模式使能位。复位值为0,当设置EMEX位时,WRT自动复位。 0 不能进行写操作; 写操作允许。 1 MERAS、ERASE Bits2-1 该两位用来控制擦除方式选择位。复位值为0。当设置EMEX位时,这 两位自动复位。 不擦除; 00 01 只擦除单个段; 10 擦除所有的主程序区; 擦除所有的主程序区和信息区。 11 2、 FCTL2寄存器 15 8 7 6 5 4 3 2 1 0 安全键值 FSSELx FNx rw-0 rw-1 rw-0 rw-0 rw-0 rw-0 rw-0 rw-0 该寄存器定义了Flash模块的擦除和编程所需要的时序时错钟。其中高8位为安全键值,该字段读出的内容总是96H,写入时必须为A5H,否则不能进行操作。 下面分别对低8位进行介绍: FSSELx Bit7~6 该两位用来定义Flash模块控制器时钟源的选择。复位值为01。 00 ACLK; 10 SMCLK; 11 SMCLK。 01 MCLK; FNx Bit5~0 这6位定义了分频系数。分频系数为FN5~FN0的值。如当FN5~FN0 的值为2时,其分频系数为3。复位值为1,分频系数为2.。 3、 FCTL3寄存器 15 8 7 6 5 4 3 2 1 0 安全键值 Reserved Reserved EMEX LOCK WAIT ACCVIFG KEYV BUSY r0 r0 rw-0 rw-1 r-1 rw-0 rw-(0) rw-(0) 该寄存器定义了Flash模块的擦除和编程操作的一些标志位。其中高8位为安全键值,该字段读出的内容总是96H,写入时必须为A5H,否则不能进行操作。 下面分别对低8位进行介绍: EMEX Bit5 紧急退出位。当该位为1时,则产即退出对Flash的操作。 LOCK Bit4 保护位。 0 不加锁,可以对Flash操作; 1 加锁,这时不能对Flash进行写和擦除操作。 WAIT Bit3 等待指示位。该位显示Flash正在进行写操作。 0 还没准备好,此时不能进行写操作; 1 Flash准备好下一次写操作。 ACCVIFG Bit2 违反访问中断标志。该位只能软件清零。 0 没有中断挂起; 1 有中断挂起。 KEYV Bit1. 安全值错误标志。 0 安全值正确; 1 安全值错误。 BUSY Bit0 忙标志。 0 不忙; 1 忙。 4、 IE1寄存器 7 6 5 4 3 2 1 0 ACCVIE rw-0 该位是用来允许违反中断访问的控制位。当该位为1时,中断允许;当该位为0时,中断禁止。 下面的程序为具体的写内部Flash的实例,往内部信息段的三个地址写入数据1、2、3,三个地址分别为0x1080、0x1083、0x1085。在芯片写入数据前首先要把Flash擦除,擦除后的Flash数据全部为0xFF,之后才能进行写操作。程序运行后,读者可以通过IAR IDE查看内部Flash的数据。 #include #define uchar unsigned char #define uint unsigned int void write_Seg (unsigned char value,unsigned int add) unsigned char temp[128] void int_clk() { uchar I; BCSCTL1&=~XT2OFF; //打开XT振荡器 BCSCTL2|=SELM1+SELS; //MCLK为8MHz,SMCLK为1MHz { IFG1&=~OFIFG; //清除振荡错误标志 for(i=0;i<100;i++) _nop() //延时等待 } While ((IFG1&OFIFG)!=0); //如果标志为1,则继续循环等待 IFG1&=~OFIFG; } Delay() { Unsigned int i=0; For(i=0;i<=1000;i++) ; } Void eraseFlashSegment(unsignged int add) { Unsigned char *ptrFlash; ptrFlash=(unsignge char *)add; FCTL1= FWKEY+WRASE; //使能擦除位 FCTL3=FWKEY; //清除锁定位 *ptrFlash=0x00; Delay() Delay() FCTL3=FWEY+LOCK; //置锁定位为1 } Void write_Sen(unsigned char value,unsigned int add) { Unsigned char *Flash_prt; //Flash访问指针 Flash_prt=(unsigned char *)add; //初始化指针 FCTL3=FWKEY; //清除锁定位 FCTL1=FWKEY+WRT; //使能写使能位 While(BUSY&FCTL3); *Flash_prt=value; FCTL1=FWKEY; //清除写使能 FCTL3=FWKEY+LOCK; //置锁定位为1 } Void main(void) { WDTCTL=WDTPW+WDTHOLD; //禁止看门狗 Int_clk(); FCTL2=FWKEY+FSSEL0+FN0; //MCLK/2作为Flash操作时序的时钟 Generator eraseFlashSegment(ox1080); //擦除SegmentA Flash write_Seg(1,0x1080); //写地址0x1080为1 write_Seg(2,0x1083); //写地址0x1083为2 write_Seg(3,0x1085); //写地址0x1085为3 while(1); } 通过上面的程序可以看出,只要设置好FCTL1、FCTL2、FCTL3和IE1就可以对Flash模块 进行适当的读/写操作。
本文档为【MSP430单片机flash存储器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_589748
暂无简介~
格式:doc
大小:19KB
软件:Word
页数:0
分类:互联网
上传时间:2017-10-16
浏览量:15