6350|6

7

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

跪求:MSP430如何将一个内存单元中的数据读取至数组中? [复制链接]

比如我想将内存单元0300-0310中的数据取出,将每一个数据对应赋值给RAM数组,如果用C语言来操作,如何实现?

 

如果将取出的数据进行相应的操作,将操作后的数据如何赋给0300-0310地址中?

 

请高手帮忙写一下,谢谢啦

最新回复

谢谢分享。。。。  详情 回复 发表于 2018-2-6 21:29
 
点赞 关注

回复
举报

69

帖子

0

TA的资源

纯净的硅(初级)

沙发
 
你好,
     那就使用指针咯。呵呵。
 
 

回复

121

帖子

0

TA的资源

纯净的硅(中级)

板凳
 

直接把例程发给你吧

/*******************************************************************************
文件名称:Flash.c
功能描述:
*******************************************************************************/
#include <msp430x14x.h>

int wordbuf[];
char bytebuf[];

/*******************************************************************************
函数名称:Flash_Init
功    能:初始化Flash
参    数:无
返回值  :无
调用模块:main
*******************************************************************************/
void Flash_Init()
{
 FCTL2 = FWKEY + FSSEL0 + FN0;      // MCLK/2 for Flash Timing Generator
}

/*******************************************************************************
函数名称:Flash_Erase
功    能:段擦除Flash
参    数:无
返回值  :无
调用模块:
*******************************************************************************/
void Flash_Erase(int *addr)
{
    while(FCTL3 & BUSY);             // 等待空闲
    FCTL3 = FWKEY;                     // 清除 "Lock"
    FCTL1 = FWKEY + ERASE;             // 准备擦除             
    *addr = 0;                         // 擦除,写任意数均可
    FCTL3 = FWKEY + LOCK;              // 置“LOCK”             
}

 
个人签名很高兴来到EEW。希望和大家相互学习,共同进步!
 
 

回复

121

帖子

0

TA的资源

纯净的硅(中级)

4
 

/*******************************************************************************
函数名称:Flash_Write_Word
功    能:字,写Flash
参    数:addr--写地址
    buf--要写数据的首地址
    len--数据长度
返回值  :无
调用模块:
*******************************************************************************/
void Flash_Write_Word(int *addr, int *buf, int len)
{
    unsigned int cnt;
 
    while(FCTL3 & BUSY);             // 等待空闲
    FCTL3 = FWKEY;                     // 清除 "Lock"
    FCTL1 = FWKEY + ERASE;             // 准备擦除             
    *addr = 0;                         // 擦除,写任意数均可
    FCTL3 = FWKEY + LOCK;              // 置“LOCK”
 
    while(FCTL3 & BUSY);             // 等待Flash空闲
    FCTL3 = FWKEY;                     // 清除“LOCK”标识
    FCTL1 = FWKEY + WRT;               // 准备写                     
    for(cnt=0; cnt<len; cnt++)
    {
        *(addr + cnt) = *(buf + cnt);   // 写数据
    }
    FCTL3 = FWKEY + LOCK;              // Lock           
}

/*******************************************************************************
函数名称:Flash_Read_Word
功    能:字,读Flash
参    数:addr--读地址
    wordbuf--存储读取的数据
    len--数据长度
返回值  :无
调用模块:
*******************************************************************************/
void Flash_Read_Word(int *addr, int *wordbuf, int len)
{
    unsigned int cnt;
   
    while(FCTL3 & BUSY);                 // 等待flash空闲
    for(cnt = 0; cnt < len; cnt++)
    {
        *(wordbuf + cnt) = *(addr + cnt);   // 读数据
    }
    FCTL3 = FWKEY + LOCK;                   // Lock      
}

/*******************************************************************************
函数名称:Flash_Write_Byte
功    能:字节,写Flash
参    数:addr--写地址
    buf--要写数据的首地址
    len--数据长度
返回值  :无
调用模块:
*******************************************************************************/
void Flash_Write_Byte(char *addr, char *buf, int len)
{
    unsigned int cnt;
 
    while(FCTL3 & BUSY);             // 等待空闲
    FCTL3 = FWKEY;                     // 清除 "Lock"
    FCTL1 = FWKEY + ERASE;             // 准备擦除             
    *addr = 0;                         // 擦除,写任意数均可
    FCTL3 = FWKEY + LOCK;              // 置“LOCK”
 
    while(FCTL3 & BUSY);             // 等待Flash空闲
    FCTL3 = FWKEY;                     // 清除“LOCK”标识
    FCTL1 = FWKEY + WRT;               // 准备写                     
    for(cnt=0; cnt<len; cnt++)
    {
        *(addr + cnt) = *(buf + cnt);  // 写数据
    }
    FCTL3 = FWKEY + LOCK;             // Lock           
}

/*******************************************************************************
函数名称:Flash_Read_Byte
功    能:字节,读Flash
参    数:addr--读地址
    wordbuf--存储读取的数据
    len--数据长度
返回值  :无
调用模块:
*******************************************************************************/
void Flash_Read_Byte(char *addr, char *bytebuf, int len)
{
    unsigned int cnt;
   
    while(FCTL3 & BUSY);                 // 等待flash空闲
    for(cnt=0; cnt<len; cnt++)
    {
        *(bytebuf+ cnt) = *(addr + cnt);    // 读数据
    }
    FCTL3 = FWKEY + LOCK;                  // Lock      
}

 

 
个人签名很高兴来到EEW。希望和大家相互学习,共同进步!
 
 

回复

121

帖子

0

TA的资源

纯净的硅(中级)

5
 

每个函数都有说明的,看不懂的话再回复就是了。

点评

太感谢 了....要的就是这个!!!  详情 回复 发表于 2015-11-13 18:57
 
个人签名很高兴来到EEW。希望和大家相互学习,共同进步!
 
 

回复

72

帖子

0

TA的资源

一粒金砂(高级)

6
 
5xue 发表于 2011-8-17 23:05
每个函数都有说明的,看不懂的话再回复就是了。

太感谢 了....要的就是这个!!!
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

7
 
谢谢分享。。。。
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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