【单片机】MSP430F5529单片机的Flash读写控制,MSP430 flash 读写

news2024/11/27 4:21:16

文章目录

  • 内存模型
  • 程序

内存模型

https://qq742971636.blog.csdn.net/article/details/108892807

单片机的Flash里面的区域不是全都能写的:https://blog.csdn.net/u014470361/article/details/79297601

找一下手册看看MSP430F5529单片机哪些地址区域能写:
下图:

闪存内存可以通过 JTAG 端口、Spy-Bi-Wire (SBW)、BSL 或者由 CPU 在系统中进行编程。CPU 可以对闪存内存进行单字节、单字和长字的写入操作。
闪存内存的特性包括:
闪存内存由 n 个主存储器段和四个信息存储器段(A 到 D)组成,每个信息存储器段的大小为 128 字节,每个主存储器段的大小为 512 字节。
段 0 到 n 可以一次擦除,或者可以逐个段进行擦除。
段 A 到 D 可以单独进行擦除,这些段也被称为信息存储器。
段 A 可以单独上锁。

在这里插入图片描述

下图大概的意思:

这段文本描述了一个内存模型的地址范围和用途。下面是各个地址范围及其属性的解释:

00000h-00FFFh:包含有间隙的外设
00000h-000FFh:保留给系统扩展使用
00100h-00FEFh:外设 x
00FF0h-00FF3h:描述符类型 (2) x
00FF4h-00FF7h:描述符结构的起始地址 x
01000h-011FFh:BSL 0 x x
01200h-013FFh:BSL 1 x x
01400h-015FFh:BSL 2 x x
01600h-017FFh:BSL 3 x x x
017FCh-017FFh:BSL 签名位置
01800h-0187Fh:信息 D x
01880h-018FFh:信息 C x
01900h-0197Fh:信息 B x
01980h-019FFh:信息 A x
01A00h-01A7Fh:设备描述符表 x
01C00h-05BFFh:16KB RAM
05B80h-05BFFh:备用中断向量
05C00h-0FFFFh:程序 x x (1) x
0FF80h-0FFFFh:中断向量
10000h-45BFFh:程序 x x x
45C00h-FFFFFh:空闲

其中,一些关键词的含义如下:

BSL:表示主引导加载程序(Bootstrap Loader)
Info A/B/C/D:信息区域
RAM:随机访问存储器
程序:存放代码的区域
中断向量:存放中断处理程序的区域

此内存模型的特点包括:
在读取/写入/获取时可以生成NMI(非屏蔽中断)
获取访问时生成PUC(CPU保护状态更改)
可以保护读取/写入操作
总是能够从(1)访问PMM寄存器;用户可以进行大规模擦除操作,包括整个存储器擦除、按照块擦除和按照段擦除。

在这里插入图片描述

程序

#include <msp430.h>


//从地址addr开始写,写len个
void write_data(unsigned int addr, const unsigned char dat[], unsigned char len) {
    unsigned char i;

    FCTL1 = FWKEY + ERASE; //设置擦除模式
    FCTL3 = FWKEY;

    for (i = 0; i < len; i++) {
        *(unsigned char *) (addr + i) = 0;
    }
    FCTL1 = FWKEY + WRT; //设置写入模式
    for (i = 0; i < len; i++) {
        *(unsigned char *) (addr + i) = dat[i];
    }
    FCTL1 = FWKEY;
    FCTL3 = FWKEY + LOCK;
}


//从地址addr开始读,读len个
void read_data(unsigned int addr, unsigned char dat[], unsigned char len) {
    unsigned char i;
    for (i = 0; i < len; i++) {
        dat[i] = *(unsigned char *) (addr + i);
    }
}

const unsigned char data[] = "ABCDEDF";
unsigned char data_read[10];

int main(void) {
    WDTCTL = WDTPW | WDTHOLD;    // stop watchdog timer

    write_data(0x001800, data, 7);
    read_data(0x001800, data_read, 7);


    while (1);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/749921.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nginx常用命令以及安装

目录 前言&#xff1a; 安装&#xff1a; 常用命令&#xff1a; 前言&#xff1a; Nginx的设计理念是高性能、稳定性、开放性和易用性。它的并发能力优秀&#xff0c;可以处理数万个并发连接&#xff0c;并且占用较少的资源。此外&#xff0c;Nginx支持热部署&#xff0c;即…

如何将企业联系方式API接口应用于你的移动端APP?

在现代商业世界中&#xff0c;企业需要提供一种快速&#xff0c;高效的方式来让用户获取联系方式。因此&#xff0c;企业联系方式API接口应运而生&#xff0c;它是一种提供了企业联系方式的开放接口&#xff0c;在用户调用时&#xff0c;可以实现即时获取企业的联系方式信息。本…

python-计算两个矩阵的相似度。

余弦相似度 在pytorch中&#xff0c;有一个专门的函数用于计算相似度&#xff1a;torch.cosine_similarity() https://pytorch.org/docs/stable/nn.functional.html#cosine-similarity import torch import torch.nn.functional as F input1 torch.randn(100, 128) input2 t…

【2023,学点儿新Java-32】Java基础小练习:根据圆周率与半径求圆的面积 | 温度转换 | 计算矩形面积 | 判断奇偶数 | 年龄分类

前情提要&#xff1a; 【2023&#xff0c;学点儿新Java-31】测试&#xff1a;整型和浮点型变量的使用 | 附&#xff1a;计算机存储单位&#xff08;转换关系&#xff09;| 企业真题&#xff1a;为什么0.10.2不等于0.3【2023&#xff0c;学点儿新Java-30】变量的基本使用&#…

回归预测 | MATLAB实现WOA-CNN-BiGRU鲸鱼算法优化卷积双向门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现WOA-CNN-BiGRU鲸鱼算法优化卷积双向门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现WOA-CNN-BiGRU鲸鱼算法优化卷积双向门控循环单元多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 回归预测 | MATLAB实…

安全不“放假”,VR安全教育等你沉浸式体验

暑期开启&#xff0c;孩子们将迎来一段丰富且快乐的时光&#xff0c;暑假虽快乐&#xff0c;但是安全不能“放假”&#xff0c;许多地方开展形式多样的暑假安全宣传活动&#xff0c;想不想沉浸式体验下VR安全教育宣传呢&#xff1f;通过VR演示&#xff0c;身临其境的了解防溺水…

MySQL-概述-数据模型SQL简介

数据库&#xff1a;DataBase&#xff08;DB&#xff09;&#xff0c;是存储和管理数据的仓库数据库管理系统&#xff1a;DataBase Management System&#xff08;DBMS&#xff09;&#xff0c;操作和管理数据库的大型软件。SQL&#xff1a;Structured Query Language&#xff0…

「提高你的CSS技能」:15个重要的CSS属性详解

这篇文章介绍了15个重要的CSS属性&#xff0c;旨在提高读者的CSS知识和技能。文章以清晰的方式解释了每个属性的作用和用法&#xff0c;并提供了相应的示例代码。通过这篇文章&#xff0c;读者可以了解到一些有趣且实用的CSS属性。 1:in-range 和:out-of-range 伪类 CSS的:in…

KafKa 3.x(三、Eagle、Kraft、压测调优,源码解析)

6. Kafka-Eagle监控 Kafka-Eagle框架用于监控Kafka集群运行状况。官网https://kafka-eagle.org 6.1 Mysql 前置mysql。 6.2 Kafka环境 关闭集群 kf.sn stop修改vim /bin/kafka-server-start.sh 并同步到其他节点 if [ "x$KAFKA_HEAP_OPTS" "x" ]; t…

vue使用html2canvas实现一键截图并赋值到剪贴板,只截取当前显示器上可视的内容

使用html2canvas 和 clipboard API实现整页截图并填充至剪切板。 访问剪切板的api只支持在https或者本地localhost上使用&#xff0c;如果是http&#xff0c;则无法使用 首先需要从npm安装html2canvas npm install html2canvas然后在代码中导入这个包&#xff1a; import ht…

git安装教程

前言 Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从小到大的项目版本管理。下面详细的用图文形式介绍一下git安装过程&#xff08;记录一下git安装过程供参考&#xff09; 一、下载git 打开git官网地址&#xff1a;https://git-scm.com/进行下载&am…

适合宝妈和学生党的副业,在家就可以做的兼职,实现高质量躺平

如果工资不够高&#xff0c;那就会让人过得很拮据。因此&#xff0c;很多人都希望可以通过兼职或副业来增加收入。然而&#xff0c;找到可靠的副业却并不容易&#xff0c;还会面临各种困难。 跟大家介绍七种可行的兼职副业&#xff0c;希望能为那些想增加收入的职场人员提供一…

第四章:DeepLabV2——使用深度卷积神经网络、空洞卷积和全连接条件随机场进行语义图像分割

0.摘要 在这项工作中&#xff0c;我们使用深度学习来解决语义图像分割任务&#xff0c;并做出了三个实验证明具有实际价值的主要贡献。 首先&#xff0c;我们强调通过上采样滤波器进行卷积&#xff0c;或者称为“空洞卷积”&#xff0c;在密集预测任务中是一种强大的工具。空洞…

Langchain-ChatGLM配置文件参数测试

1 已知可能影响对话效果的参数&#xff08;位于configs/model_config.py文件&#xff09;&#xff1a; # 文本分句长度 SENTENCE_SIZE 100# 匹配后单段上下文长度 CHUNK_SIZE 250 # 传入LLM的历史记录长度 LLM_HISTORY_LEN 3 # 知识库检索时返回的匹配内容条数 VECTO…

谈谈你对 binder 的理解?

面试官提了一个问题&#xff0c;我们来看看 &#x1f60e;、&#x1f628; 和 &#x1f914;️ 三位同学的表现如何吧 &#x1f60e; 自认为无所不知&#xff0c;水平已达应用开发天花板&#xff0c;目前月薪 10k 面试官️&#xff1a;谈谈你对 binder 的理解 &#x1f60e;&a…

Unity 限制范围-限制在4分之一圆柱形范围内活动

在我的游戏中&#xff0c;玩家的两只手操控中&#xff0c;不想让他们的手围着自己在一个圆形范围内随便乱跑&#xff0c;左手只想让他在左上角&#xff0c;右手在右上角范围活动。所以我制作这样一个算法来实现。 首先用Dot函数划分出4个区域&#xff0c;然后根据区域计算修正…

C++ | 仿函数与priority_queue

目录 前言 一、初始仿函数 1、仿函数是什么 2、仿函数的使用 二、优先级队列 1、 优先级队列的基本概念 2、堆的储存结构与结点之前关系 3、堆的使用 4、堆的模拟实现 前言 本文主要介绍优先级队列与仿函数&#xff0c;优先级队列实际上是我们在数据结构中学的堆&…

02 | conda的使用

1 前提 Conda是一个在Windows、macOS、Linux和z/OS上运行的开源软件包管理系统和环境管理系统。Conda快速安装、运行和更新软件包及其依赖项。Conda可以在本地计算机上轻松创建、保存、加载和切换环境。它是为Python程序创建的&#xff0c;但它可以为任何语言打包和分发软件。…

Tomcat 8.5 源码分析

一、获取源码并启动程序 获取教程地址 总体架构 二、Tomcat的启动入口 Catalina类主要负责 具体的管理类&#xff0c;而Bootstrap类是启动的入口(main方法)。 /*** Main method and entry point when starting Tomcat via the provided* scripts.** param args Command lin…

C# Post 接口请求样例

很久没有写接口了&#xff0c;正好今天写到了接口&#xff0c;记录一下 封装Http Post请求&#xff0c;这里的请求头是 request.ContentType “application/json”; 复制后根据实际去修改&#xff0c;不要生搬硬套搞拿来主义&#xff1a; /// <summary>/// 发送http请求…