- 博客(12)
- 收藏
- 关注
原创 DNP3.0学习记录
今天终于出现了豁然开朗的感觉,拨开云雾见透明的感觉,之前一直以为自己懂了整个协议都摸清楚了,但是到了实际项目过程还是半知半解,总是云里雾里的,知道也知道,但是好像又不知道,正所谓,知之为知之,不知为不知,哈哈哈哈哈哈,,在样机上反复研究接收报文,查阅文档解释,之前只是明白了格式,而不是实际代表的含义,,,,爽爽爽,有种看破一切掌握一切的感觉,就像第一次看透循迹小车的快感一样,2、遇到一些难点怪异,不要怕,我也在多个论坛发文求助,求助很多也没有用,终归只有自己踏过去才行,这是礼物,仔细研磨。
2025-12-16 17:28:34
178
原创 DNP3.0协议,应用层对象标题+数据详解
文章来由:本人在学习DNP3.0过程中碰到的难点,主要是在协议的应用层中对对象、变体、限定词、变程的理解以及应用,所以本文重点在于介绍应用层的部分,关于链路层以及传输层会稍有提及,意在帮助大家更好的理解以及应用DNP3.0协议。首先要明确在dnp3.0中是存在主站与从站的概念的,主站往往是发出命令、请求数据的角色,而从站是接收主站的命令然后返回相关数据,举例:主站:你能听到我说话吗?告诉我你吃饭了吗?几点吃的?吃的什么?从站:能听到,吃了,五点,大饼焖子卷肉1、协议规约整体帧格式:FT3。
2025-12-03 14:21:44
846
原创 分散加载各块ROM、RAM结合H7
这里是 将其存放在Flash的首地址。简单来讲加载域就是存放RO只读代码,在这里可以理解为flash代码,而有些代码可能在只读RO的加载域存储,当cpu要执行代码时会把代码存储到RW区方便执行,但是这里的代码flash既可以在这个地方存储,cpu也可以直接访问并执行程序,所以这里的执行域与加载域就相同了。我们可以编辑或者更换不同的分散加载文件来分配ROM与RAM,把上图中的第三步取消勾选,并且点击第四步的Edit就可以编辑并且使用分散加载,下图Target中的那种可以看作是一种简化板的分散加载。
2025-11-01 01:45:00
2617
原创 stm32根域(Root Region)、加载域(Load Region)、执行域(Execution Region)
根域是整个分散加载文件的顶层结构,用于组织和管理所有的加载域。它是一个逻辑容器,定义了程序镜像的 “最外层结构”,通常整个文件只有一个根域(由最外层的大括号{}包裹)。以一个分散加载文件举例文件中,根域加载域1...加载域2...加载域3...根域的作用是统一管理所有加载域的布局,确保整个程序镜像在存储介质(Flash)中是一个连续或按规则组织的整体。
2025-10-30 23:15:00
479
原创 STM32H7之ITCM,DTCM,AXI SRAM,SRAM1,SRAM2,SRAM3,SRAM4和备份SRAM
速度:200MHz。SRAM1:地址0x3000 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以当 D1域断电后用于运行程序代码。SRAM2:地址0x3002 0000,大小128KB,用途不限,可用于D2域中的DMA缓冲,也可以用于 用户数据存取。ITCM用于运行指令,也就是程序代码,DTCM 用于数据存取,特点是跟内核速度一样,而片上RAM的速度基本都达不到这个速度,所以有降频处 理。,位于D3域,数据带宽是32bit,挂在AHB总线上,大部分主控都能访问这块SRAM 区。
2025-10-28 23:45:00
972
原创 多维度对比传统 STM32 系列(如 F1、F4)与 STM32H7 系列 DMA(直接内存访问控制器)的区别变化与优缺点
STM32H7 的普通 DMA(DMA1、DMA2)通过 DMAMUX 实现的 “自由路由”,本质是用硬件多路复用器替代了传统的固定连线,将 “外设请求→DMA 通道” 的关系从 “硬件固化” 升级为 “软件可编程”。这一设计让开发者能根据实际需求灵活分配 DMA 资源,彻底解决了传统架构中外设与通道绑定的限制,为复杂嵌入式系统(如多外设并发的数据采集、高速通信)提供了更高效的硬件支撑。
2025-10-23 23:45:00
2744
原创 STC32G12K128/STC32G8K64的EPROM读取,擦除,掉电保存,以掉电保存按键状态为例
1、明确STC32G12K128、STC32F12K54、STC32G8K64等STC32G系列单片机命名规则以STC32G8K64为例它为无浮点型,SRAM有8K字节,程序空间64k字节2、EPROM是什么?它是位于程序存储区的一块空间,上面我们已经知道命名规则,依旧STC32G8K64为例子,它的EPROM空间就在程序空间内,所以小于64k,它的具体大小是由我们手动规定的,用的多可以画大一点,用的少可以画小一点3、EPROM要怎么使用?通过配置相关的寄存器编写驱动程序与应用程序来使用。
2025-10-23 00:15:00
815
原创 魔术棒之Target界面详解以及配合ROM、RAM、IROM、IRAM、DRAM、SRAM、Flash对Read-Only Memory Areas(只读存储区) 和 Read/Write Mem详解
1、首先是最上面的一列界面Device:用于选择目标芯片型号,这里已选,决定了开发所基于的硬件核心。Target:本标签页,用于配置目标硬件的整体参数,如时钟、内存区域等。Output:配置输出文件相关,比如生成的可执行文件(.hex 等)的路径、名称等。Listing:控制列表文件的生成,列表文件包含编译过程中的代码、地址等详细列表信息,便于调试和查看编译结果。User:可设置用户自定义的命令,比如在编译前后执行特定的脚本或指令。C/C++
2025-10-17 11:18:25
1598
原创 解决调试模式Warning: Event Recorder not located in uninitialized memory!,实现eventrecorder爆炸速度刷新printf!
如上图,一般进入调试模式会有这个报错,,这个警告其实不解决也能正常使用如下图打印也可以正常使用,但是会发现好想有点延迟,按键按下要迟钝半秒才会在窗口打印出来。
2025-09-29 17:22:46
320
原创 STM32H7 添加EventRecorder后,keil编译#include cmsis_device_header报错解决方法
另外一开始我安装了3.11芯片包但是不管用在如图可以查看当前芯片包的版本,如果安装之后芯片包版本还是4.11,去芯片包哪里把4.11或者4.12的移除掉就可以,我的图片上面的已经移除,没移除会跟3.11后面一样有REMOVE,可能刚打开芯片包会有点卡没有,等一会就有了。上面博主这两种方法都试了我是第二种,另外粘一个3.11芯片包链接在下面。
2025-09-25 15:52:43
294
原创 stm32串口重定向
然后在主函数添加 #include "stdio.h" 使用printf(" usart ok")即可。2、按要求添加 #include <stdio.h> 在usart.c中。3、在usart.c的最后began与end之间添加代码即。1、在魔术棒--→target即。
2025-06-09 21:01:48
277
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅