MSP430的Flash操作

原创 2013年12月04日 13:09:37

#include <msp430x14x.h>

#define uint unsigned int
#define uchar unsigned char

/***********************************************************************************************

 精准的延时程序

***********************************************************************************************/

#define CPU_F ((double)8000000.0)
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))

uchar  value;
void write_SegA(char value);
void copy_A2B(void);
/*********************************************************************
      FCTL1:用于控制所有写(编程)或者删除操作的有效位
      FCTL2:主要对进入时序发生器的时钟进行定义
      FCTL3:用于控制FLASH存储器操作,保存相应的状态标志和错误标志
*********************************************************************/

void main(void)
{
  WDTCTL = WDTPW + WDTHOLD;
  FCTL2 = FWKEY + FSSEL_1 + FN_1;//定义原始时钟,W是A5  R 96  选择MCLK,2分频
                                
  value =0;
  while(1)
  {
    write_SegA(value++);//写信息段A
    copy_A2B();         //信息段A复制到信息段B
  }
 
}

/*******************写信息段A******************/
void write_SegA(char value)
{
  char *Flash_ptr;              //定义flash指针
  uint i;
  Flash_ptr = (char *)0x1080;   //定义起始的地址
  FCTL1=FWKEY+ERASE;            //设置允许编程位
  FCTL3=FWKEY;                   //清除LOCK位
  *Flash_ptr = 0;                //空写,启动擦除
  FCTL1=FWKEY+WRT;                //允许写
  for(i=0;i<128;i++)            //写够128个字节
  {
    *Flash_ptr++=value;
  }
  FCTL1=FWKEY;               
  FCTL3=FWKEY+LOCK;           //锁定
}


void copy_A2B(void)
{
  char *Flash_ptrA;
  char *Flash_ptrB;
  uint i;
  Flash_ptrA=(char *)0x1080;
  Flash_ptrB=(char *)0x1000;
  FCTL1=FWKEY+ERASE;            //设置允许编程位
  FCTL3=FWKEY;                     //清除LOCK位
  *Flash_ptrB=0;
  FCTL1=FWKEY+WRT;              //允许写
  for (i=0;i<128;i++)
  {
    *Flash_ptrB++=*Flash_ptrA;
  }
  FCTL1= FWKEY;
  FCTL3=FWKEY+LOCK;         //锁定
}

关于Msp430 Flash型单片机内部Flash的操作——即片内Flash的擦除、写入、读取

1 Msp430Flash型单片机内部Flash存储器介绍 MSP430的Flash存储器是可位、字节、字寻址和编程的存储器。该模块由一个集成控制器来控制编程和擦除的操作。控制器包括三个寄存器,...
  • dumao0620
  • dumao0620
  • 2014年12月03日 21:28
  • 2367

Msp430Flash型单片机内部Flash存储器介绍

1 Msp430Flash型单片机内部Flash存储器介绍 MSP430的Flash存储器是可位、字节、字寻址和编程的存储器。该模块由一个集成控制器来控制编程和擦除的操作。控制器包括三个寄存器,一个...
  • Uncle_GUO
  • Uncle_GUO
  • 2015年01月10日 02:17
  • 1371

MSP430 SD卡SPI读写操作(1) —— SD卡命令

本节介绍SD卡常用命令,包括SD卡的初始化、读、写等操作的命令及其响应的介绍。 首先附上SD相关文档下载地址:https://www.sdcard.org 快速导航: 一、SD卡介绍 二、SD卡寄存器...
  • xinkuokuo
  • xinkuokuo
  • 2016年06月12日 10:25
  • 1524

MSP430的Flash存储器

FLASH存储器的主要功能部件   控制寄存器:控制FLASH存储器的檫除与写入 FLASH存储器阵列:存储体 地址数据锁存器:檫除与编程时执行锁存操作 编程电压发生器:...
  • dut_club
  • dut_club
  • 2013年07月18日 18:46
  • 546

MSP430单片机全局变量与局部变量

 全局变量是存在RAM中的,而局部变量是存在堆栈中的   全局变量是从低地址往高地址存,局部变量是从RAM的高地址往低地址存,如果你定义的变量太多就有可能是溢出了。 在MSP430中,...
  • xizmi
  • xizmi
  • 2014年01月14日 17:18
  • 1674

IAR for MSP430时,如何查看编写代码占用字节数、内存占用情况、堆栈溢出

在tool选项中有个options 里面有message选项 选择ALL  编译完成后,IAR会给出有多少代码和ram被占用。如果要看具体语句占用的容量,需要看汇编后的汇编代码,找C预言对应产生...
  • CATHY_AA
  • CATHY_AA
  • 2016年10月24日 16:09
  • 3342

MSP430的时钟系统问题

MSP430的时钟问题一直是模模糊糊,老是忘记,于是决定写下此文帮助记忆,以下内容均参考网络资料,仅供参考。(MSP430X1XX系列)  该MSP430系列单片机时钟源有3种,分别为:  1.LFX...
  • hanyuwen007
  • hanyuwen007
  • 2014年03月18日 11:27
  • 758

【单片机笔记】STM8S系列单片机FLASH操作

STM8的库函数中已经提供了块操作函数FLASH_ProgramBlock(),但是要进行块操作,还必须进行一系列的配置,否则,程序代码会死在这个函数里边的。     1. 修改stm8s_con...
  • qq997758497
  • qq997758497
  • 2017年10月26日 16:18
  • 155

[MSP430] 1.第一个工程

在这一部分中,我们将介绍CCS集成开发环境的一些基本使用方法,并试着编写一个简单的小程序,实现按键打开LED灯的功能。 TI 的 Launchpad 板本身是完整的 MSP430 开发环境,...
  • Andy_Hsu
  • Andy_Hsu
  • 2014年03月01日 16:34
  • 2555

STM32F系列单片机内部FLASH编程

STM32F系列单片机内部含有较大容量的FLASH存储器
  • WangSanHuai2010
  • WangSanHuai2010
  • 2014年04月11日 13:53
  • 11514
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MSP430的Flash操作
举报原因:
原因补充:

(最多只允许输入30个字)