51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机技术文章 > MSP430单片机 > 详细内容
MSP430读写擦除FLASH程序
发布时间:2009/7/27  阅读次数:1106  字体大小: 【】 【】【
1-简介
       MSP430单片机对片内FLASH的读写操作程序
范例。

2-程序例程
//******************************************************************************

// 参数: wAddr 为地址 , 范围 0x1000~0xFFFF

void ReadFlash(U16 wAddr,U8 *bBuf,U8 bLen)
{
     while (bLen--)
         *bBuf++=*(U8 *)wAddr++;
     return;
}

void WriteFlash(U16 wAddr,U8 *bBuf,U8 bLen)
{
       U8 reg1,reg2;

       reg1=_BIC_SR(GIE);

       reg2=IE1;IE1=0;                                     // 保护原来中断标志,并关闭有关中断。
    
        // 写一个字节数据到指定flash地址
       while (bLen--)
          {
           while (FCTL3&BUSY);                        // 等待以前FLASH操作完成
           FCTL3 = FWKEY;        
           FCTL1 =FWKEY+WRT;                            // 发送写flash命令
           *(U8 *)wAddr++=*bBuf                      // 写数据到指定的flash地址

           while(FCTL3&BUSY);                          // 等待写操作完成
           FCTL1 = FWKEY;          
           FCTL3 = FWKEY+LOCK;                        // 对FLASH内容进行加锁保护
         }

         if(reg1&GIE) _BIS_SR(GIE);            // 恢复中断标志
               IE1=reg2;                  
  
         return;
}

void EraseSectorFlash(U16 wAddr)
{
       U8 reg1,reg2;
  
       reg1=_BIC_SR(GIE);
  
       reg2=IE1;                                              // 保护有关中断标志

       IE1=0;                                                     // 关闭IE1中断

       while(FCTL3&BUSY);                             // 等待FLASH编程结束

       FCTL3 = FWKEY;                                     // 为了准备编程而初始化FLASH控制寄存器3

       FCTL1 = FWKEY+ERASE;                         // 发送FLASH擦除命令

       *(U8 *)wAddr=0;                                   // 启动擦除操作

        while(FCTL3&BUSY);                            // 等待擦除操作完成

         FCTL1 = FWKEY;                                   // 撤销任何对FLASH的操作命令

          FCTL3 = FWKEY+LOCK;                         // 对FLASH内容进行加锁保护

       if(reg1&GIE) _BIS_SR(GIE);            // 恢复中断标志

                 IE1=reg2;
            
          return;
}

//******************************************************************************
//例程结速
我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号