当前位置: 首页 > news >正文

存储空间操作

        最近一段时间,写了个验证芯片稳定性的程序,大致功能就是把芯片所有的寄存器、可以用RAM,在芯片上电时,进行初始化。之后,在主循环里面不断的读取寄存器数据。并做电磁兼容性实验,观察寄存器、RAM存储的数据有没有变化。寄存器操作选用了最笨最直接的方法,直接对着芯片手册,看寄存器列表,把所有有意义的位,都设置为与默认值相反的数据。但实际操作过程中,发现有些数据没有写成功,下面就对这些进行说明。

1.只读只写寄存器

        首先,来看一张寄存器内容截图。

        从这里可以看到端口设置寄存器、端口复位寄存器、端口翻转寄存器,属于只写寄存器,无法进行读操作,或者读寄存器时,返回内容恒为0。其次,端口数据(PTDAT)寄存器,该寄存器的数值,取决于引脚类型,所以直接想当然的写0xFFFF,寄存器的内容不一定是该数值。PTDAT寄存器数据的操作遵循如下规则。

1)芯片引脚选择 GPIO 功能或复用数字功能
若方向寄存器配置为输出,PTDAT 读取值为寄存器设置值,不随外部 PIN 脚电平变化而变化;
若方向寄存器配置为输入,PTDAT 读取值为 pad 状态值,反映外部 PIN 脚电平变化;
2)芯片引脚选择复用模拟功能,PTDAT 相应 bit 位值,固定为 0

2.状态寄存器

        外部中断标志寄存器,即使没有使能中断,但中断触发条件达到,中断标志位依然会置位。所以,中断标志寄存器不能作为芯片是否稳定的判断条件。

3.发送数据寄存器

        串口数据缓冲寄存器(SBUF),写数据后,串口发送完成,SBUF寄存器数据清零,不能作为判断依据。

4.有条件读写寄存器

        以RTC指示寄存器为例,读取和设置都需要先配置其他寄存器,且最好按照SECR、MINR、HOURR、DAYR、MONTHR、YEARR、WEER。

        此外,寄存器的数值可能也有限制,以SECR寄存器为例,只能写入0-59范围内的数据。

        有些寄存器写入前,需要关闭写保护,否则写入操作无效。

        部分寄存器的读写还需要先使能相应模块,否则模块配置无法起作用。

5.RAM操作

        RAM操作要先确定RAM空间大小,排除不可用部分。查看程序的.map文件,发现栈和静态变量占据了一部分,排除这部分空间,就是可以用的空间。针对这部分的空间操作,我才用直接地址读写,这算是一种笨方法吧,请留意前面提到的静态变量,它们也都存储在RAM里面。用户可以通过操作静态变量数组,进行RAM空间操作。

        留一个小陷阱,那就是RAM可用空间的计算,懂得都懂。


文章转载自:

http://CgbKS1WO.skfkx.cn
http://tF09nK23.skfkx.cn
http://CLpi49K5.skfkx.cn
http://Tl5szuZ1.skfkx.cn
http://GSETgoft.skfkx.cn
http://UgGRp71S.skfkx.cn
http://5uf3tNIo.skfkx.cn
http://07GJ0EyI.skfkx.cn
http://ptbLuz8G.skfkx.cn
http://1igXmFS1.skfkx.cn
http://wkQHmumB.skfkx.cn
http://Uz1LmCkj.skfkx.cn
http://hPqjpTFH.skfkx.cn
http://Y7n0isTu.skfkx.cn
http://iw0moZzA.skfkx.cn
http://lp9ZXkay.skfkx.cn
http://1ZDiDW69.skfkx.cn
http://cKazPOl8.skfkx.cn
http://GiQO4qdP.skfkx.cn
http://0fgdnycm.skfkx.cn
http://Qbs451Iw.skfkx.cn
http://p60VT3CS.skfkx.cn
http://29dB3cy9.skfkx.cn
http://ibVtYw8W.skfkx.cn
http://mlW8Xe1N.skfkx.cn
http://8dRCGzGF.skfkx.cn
http://chzG1riD.skfkx.cn
http://z5T6BPIw.skfkx.cn
http://R2GkveBR.skfkx.cn
http://2yntNlEM.skfkx.cn
http://www.dtcms.com/a/378745.html

相关文章:

  • 配置Kronos:k线金融大模型
  • 为阿里到店“打前锋”,高德的优势和挑战都很明显
  • CIOE2025进行时|科普瑞分享传感器在半导体等领域应用
  • BLIP-2革新多模态预训练:QFormer桥接视觉语言,零样本任务性能飙升10.7%!
  • WhatWeb-网站安全扫描指纹识别
  • 【LeetCode 每日一题】498. 对角线遍历——(解法一)模拟
  • LeetCode2 两数相加 两个链表相加(C++)
  • 项目1——单片机程序审查,控制系统项目评估总结报告
  • 科技行业新闻发布平台哪家好?多场景推广专业方案服务商推荐
  • 电力基站掉电数据丢失问题该靠天硕工业级SSD固态硬盘解决吗?
  • VSCode 设置和选择conda环境
  • 遗传算法属于机器学习吗?
  • html获取16个随机颜色并不重复
  • 数据库开启ssl
  • 12V转18V/2A车灯方案:宽输入电压、支持PWM调光的车灯驱动芯片FP7208
  • get post 请求
  • 如何在Anaconda中配置你的CUDA Pytorch cuNN环境(2025最新教程)
  • 关于大模型提示词设计的思路探讨
  • 软考-系统架构设计师 信息加解密技术详细讲解
  • 人工鱼群算法AFSA优化支持向量机SVM,提高故障分类精度
  • 《RAD Studio 13.0》 [DELPHI 13.0] [官方原版IOS] 下载
  • 最小曲面问题的欧拉-拉格朗日方程 / 曲面极值问题的变分法推导
  • kotlin的函数前面增加suspend关键字的作用
  • Linux vi/vim
  • 赋能高效设计:12套中后台管理信息系统通用原型框架
  • Spark 核心 RDD详解
  • 图灵奖得主萨顿演讲解读:深度学习的局限与AI新范式
  • 香港券商柜台系统搭建与开发技术分析
  • React学习教程,从入门到精通,React 组件生命周期详解(适用于 React 16.3+,推荐函数组件 + Hooks)(17)
  • EFK+DeepSeek 智能运维方案:技术架构与实施步骤