- 博客(322)
- 收藏
- 关注
原创 【Keil5-Cortex-M3的通用寄存器组】
从用户级到特权级的唯一途径就是异常:如果在程序执行过程中触发了一个异常,处理器总是先切换入特权级,并且在异常服务例程执行完毕退出时,返回先前的状态。如果多于1级,则需要把前一级的R14值压到堆栈里。在ARM上编程时,应尽量只使用寄存器保存中间结果,迫不得以时才访问内存。在ARM编程领域中,凡是打断程序顺序执行的事件,都被称为异常(exception)。指向当前的程序地址。如果修改它的值,就能改变程序的执行流。处理者模式(handler mode)线程模式(thread mode)
2025-07-18 09:25:03
186
原创 【物联网-ModBus-ASCII】
一般只需要了解RTU协议,因为前面有说过,必须要有RTU协议的,所以只需要了解了RTU协议,就可以读出设备信息了,至于ACSII协议,做个大概了解即可。发送一个字节:0x12采用 ASCII协议ASCII 协议发送一个字节 则需要发送2个字一个字节代表ASCII码1,一个代表ASCII码2,即0x31和0x32,才能代表0x12。ASCII码发送数据量是RTU方式的2倍,所以ASCII码效率更低。所以,ASCII协议的效率比较低。
2025-06-07 13:32:39
483
原创 【物联网-ModBus-RTU】
发送:从机的地址+我要干嘛的功能码+我要查的寄存器的地址+我要查的寄存器地址的个数+校验码回复:从机的地址+主机发我的功能码+要发送给主机数据的字节数+数据+校验码一个寄存器两个字节一个字节一个字节N个字节两个字节地址功能码数据校验发送01 传感器的地址03 查询功能码00 00 起始寄存器地址 00 01 代码查询寄存器个数84 0A 循环冗余校验回复01 传感器的地址03 查询功能码02 后面2
2025-06-07 13:28:59
903
原创 【工具-Wireshark 抓包工具】
【抓包工具】win 10 / win 11:WireShark 下载、安装、使用Wireshark下载 阿里云镜像
2025-06-05 10:29:27
244
原创 【物联网-S7Comm协议】
S7Comm( S7 Communication)是西门子专有的协议,是西门子 S7 通讯协议簇里的一种。S7 通信协议是西门子 S7 系列 PLC 内部集成的一种通信协议,是 S7 系列 PLC 的精髓所在。它是一种运行在传输层之上的(会话层/表示层/应用层)、经过特殊优化的通信协议,其信息传输可以基于 MPI 网络、 PROFIBUS 网络或者以太网。
2025-06-05 10:00:41
514
原创 【嵌入式项目-MCU代码2】
链接:https://pan.baidu.com/s/1efxv9l3XWk9oGQqwQU-rXg?
2025-05-17 13:30:24
322
原创 【工具-codeTransmit —好用的编码批量转换工具】
链接:https://pan.baidu.com/s/160CLuHUVXfhL56PhNL0tMA。链接:https://pan.baidu.com/s/1Yh-D_2cWh6Q3q01ysXYSPA。
2025-05-13 10:13:08
192
原创 【嵌入式开发-RS-485】
主要原因是:RS-485总线在idle状态,电平是不固定的,即电平在-200mV~+200mV之间,收发器可能输出高也可能输出低,UART在空闲时需要保持高电平的,如果此时收发器输出一个低电平,对UART来说是一个start bit,会导致通信异常,当DIR=1时,接收电路使能,发送电路禁止DE=1,对总线A/B信号取决于DI的信号。如果有RX,TX,CTS,RTS 四个信号,则多半是支持硬流控的UART;当DIR=0时,接收电路使能,发送电路禁止DE=0,对总线而言相当于高阻;
2025-05-08 23:45:41
311
原创 【嵌入式开发-LCD-OLED】
/向SSD1306写入一个字节//dat:要写入的数据/命令//cmd:数据/命令标志 0,表示命令;1,表示数据void WriteCmd(u8 command) //写命令函数//OLED地址//写命令寄存器地址IIC_Stop();void WriteData(u8 data) //写数据函数//OLED地址//写数据寄存器地址IIC_Stop();void OLED_WR_Byte(u8 dat,u8 cmd) //为了直接替换上面,做一个封装函数。
2025-05-08 23:34:33
334
原创 【嵌入式开发-SPI】
SPI协议其实是包括:Standard SPI、Dual SPI和Queued SPI三种协议接口,分别对应3-wire, 4-wire, 6-wire。单线:标准4线连接,全双工,同时收和发;双线:标准4线连接,半双工,2根数据线,并线发和收,双方向切换;四线:标准4线连接,半双工,4根数据线,并线发和收,双方向切换;
2025-05-08 23:21:07
486
原创 【嵌入式开发-SDIO】
SDIO(Secure Digital Input and Output),即安全数字输入输出接口。它是在SD卡接口的基础上发展而来,它可以兼容之前的SD卡,并可以连接SDIO接口设备,比如:蓝牙、WIFI、GPS等。
2025-05-08 23:15:28
208
原创 【嵌入式项目-收藏】
QuarkTS 的设计目标是使用小型、简单且(最重要的是)强大的实现来实现其所述功能,使其适用于资源受限的微控制器,在这些微控制器中,完全抢占式 RTOS 是一种过度杀伤,并且它们的加入会给固件开发增加不必要的复杂性。Lua是我之前在学校做项目的时候用到的,很多同学可能比较陌生,奇怪Lua和嵌入式的关系,Lua完全是由C开发的脚本语言,所以他对于C语言项目兼容非常好,这两点就使其在嵌入式开发的时候作用很大。Traccar的功能丰富,包括可切换卫星、街景地图、追踪运动轨迹、追踪行程、停留点等。
2025-04-19 22:49:49
921
原创 【物联网-ModBus-TCP/IP】
Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验。Modbus协议包括ASCII、RTU、TCP等,并没有规定物理层。RS-485常与MODBUS协议结合使用,MODBUS协议定义了数据帧的结构和通信规则。Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式。== ModBus 网络只有一个主机,所有通信都由他发出。== 网络可支持 247 个之多的远程从属控制器==Master端发出数据请求消息,
2025-04-17 20:36:07
432
原创 【CMakeLists.txt-语法】
cmake . // 执行 当前目录下多生成了一些文件,例如 Makefilemake // make 来编译程序cmake_minimum_required (VERSION 2.8) //cmake最低版本要求2.8,project (learn_cmake) //本项目的工程名add_executable(hello hello.cpp) //第一个变量:要生成的可执行文件名为hello,后面的参数是需要的依赖。
2025-04-15 18:26:22
148
原创 【物联网-】
RS-485传输方式:半双工通信、(逻辑1:+2V ~ +6V 逻辑0:-6V ~ -2V)这里的电平指AB 两线间的电压差。Modbus协议需要对数据进行校验,串行协议中除有奇偶校验外,ASCII模式采用LRC校验,RTU模式采用16位CRC校验。RS-485常与MODBUS协议结合使用,MODBUS协议定义了数据帧的结构和通信规则。Modbus的ASCII、RTU协议规定了消息、数据的结构、命令和就答的方式。== 网络可支持 247 个之多的远程从属控制器==Master端发出数据请求消息,
2025-04-14 21:14:01
638
原创 【MQTT-协议原理】
订阅包含主题筛选器(Topic Filter)和最大服务质量(QoS)。在MQTT协议中,一个MQTT数据包由:固定报头(Fixed header)、可变报头(Variable header)、消息体(payload)三部分构成。MQTT协议中有三种身份: 发布者(Publish)、 代理(Broker)(服务器)、 订阅者(Subscribe)。可变报头的报文标识符(Packet Identifier) 字段存在于在多个类型的报文里。MQTT传输的消息分为: 主题(Topic) 负载(payload)
2025-04-12 23:02:26
490
原创 【Linux-驱动开发-GPIO子系统】
第二个 cell 表示GPIO 极 性 , 如 果 为 0(GPIO_ACTIVE_HIGH) 的 话 表 示 高 电 平 有 效 , 如 果 为1(GPIO_ACTIVE_LOW)的话表示低电平有效。2、 gpio_free 函数 如果不使用某个 GPIO 了,那么就可以调用 gpio_free 函数进行释放。3、 of_get_named_gpio 函数 此函数获取 GPIO 编号,6、 gpio_set_value 函数 设置某个 GPIO 的值,
2025-03-25 14:44:21
1273
原创 【Linux-驱动开发-pinctrl子系统】
如果需要在 iomuxc 中添加我们自定义外设的 PIN,那么需要新建一个子节点,然后将这个自定义外设的所有 PIN 配置信息都放到这个子节点中。pinctrl_hog_1 子节点就是和热插拔有关的 PIN 集合,比如 USB OTG 的 ID 引脚。③、根据获取到的 pin 信息来设置 pin 的电气特性,比如上/下拉、速度、驱动能力等。pinctrl_flexcan1 子节点是 flexcan1 这个外设所使用的 PIN,②、根据获取到的 pin 信息来设置 pin 的复用功能。
2025-03-25 14:40:06
519
原创 【Linux-驱动开发-设备树 DTS】
基于 ARM 架构的 SOC 有很多种,一种 SOC 又可以制作出很多款板子,每个板子都有一个对应的 DTS 文件,那么如何确定编译哪一个 DTS 文件呢?我们就以 I.MX6ULL 这款芯片对应的板子为例来看一下,打开 arch/arm/boot/dts/Makefile,可以看出,当选中 I.MX6ULL 这个 SOC 以后(CONFIG_SOC_IMX6ULL=y),所有使用到 I.MX6ULL 这个 SOC 的板子对应的.dts 文件都会被编译为.dtb。参考如下 bootargs。
2025-03-25 14:37:22
1048
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人