刷新
栈(Stack)的原理与代码实现

博主头像 栈(stack) 原理说明: ​ 学习数据结构的目的是为了更好的处理和存储数据,对于顺序表而言改查比较容易,增删比较麻烦,对于链式表而言,增删比较简单,改查比较麻烦,所以每种数据结构都有不同的特点,用户需要选择合适的数据结构。 ​ 栈内存自顶向下进行递增,其实栈和顺序表以及链式表都一样,都属于线性结 ...

双向循环链表

博主头像 双向循环链表 原理与应用 双向循环链表与双向链表的区别:指的是双向循环链表的首结点中的prev指针成员指向链表的尾结点,并且双向循环链表的尾结点里的next指针成员指向链表的首结点,所以双向循环链表也属于环形结构。 双向循环链表各功能实现 (1)为了管理双向循环链表,需要构造头结点的数据类型以及构造 ...

双向链表(不循环)

博主头像 双向链表 双向链表的原理与应用 如果想要提高单向链表或者单向循环链表的访问速度,则可以在链表中的结点中再添加一个指针域,让新添加的指针域指向当前结点的直接前驱的地址,也就意味着一个结点中有两个指针域(prev + next),也被称为双向链表(Double Linked List)。 单向循环链表实 ...

单向循环链表(其一)

博主头像 单向循环链表(其一) 单向循环链表的原理与应用: 单向循环的链表的使用规则和普通的单向链表没有较大的区别,需要注意:*单向循环链表的尾结点的指针域中必须指向链表的首结点的地址*,由于带头结点的单向循环链表更加容易进行管理,如下图所示: 上图所示的就是一个典型的单向循环链表的结构,可以发现单向循环链表 ...

MIT6.S081 - Lab2: system calls

博主头像 Lab2: system calls 预备知识 执行一次系统调用的流程: USER MODE step1:系统调用声明 user/user.h:系统调用函数(如 int fork(void)) step2:ecall 进入内核态 user/usys.S(该文件由 user/usys.pl 生成,后续 ...

顺序表和链表的练习题

博主头像 顺序表 题目一: 题目分析: 该题目需要先对顺序表进行遍历至元素x正确插入位置,再对顺序表完成插入操作。因此涉及到for循环与if语句的使用 代码实现 /******************************************************************** * * ...

痞子衡嵌入式:在i.MXRT1xxx系列上用NAND型启动设备时可用两级设计缩短启动时间

博主头像 大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是在i.MXRT1xxx系列上用NAND型启动设备时可用两级设计缩短启动时间。 去年痞子衡写过一篇骚操作文章 《借助i.MXRT10xx系列INIT_VTOR功能可以缩短程序热重启时间》,这对于 NAND 型启动设备上程序热重启时间的缩短 ...

【ESP32 IDF】用RMT控制 WS2812 彩色灯带

博主头像 在上一篇中,老周用 .NET Nano Framework 给大伙伴们演示了 WS2812 灯带的控制,包括用 SPI 和 红外RMT 的方式。利用 RMT 是一个很机灵的方案,不过,可能很多大伙伴对 ESP32 的 RMT 不是很熟悉。除了乐鑫自己的文档,没几个人写过相关的水文,可见这里头空白的水 ...

结构体学习

博主头像 /******************************************************************************************************** * * 提高可移植性 Copyright (c) 2023-2024 cececlmx@ ...

MIT6.S081 - Lecture3: OS Organization and System Calls

博主头像 为什么要使用操作系统 使用操作系统的主要原因是为了实现 CPU 多进程分时复用以及内存隔离 如果没有操作系统,应用程序会直接与硬件进行交互,这时应用程序会直接使用 CPU,比如假设只有一个 CPU 核,一个应用程序在这个 CPU 核上运行,但是同时其他程序也需要运行,因为没有操作系统来帮助切换,就需 ...

MIT6.S081 - Lab1: Xv6 and Unix utilities

博主头像 Part1:sleep 实验要求与提示 可以参考 user/echo.c, user/grep.c 和 user/rm.c 文件 如果用户忘记传递参数,sleep 应该打印一条错误消息 命令行参数传递时为字符串,可以使用 atoi 函数将字符串转为数字 使用系统调用 sleep,有关实现 sleep ...

分享一款嵌入式开源按键框架代码工程MultiButton

博主头像 一、工程简介 MultiButton 是一个小巧简单易用的事件驱动型按键驱动模块。 Github地址:https://github.com/0x1abin/MultiButton 这个项目非常精简,只有两个文件: (1)可无限扩展按键; (2)按键事件的回调异步处理方式可以简化程序结构,去除冗余的按 ...

MIT6.S081 - Lecture1: Introduction and Examples

博主头像 课程简介 课程目标 理解操作系统的设计和实现 通过 XV6 操作系统动手实验,可以扩展或改进操作系统 操作系统的目标 Abstraction:对硬件进行抽象 Multiplex:在多个应用程序之间共用硬件资源 Isolation:隔离性,程序出现故障时,不同程序之间不能相互干扰 Sharing:实现 ...

ESP32 Arduino开发 MQTT

博主头像 ESP32 Arduino开发 MQTT 目录ESP32 Arduino开发 MQTT1. 安装程序库2. 编写相关程序2.1. 引入头文件2.2. 定义MQTT相关参数2.3. 创建对象2.4. 连接网络2.5. 连接MQTT服务器2.6. MQTT回调函数3. 完整的代码例程4. MQTT连接测 ...

开启mmu后,call和jalr的区别

博主头像 在我写虚拟内存时遇到一些问题,jalr t0就是可以的,而call main则没办法成功 而且这里默认main是偏移前的地址,怪哉!!! 让我们看看jalr 和call(伪指令!!!) 然后在链接后看看main的地址,主要看程序中main是不是偏移 悬着的心也死了!!! 查看一下ucore也有类似的 ...

《痞子衡嵌入式半月刊》 第 97 期

博主头像 痞子衡嵌入式半月刊: 第 97 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回顾 ...

一个关于编译器优化选项问题的解决

因为当前项目单片机容量不够使用,打算开启编译器优化,结果在使用KEIL编译器优化后,程序在发送Modbus数据时,程序直接跑飞了 先说结论: 最后发现是局部变量指针作为了DMA的内存地址参数,导致当DMA连续搬运数据时,实际那个局部变量已经被释放,导致DMA搬运数据的过程中出现错误,但是为什么没优化 ...

ESP-IDF NVS

博主头像 ESP-IDF NVS 目录ESP-IDF NVS1. 什么是NVS?2. NVS中的概念2.1. partition 分区2.2. namespace 命名空间2.3. key-value 键值对3. ESP-IDF中NVS的代码实现 1. 什么是NVS? 非易失性存储 (NVS) 库主要用于在 ...

<1···91011···18>