- 博客(33)
- 资源 (3)
- 收藏
- 关注
原创 15118标准分析_1:15118通讯过程
简单来说,15118的通讯主要分为6个阶段。CP 5% 占空比PWM,用户触发高阶通讯(high-level communication,HLC)。
2026-06-13 15:48:59
164
原创 15118标准分析_0:ISO15118简介
ISO 15118(常简称为15118)是电动汽车(EV)与充电桩(EVSE)之间进行数字通信的国际标准。它定义了车辆与充电桩之间的通信方式和协议。传统的IEC 61851标准仅依赖模拟PWM信号,只能实现基础的“通断”控制和“最大电流”设定,无法支持自动识别车辆与用户、加密结算、自动扣费、动态功率调整(智能充电)以及车辆向电网送电(V2G)等高级功能。ISO 15118的出现,完美地解决了这些局限性。
2026-06-13 15:10:13
459
1
原创 C语言基础2:数制转换与数据编码
在C语言中,二进制、八进制、十进制、十六进制等4种进制方式,每一种进制都有其特点,有着不同的应用;在计算机中,所有的数据本质上都是以二进制的形式进行存储的,为了表示不同的数据,有着不同的编码方式,我们将对计算机中的原码、补码、反码进行讲解。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”。二进制的四则运算加运算:0+0=0,0+1=1,1+0=1,1+1=10减运算:1-1=0,1-0=1,0-0=0,0-1=1。
2025-10-26 18:37:55
1100
1
原创 C语言基础1:C语言简单程序
C语言作为一门面向高级编程语言,在软件开发的底层开发中有着广泛的应用,特别是在嵌入式软件开发过程中。C语言具有灵活方便、运算符丰富、数据结构丰富、执行效率高和可移植性好等特点。在嵌入式软件开发过程中,有很多需要面对寄存器或者是地址的操作,C语言在这些操作中有着很大的优势。因此,在嵌入式开发中应用的有着极为重要的作用。在本系列的教程中,我们将对C语言中的基础语法和用法进行讲解,关于C语言的高级的应用,我们会在另外教程中进行讲解。
2025-10-26 18:29:45
756
原创 数据结构13:排序
排序在编程中有着很多的应用,例如中值滤波、求最大值或最小值等。在本节中,我们将对冒泡排序、选择排序和插入排序这三种排序方式进行讲解。
2025-10-25 20:15:54
461
原创 数据结构12:二叉树的API及其实现
在上一节,我们讲了二叉树的数据结构和遍历方式。这一节,我们讲解二叉树的API函数以及其实现方式。//二叉树生成函数//二叉树的前序遍历//二叉树的中序遍历//二叉树的后序遍历//二叉树的销毁二叉树生成函数char data;T = NULL;创建时采用字符“#”代表“NULL”,当输入“#”时表示树的左孩子或右孩子为NULL,即没有对应的孩子。
2025-10-25 20:09:23
346
原创 mbedtls哈希值计算
哈希值(Hash Value),也被称为哈希码(Hash Code)、散列值(Hash)、摘要(Digest)或指纹(Fingerprint),是将任意长度的消息或数据通过哈希算法(Hash Function)转换成固定长度的数字串。哈希算法是一种单向函数,具有以下重要特性:哈希算法的特性确定性:◦对于相同的输入数据,哈希算法总是产生相同的哈希值。◦ 例如,无论何时使用相同的哈希算法处理相同的输入数据,结果总是相同的。
2025-10-23 18:04:09
937
原创 数据结构11:二叉树的数据类型和遍历方式
前面我们讲了二叉树的结构,如图1所示。从图中我们可以看到,在二叉树中,每个节点最多有两个孩子,我们称为左孩子和右孩子;每个孩子又可以作为双亲拥有自己的孩子;以此规律多个节点可以组成一个棵大的树。
2025-10-22 21:25:04
758
原创 数据结构10:树和二叉树
前面我们讲到的线性表、队列和栈都是一对一的数据结构,下面我们要讲的树是一种一对多的数据结构----树。树的严格定义如下:树:树是n(n=>0)个节点的有限集。n=0时成为空树。在任意一颗非空树中:(1)有且仅有一个称为根的节点;(2)当n>0时,其余节点可分为m(m>0)个互不相交的有限集T1、T2、T3、Tm,其中每个节点又是一棵树,并且称为根的子树。树的结构图1所示:在图1中,A作为树的根节点,它有B和C两个节点;同时B和C也是一颗树,分别有3个和2个节点。
2025-10-22 21:13:53
1168
原创 数据结构9:队列
队列是一种类似于单向隧道一样的数据结构,数据只能从一端进入,然后从另一端输出,先进入的先弹出,后进入的后弹出。入队列:向队列中添加元素的操作叫做入队列,如图1所示。出队列:从队列中取出元素的操作叫做出队列,如图2所示。
2025-10-21 21:51:22
562
原创 C语言应用:结构体与联合体
结构体和联合体是C语言中的复合数据类型,使用可以把将多种数据类型(包括结构体和联合体,可以嵌套)组合到一定作为一个新的数据类型使用。下面主要是针对这部分内容的讲解。
2025-10-21 13:15:20
175
原创 数据结构8:栈
栈是一种类似于枪弹夹一样的数据结构,先进入的最后弹出,后进入的先弹出,如图1所示。栈栈分为栈顶和栈底,栈只允许对栈顶进行操作,从而决定了栈是先进后出的数据结构。入栈:向栈中添加元素的操作叫做入栈或者压栈,如图2所示。出栈:从栈中取出元素的操作叫做出栈或者弹栈,如图3所示。
2025-10-20 20:41:50
567
原创 数据结构7:栈和队列
在前面的章节中,我们介绍了线性表这一数据结构,并且对它的两种类型,顺序表和链表做了较为详细的介绍,接下来我们将介绍栈和队列这两种常用数据结构。在第一章绪论中,我们对栈和队列进行了简单的介绍。
2025-10-20 20:33:47
596
原创 数据结构6:线性表5_双向链表
上一章节中,我们介绍了循环链表,循环链表解决了直接从链表的尾部到链表头部遍历的问题,提高了链表的实用性。本章节,我们将介绍双向链表,它将进一步提高链表的遍历性能。单向链表结构图如图1所示,当我们已经遍历到Data2此时我们需要去Data1的位置寻找数据,必须从头开始进行遍历即使使用了循环链表,也要经过Data0后才能遍历到Data1。双向链表的出现正是为了解决这样的问题,其结构图如图2所示。每一个节点不仅有着指向后继节点的指针,还有指向前去元素的指针,这样能够保证双向链表可以沿着两个方向对链表进行遍历。
2025-10-18 15:11:24
888
原创 数据结构5:线性表4-循环链表
上一节教程中,我们介绍了最基本的链表结构,如图1所示。从它的结构中可以看出它是一个单向链表,只能沿着一个方向从前到后的遍历。此时存在一个问题,如果我们已经遍历到了Data3的位置,现在想要去读取Data0中的数据,那么我们只能从头开始,这样是很麻烦的。针对这种情况,循环链表被设计了出来,如图所示。从循环链表的结构图中,可以看出循环链表的最末端节点指针指向了头结点,而不是NULL,此时可以直接从Data3处开始去查找Data0,而不用重新开始。
2025-10-16 21:37:27
290
原创 数据结构4:线性表3-链式存储的线性表
作为另一种线性表的存储方式,链式存储的线性表(简称:链表)在存储方式上十分灵活,它不像顺序表一样需要一次开辟一个足够大的连续空间,而是可以利用零碎的内存空间来组成链表。链表的每个元素节点分为数据域和指针域,如图所示,数据域用来存储数据,指针域用来指向下一个元素节点。多个数据节点通过指针连接到一起就可以构成链表,如图所示。采用这种存储方式所构成的链表,在结构上和结构上都十分灵活,链表的长度可以动态地增加和减少,元素节点可以分配在零散的存储区间上,大大提高内存利用率。
2025-10-16 21:30:31
1010
原创 数据结构3:线性表2-顺序存储的线性表
作为线性表的一种,顺序存储的线性表(以后简称:顺序表)在存储结构上更像是一种数组,与数组不同的是,它在操作上要复杂一些,但是与线性表的操作一致(毕竟数据表是线性表的一种)。本章节将对顺序表的定义和操作进行详细的讲解和实现。10//定义顺序表的最大长度typedef struct //定义顺表数据类型int data;}element;typedef struct //定义线性表数据类型int length;}List;
2025-10-15 17:59:43
1053
原创 数据结构2:线性表1-线性表类型及其特点
线性表最常用的数据结构之一,在实际应用中有着很多的应用,例如在操作系统中的各种链表以及数据库中的结构等。线性表(LIST)的定义如下:零个或多个数据元素的有限序列。从定义中可以看出线性表中的数据元素可以有零个,也可以有很多个,但总是有限的;数据元素与数据之间并不是无序的,而是有序的。除去第一个元素无前驱,最后一个数据元素无后继,每个数据元素如图所示。
2025-10-15 17:47:43
821
原创 数据结构1:初识数据结构
数据结构对于从事计算机领域的人来说是极为重要的,在嵌入式领域,数据结构的学习也很重要。简单地说,数据结构所讲述的是数据元素之间的关系,例如数据与数据之间的对应关系、数据之间的组织结构等。数据结构在嵌入式系统中有着很多的应用,例如操作系统中对进程的组织都是通过链表来实现的,操作系统对进程的管理实际上就是对一系列链表的管理,如下图所示。C语言中的函数调用和单片机中的中断现场保护是通过栈来实现的,如下图所示。这里不做过多讲述,感兴趣的话可以读一下有关操作系统和计算机方面的书籍。
2025-10-12 21:19:32
451
原创 AT指令解析:TencentOS Tiny AT指令解析源码分析2-数据类型定义
本篇主要是对TencentOS Tiny AT指令解析源码中的数据类型定义进行讲解,便于后续对源码逻辑进行讲解。
2025-10-12 11:45:13
276
原创 AT指令解析:ring_buffer、信号量、互斥量等基础知识
指针管理:通过读写指针(next_to_use/next_to_clean)跟踪位置,当缓冲区满时覆盖旧数据或抛出异常。多线程/进程通信:生产者线程写入数据,消费者线程按顺序读取,适用于异步任务调度。固定容量:缓冲区大小固定,通常用静态数组实现,无需频繁申请/释放内存。循环读写:数据从尾部写入时自动覆盖头部数据,读操作从头部开始循环读取。高效内存利用:数据消费后无需移动其他数据,减少内存碎片化。容量策略:若需动态扩容,需整体搬移数据,此时链表更合适。
2025-10-11 22:25:48
327
原创 AT指令解析:TencentOS Tiny AT指令解析源码分析1-TencentOS Tiny 简介
在物联网方面,TencentOS tiny基于RTOS内核提供了丰富的物联网组件,内部集成了多种主流物联网协议栈(如 CoAP/MQTT/TLS/DTLS/LoRaWAN/NB-IoT 等),极大的方便了物联网终端设备及业务快速接入物联网平台。针对AT指令的处理,TencentOS tiny设计了一套可读性高、稳定可靠的处理框架,本文及其后续的文章,均是对TencentOS tiny AT指令处理代码的源码分析。
2025-10-10 21:53:16
295
原创 AT指令解析:AT指令简介
在目前大多数的物联网应用项目中,都是通过 MCU+通讯模组(GSM、Wi-Fi、蓝牙等)的方式实现对外的通讯,例如:MCU+4G模组,MCU+蓝牙模组等。MCU和模组的通讯接口通常是UART,通讯协议通常是AT指令,如下图所示。
2025-10-10 13:08:21
510
原创 CRC校验_C语言/Verilog代码生成工具
本工工具是一款用于CRC校验计算和代码生成的软件工具,支持CRC-4、CRC-5、CRC-6、CRC-7、CRC-8、CRC-16、CRC-32等多种CRC校验计算和代码生成,可自动生成C语言代码和Verilog语言的代码,极大方便了在嵌入式开发过程中,CRC校验算法的使用。
2021-01-14 14:09:32
2310
11
原创 C#网络编程UDP发送与接收
本代码为C#socket网络编程程序,使用的UDP通讯协议,能够实现数据的接收与显示。代码效果如图所示:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using Sy...
2020-02-13 16:26:03
1800
1
原创 DDS原理
DDS(Direct Digital Synthesizer)技术是一种全新的频率合成方法,最早由JOSEPH TIERENY等三人提出,是从相位概念出发直接合成所需波形的一种频率合成技术,通过控制相位的变化速度,直接产生各种不同频率、不同波形信号的一种频率合成方法。DDS原理若对一正弦波形进行采样,每周期采样点为 m个,分别记为 1~m。每经过频率为fc参考时钟的一个周期,输出一个采样点,在...
2019-12-11 15:03:50
11580
4
原创 CRC校验算法的Verilog实现
一、 文章简述CRC算法在通讯和数据传输领域中有着广泛的应用,关于CRC的原理本文档不做阐述,本文档将将重点放在Verilog CRC代码生成工具的使用和如何修改代码使其满足我们的要求两个方面来CRC算法Verilog实现的进行讲解。本教程包含以下方面的内容:1.CRC类型简介2.CRC参数简介3.crc-gen代码生产工具的使用4.CRC 校验代码的移植5.CRC校验代码的测试二、...
2019-10-24 16:18:08
13766
16
原创 CRC校验的分析与C语言实现
CRC是一种常见的校验方式,校验效果较好,在嵌入式系统中有着很广泛的应用。本文将对CR校验算法的C语言的实现进行详细地讲解。本文不对CRC校验的原理进行表述,只是讲解如何根据CRC校验要求或标准进行C语言代码的实现。本文对CRC类型进行讲解,并且针对不同的类型,都会有代码实现,帮助理解代码。CRC代码测试工具:CRC类型简单来讲,CRC分为CRC-4、CRC-5、CRC-6、CRC-7、CR...
2019-10-22 17:37:15
4330
6
原创 基于RGMII的FPGA千兆以太网设计
一.总体概括千兆以太网的理论网速为1000Mbit/s,实际网速接近该值,但几乎不可能达到,但相对于百兆网,网速快了很多。目前千兆以太网常用物理层接口有GMII和RGMII,两种接口有同有异,应用情况也有所差别。GMII占用的引脚较多,RGMII可以很大程序地减少引脚的使用。因此本设计采用RGMII接口进行设计,物理层芯片采用RTL8211E,根据以太网数据帧的要求并遵循相关时序要求,编写FPG...
2019-10-15 17:15:27
10198
4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅