2934|8

120

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

Flash的擦除 [复制链接]

/*************************************************
** 版权:   杭州利尔达科技有限公司
** 文件名: LSD-TEST430F5438-01-flash_segment-erase1.C
** 版本:  IAR 4.11
** 工作环境:
** 作者:   
** 生成日期:
** 功能:        对FLASH实现块擦除
** 相关文件:
** 修改日志
**相关说明:            
*************************************************************/
#include "msp430x54x.h"
void Seg_Erase(void);                                 //块檫除   
void Init_System(void);                              //系统初始化  
void Init_Clk(void);                                //时钟初始化
void Init_PMM(void);                               //电源配置初始化
__root const char Test_Date[10]@0x8000 = {0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x00};
//*************************************************************
void main( void )
{        
      unsigned int i;
      WDTCTL = WDTPW + WDTHOLD;                     //关看门狗
      Init_System();                               //系统初始化
      while(1)
      {
           P1OUT ^= BIT0;
           for( i = 0;i < 60000;i++);
      }
}

/*************************************************
  函数(模块)名称:void  Seg_Erase(void)
  功能:        系统初始化
  本函数(模块)调用的函数(模块)清单:
  调用本函数(模块)的函数(模块)清单:
  输入参数:                                        
  输出参数:              
  函数返回值说明:                 
  使用的资源                   
  其它说明:                
*************************************************/

void Init_System(void)
{
       P1DIR |= BIT0;                     //P1.0为输出
       P1OUT |= BIT0;
       Init_PMM();                        //PMM初始化
       Init_Clk();                       //时钟系统初始化
       Seg_Erase();                     //块擦除初始化
     
}

/*************************************************
  函数(模块)名称:void  Seg_Erase(void)
  功能:        完成FLASH块檫写
  本函数(模块)调用的函数(模块)清单:
  调用本函数(模块)的函数(模块)清单:
  输入参数:                                        
  输出参数:              
  函数返回值说明:                 
  使用的资源                   
  其它说明:         注意:子程序为存储在FLASH中,不需要检查BUSY       
*************************************************/
void Seg_Erase(void)
{   
     char *flase_erase;
     flase_erase = (char *)0X8000;                  //指向要檫写的段地址
     FCTL3 = FWKEY;                                 //清除LOCK
     FCTL1 = FWKEY + ERASE;                         //段檫除
     *flase_erase = 0;                              //空写将0写为1
     FCTL3 = FWKEY + LOCK;                          //LOCK置1,上锁
}

/*************************************************
  函数(模块)名称:void Init_Clk(void)
  功能:        时钟初始化 MCLK = 2MHZ ,ACLK = XT1,SMCLK = 1MHZ
  本函数(模块)调用的函数(模块)清单:
  调用本函数(模块)的函数(模块)清单:
  输入参数:                                        
  输出参数:              
  函数返回值说明:                 
  使用的资源                   
  其它说明:
*************************************************/
void Init_Clk(void)
{
     P7SEL |= 0x03;                                   // XT1起振  
     UCSCTL1 = DCORSEL_2;                             // 设置  DCO 范围  
     UCSCTL3 |= SELREF_2;                             // 配置 Fll参考频率  REFO
     UCSCTL4 = SELM_3 + SELA_0 + SELS_4;              // 配置 MCLK = DCOC,SMCLK =DCODIV,ACLK=XT1
     while (SFRIFG1 & OFIFG)                          //清除 OFIFG,and  XT1OFFG ,DCOFFG
     {
           UCSCTL7 &= ~(  XT1LFOFFG + DCOFFG);
           SFRIFG1 &= ~OFIFG;
     }        
}

/*************************************************
  函数(模块)名称:void Init_PMM(void)
  功能:   F5XX 电源管理初始化
  本函数(模块)调用的函数(模块)清单:
  调用本函数(模块)的函数(模块)清单:
  输入参数:          void                              
  输出参数:           void
函数返回值说明 :void               
  使用的资源                   
  其它说明:      注意: SVSMLRRLX ,PMMCOREVX                  
*************************************************/

void Init_PMM(void)
{
  
     PMMCTL0_H = 0xA5;
     //开PMM电源管理                             
     SVSMLCTL |= SVSMLRRL_2 + SVMLE;
     //配置SVML电压级别
     PMMCTL0 =  PMMPW + PMMCOREV_2;
     //配置内核电压
     while((PMMIFG & SVSMLDLYIFG ) == 0);
     //等待设置完成
     PMMIFG &= ~(SVMLVLRIFG + SVMLIFG + SVSMLDLYIFG);   
     if((PMMIFG & SVMLIFG) != 0)  
     //判断内核电压是否上升到VSVML
     while((PMMIFG & SVMLVLRIFG) == 0);
     //如果没有等待
     SVSMLCTL &= ~SVMLE;  
     //关掉SVML模块
     PMMCTL0_H = 0X00;   
     //锁存配置
}

最新回复

必须回复十次才能团购  详情 回复 发表于 2014-3-10 18:46
 
点赞 关注

回复
举报

120

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
这是TI提供的例子!仿真的时候,LED1不闪烁;数组里面的数没被擦除
 
 

回复

120

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
程序下载结束

111.PNG (75.01 KB, 下载次数: 0)

111.PNG
 
 
 

回复

120

帖子

0

TA的资源

一粒金砂(中级)

4
 
程序执行后

2222.PNG (88.72 KB, 下载次数: 0)

2222.PNG
 
 
 

回复

400

帖子

0

TA的资源

五彩晶圆(中级)

5
 
检查下你仿真器的设置吧。
如果灯不闪烁,可以单步跟一下,看程序停在什么位置。
 
 
 

回复

2781

帖子

419

TA的资源

五彩晶圆(中级)

6
 
单步运行看看
 
 
 

回复

120

帖子

0

TA的资源

一粒金砂(中级)

7
 
现在闪烁拉!!可能是下载出问题啦!!
 
 
 

回复

120

帖子

0

TA的资源

一粒金砂(中级)

8
 
下载出问题啦!现在一切正常啦!!谢谢!!
 
 
 

回复

12

帖子

0

TA的资源

一粒金砂(初级)

9
 
必须回复十次才能团购
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表