自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

朱工的专栏

专注/深入/分享

  • 博客(263)
  • 资源 (27)
  • 收藏
  • 关注

原创 lwIP 细节之三:errf 回调函数是何时调用的

使用 lwIP 协议栈进行 TCP 裸机编程,其本质就是编写协议栈指定的各种回调函数。将你的应用逻辑封装成函数,注册到协议栈,在适当的时候,由协议栈自动调用,所以称为回调。本节讲述 errf 回调函数。

2023-12-12 16:29:24 408

原创 显示屏 LM3033(ST7920主控)

介绍 LM3033 LCD 显示屏用法。该显示屏使用的主控芯片为 ST7982

2023-12-06 12:16:47 240

原创 C 嵌入式系统设计模式 02:结构化编程与面向对象编程

结构化编程将软件组织成两个截然不同的方面:数据和行为。面向对象的方法将两者结合起来,让紧密耦合的元素更内聚,并提高内容的封装。C 是结构化语言,但它可以用于开发面向对象的嵌入式系统。

2023-11-28 10:51:13 941

原创 C 嵌入式系统设计模式 01:软件开发概述

软件开发的真相之一是,协同开发必然伴随着重建。

2023-11-21 16:26:28 278 1

原创 AD7792/AD7793 备忘

AD7792/AD7793 是一款 ∑-Δ ADC,3 通道、低噪声,内部集成仪表放大器和参考源。AD7792 为 16 位,AD7793为 24 位。

2023-11-06 17:38:11 1181

原创 搜索语法备忘

这篇文章记录传统搜索引擎的一些搜索语法和技巧。

2023-10-31 16:46:07 173

原创 Linux Shell :正则表达式

正则表达式用来指定字符串的模式,经常用于搜索-替换操作。

2023-10-24 17:31:21 436

原创 电压参考芯片 LM285D-1.2 备忘

LM285D-1.2是一款参考电压芯片,本次备忘使用的数据手册是安美森家的。LM285D中的D指的是 SOIC-8 封装,是贴片的;而LM285Z中的Z指的是 TO-92 封装,是直插的。购买时需要注意,防止买错封装。注:以下参数中,典型值均在 25℃条件下测得。

2023-10-17 16:25:50 467

原创 Linux Shell :基本语法汇总

这里记录 Linux Shell 基础语法

2023-10-13 12:57:38 312

原创 lwIP更新记10:IP 冲突检测

lwip-2.2.0-rc1 版本于 2023 年 6 月 29 日发布,带来了我期盼已久的 `IPv4 冲突检测` 功能。

2023-08-21 10:52:15 1048

原创 TortoiseGit 入门指南17:使用子模块

如果你想在自己的代码仓库中嵌入其它仓库,这称为引入子模块(Submodule)。使用右键菜单TortoiseGit - Submodules Add 选项,弹出添加子模块对话框,可以将一个外部仓库嵌入到源代码树的专用子目录中。

2023-07-26 19:17:09 2011 1

原创 TortoiseGit 入门指南16:叠加图标不见了

叠加图标是一种可视化的提示系统,它通过在文件和文件夹的图标上添加额外的图形元素(即叠加),来显示这些文件或文件夹的 Git 状态。这样,用户可以直接在文件浏览器中看到哪些文件已经被提交,哪些文件还有未提交的更改

2023-07-20 16:36:36 391

原创 TortoiseGit 入门指南15:版本分支图与浏览存储库

版本分支图(Revision graphs)用于方便的查看分支和标签的位置。随着时间的推进,仓库的分支和标签也会越来越多,分支和标签之间的关系会呈树状,那么就需要能在一张图上显示所有这些关系的功能,版本分支图就是为此而开发的。

2023-07-20 16:05:19 1757

原创 TortoiseGit 入门指南14:比较差异

版本控制系统最常见的应用是查看发生了哪些变化。Git 通过比较两个 文件 或者两个 提交 的 差异 (differences)来实现这个功能。

2023-07-20 10:14:00 2100

原创 TortoiseGit 入门指南13:拣选

对于多分支的代码库,将代码从一个分支转移到另一个分支是常见需求。这时分两种情况。一种情况是,你需要另一个分支的所有代码变动,那么就采用 合并(merge)。另一种情况是,你只需要部分代码变动(某几个提交),这时可以采用 拣选(Cherry pick)。通俗的讲 拣选 直接把某一次 提交 (commit)拿过来,作为最新一次提交,就像是直接摘了一颗樱桃加在链表最前面,所以叫Cherry pick (拣选)。

2023-07-19 20:46:46 1770 1

原创 TortoiseGit 入门指南12:创建标签

标签 是一种 引用 ,用于标记特定提交点,代表了一个项目的特定版本或里程碑。还可以理解为标签就是某次提交的别名,标签的最重要应用是标记程序的版本。标签的作用包括:

2023-07-19 20:13:58 2150

原创 TortoiseGit 入门指南11:还原与重置

Git 就像个时光机器,能让我们还原到任何提交。

2023-07-19 19:45:32 2994

原创 TortoiseGit 入门指南10:贮藏

有时,当你在项目的一部分上已经工作一段时间后,所有东西都进入了混乱的状态, 而这时你想要切换到另一个分支做一点别的事情。 问题是,你不想仅仅因为过会儿回到这一点而为做了一半的工作创建一次提交。 针对这个问题的答案是贮藏 命令。

2023-07-17 21:15:16 1059 1

原创 TortoiseGit 入门指南08:浏览引用以及在引用间切换

在上一节 创建分支 中,我们学会了在分支上开发新功能,那么随之而来的问题是:如何查看项目又多少分支?如何再切换到主分支?这节来解决这些问题。在回答之前,需要先了解一个 Git 术语:引用(Refs)。简而言之,引用是指 分支、标签等。要理解引用概念,需要了解一点 Git 的内部原理。

2023-07-16 20:12:34 669

原创 TortoiseGit 入门指南09:合并

上一节讲了 分支,提到一种常用的工作流:将默认分支(master)设置为主分支,保存最新的、随时可以发布的版本,所有的新特性、BUG都在另一个称为特性分支上增加或修改,然后在一个合适点,将特性分支内容 合并 到主分支。本节,讲述如何用 TortoiseGit 合并分支。

2023-07-16 19:18:58 4474

原创 TortoiseGit 入门指南07:创建分支

Git 的 `分支` 出了名的好用。其它的版本控制系统也提供分支,但在易用度上,只有两类版本控制系统:一种是 Git,一种是其它。

2023-07-16 10:48:41 1872

原创 TortoiseGit 入门指南06:解决冲突

上节讲到 `拉取` (pull),说到**拉取**不仅将数据下载到你的本地版本库,还会自动**合并**。在合并期间,将更新工作区文件以反映合并结果。如果合并的文件被**多方对同一区域进行更改**,就会产生冲突。Git 不能随机选择一方而丢弃另一方,所以会要求开发者手动解决冲突。每当报告冲突时,都需要解决它。

2023-07-14 08:31:45 2460

原创 TortoiseGit 入门指南05:推送和拉取

`远端版本库` 通常是放在托管平台上的版本库,通过这种方式,可以备份代码、随时随地获取代码、与其他人员协同工作等。常见的托管平台有 `Github`(国内访问速度受限)和 `gitee` (国内托管平台,访问速度快)。`本地版本库` 与 `远端版本库` 之间的交互主要涉及到 `克隆` 、`拉取` 、`抓取`、`推送` 这几个操作。

2023-07-12 12:27:37 3181

原创 TortoiseGit 入门指南04:查看提交日志

如果每次**提交**都按照规定格式书写提交信息,这样一来就可以使用**日志**功能来查看开发过程,找出所做的更改以及更改原因。在仓库中右击鼠标 - 选择 `TortoiseGit - Show log` 打开日志对话框

2023-07-11 08:41:41 3402

原创 TortoiseGit 入门指南03:将修改提交到版本库

你现在应该已经有了一个仓库,在工作过程中会对项目做一些修改,比如添加代码、修复错误等等,你将不定时的将这些更改 `提交`(commit)到代码仓库。

2023-07-10 13:16:24 1127

原创 TortoiseGit 入门指南02:创建和克隆仓库

本节讲解如何使用 TortoiseGit 创建和克隆仓库。但在此之前,我们先来看下 TortoiseGit 软件的一个特色:图标。TortoiseGit 会给 `工作区` 中的文件和文件夹叠加图标(`Icon Overlays`),图标反应的是这些文件和文件夹的当前状态。目前,共 9 种图标。

2023-07-09 21:30:04 1341

原创 TortoiseGit 入门指南01:环境搭建和软件设置

TortoiseGit 是版本控制系统 Git 的图形用户界面,是一个开源软件,用于 Windows 环境。本篇介绍环境搭建和软件设置

2023-07-09 19:31:16 1066

原创 随想012:断言

主流编程语言不约而同的在语言层面上提供了 `断言` 机制;编程专家们不约而同的提倡使用 `断言`;优秀的代码不约而同的已经使用了 `断言` 。即使是第一次听说断言,你也应该意识到,这个东西应该挺重要。那么接下来的问题是,什么是断言(**assert**)?

2023-06-29 11:06:27 312

原创 Keil 重定向 fputc 函数 以及 printf 函数的代码尺寸测试

本文的开发环境为 Keil + Cortex-M3 内核处理器。介绍重定向 fputc 函数的方法测试 printf 函数的代码尺寸

2023-06-21 16:18:24 1330 2

原创 lwIP更新记09:内存分配多线程保护

从 lwIP-1.1.1 到 lwIP-2.0.0,内存分配的多线程保护经过了多次更改。

2023-06-20 17:18:07 409

原创 lwIP更新记08:TCP 回调函数中调用 tcp_abort 终于安全了

从 lwIP-1.4.0 开始,从 tcp 回调函数中调用 `tcp_abort` 函数终于安全了。在此之前,如果从 tcp 回调函数中调用 `tcp_abort`,则会访问未分配的内存。

2023-05-26 08:11:35 1824 2

原创 随想011:关于编程

软件工程的最基本经验是:保持简洁。软件设计有两种方式:一种是设计得极为简洁,明显没有缺陷;另一种是设计得极为复杂,没有明显的缺陷。第一种方式要难得多。

2023-05-25 11:23:43 1106 1

原创 lwIP更新记07:TCP 控制块申请失败可以检测到了

从 lwIP-2.0.0 开始,TCP 控制块申请失败可以检测到了。这个更新应用在 TCP 服务器模式中,处于`监听`状态的 TCP_PCB ,如果收到客户端发送的 SYN 同步标志,表示一个客户端在请求建立连接了。lwIP 会为这个新连接申请一个 TCP_PCB ,这一过程在 `tcp_listen_input` 函数中完成的。然而 TCP_PCB 的个数是有限的,如果申请失败,对于失败的处理, lwIP-2.0.0 及以上版本与 lwIP-1.4.1不同。lwIP-1.4.1 失败的毫无声息,而

2023-05-24 11:11:52 907

原创 lwIP更新记06:申请 TCP 控制块(tcp_alloc)

从 lwIP-2.0.0 开始,申请 `tcp_pcb` 控制块的逻辑发生了变化。每个 tcp 连接都必须有一个 PCB 控制块 ,使用函数 `tcp_new()` 申请 PCB 控制块。

2023-05-23 14:40:55 1224

原创 lwIP更新记05:核心应用文件移动

从 lwIP-2.0.0 开始,lwIP 开发者将一些核心应用从 `contrib` 仓库移动到 `lwIP` 仓库的 `src/apps` 文件夹。对比版本 `lwIP-1.4.1` 和 `lwIP-2.1.2` 的 `src` 文件夹内容,可以发现 `lwIP 2.1.2` 版本多了一个 `apps` 文件夹。

2023-05-22 12:09:04 528

原创 lwIP更新记04:TCP 初始序列号生成算法可以自定义了

从 lwIP-2.0.0 开始,可以自定义 TCP 报文段的初始序列号。TCP 报文段首部有一个序列号字段,它是一个32位的计数器,从 0 到 4294967295,它的值为当前报文段中第一个数据的字节序号。TCP 在建立连接的时候需要初始序列号(Initial Sequence Number:ISN),lwIP 为每个新的 TCP 连接生成一个 TCP 初始序列号。tcp.c 中的函数 `tcp_next_iss` 用于这个目的。

2023-05-22 10:57:18 504

原创 lwIP更新记03:IPv6

从 lwIP-2.0.0 开始,lwIP 终于有可用的 IPv6 协议栈了!从这个版本开始,lwIP 支持 `双栈`(IPv4 和 IPv6 同时使用) 或 `IPv4/IPv6 二选一` 。lwIP-1.4.1 版本也有 IPv6,但那是实验性质的(见..\lwip-1.4.1\src\core\ipv6目录下的`README`文件),并不能在实际项目中使用的。

2023-05-21 16:50:48 1310

原创 lwIP更新记02:网络接口标志(一个标志只做一件事)

从lwIP 2.0.0 开始,修改网络接口 netif 的`up`标志为管理标志,`up`标志**不再具有**以前的 `IP4 地址有效` 含义。现在,如果一个网络接口 netif 没有设置`up`标志,则用户**不能**在这个网络接口上收发数据!即便是使用 DHCP,在启动 DHCP 客户端之前,也要将 netif 设置为`up`状态。这与lwIP 1.4.1版本不同。

2023-05-21 11:47:21 1223

原创 lwIP更新记01:全局互斥锁替代消息机制

从 lwIP-2.0.0 开始,在 `opt.h` 中多了一个宏开关 `LWIP_TCPIP_CORE_LOCKING`,默认使能。这个宏用于启用 `内核锁定` 功能,使用 `全局互斥锁` 实现。在之前,lwIP 使用 `消息机制` 解决 lwIP 内核线程安全问题。消息机制易于实现,因为实现简单,更容易做到高稳定性。但使用消息机制效率低下,所以 lwIP 从 V2.0.0 开始,正式支持(并默认使用)全局互斥锁,同时仍保留消息机制。全局互斥锁方案实现复杂,但效率非常高。本文探索全局互斥锁方案是怎么诞生并

2023-05-20 16:38:18 1233 1

原创 随想010:该在哪里花费时间

当一个复杂的软件产品刚开始的时候,它还没有吸引众多用户。这意味着开发人员不必考虑多许多人造成不便或者“破坏”使用该产品的程序,因此可以快速地对产品进行修改。的前 5 个主要版本(X1 ~ X103)在 2 年内发布,但自从1987 年 9 月 发布版本。这是软件设计的一个重要的长远原则,当你开发一个重要的产品而且希望它能持续很长一段时间时,至今几乎仍是 UNIX/Linux 所有 GUI 的基础。一个灵活的、深思熟虑的设计可以使产品的生命力持久。以来,经过了将近 36 年,这描述了一个有趣的现象。

2023-05-18 16:24:52 655

LM3033(ST7920主控)驱动代码

LM3033(ST7920主控)驱动代码

2023-12-23

FreeRTOS V7.4.2(官方原版)

FreeRTOS V7.4.2(官方原版)

2016-06-02

FreeRTOS V7.5.0(官方原版)

FreeRTOS V7.5.0(官方原版)

2016-06-02

FreeRTOS V7.5.2(官方原版)

FreeRTOS V7.5.2(官方原版)

2016-06-02

FreeRTOS V7.5.3(官方原版)

FreeRTOS V7.5.3(官方原版)

2016-06-02

FreeRTOS V7.6.0(官方原版)

FreeRTOS V7.6.0(官方原版)

2016-06-02

FreeRTOS V8.1.0(官方原版)

FreeRTOS V8.1.0(官方原版)

2016-05-29

FreeRTOS V8.0.0(官方原版)

FreeRTOS V8.0.0(官方原版)

2016-05-29

FreeRTOS V8.0.1(官方原版)

FreeRTOS V8.0.1(官方原版)

2016-05-29

FreeRTOS V8.1.1(官方原版)

FreeRTOS V8.1.1(官方原版)

2016-05-29

FreeRTOS V8.1.2(官方原版)

FreeRTOS V8.2.0(官方原版)

2016-05-29

FreeRTOS V8.2.0(官方原版)

FreeRTOS V8.2.0源代码(官方原版)

2016-05-29

FreeRTOS V8.2.1(官方原版)

FreeRTOS V8.2.1源码(官方原版)

2016-05-28

FreeRTOS V8.2.2(官方原版)

FreeRTOS V8.2.2(官方原版)

2016-05-28

FreeRTOS V8.2.3(官方原版)

FreeRTOS V8.2.3(官方原版)

2016-05-28

FreeRTOS V9.0.0rc1(官方原版)

FreeRTOS V9.0.0rc1(官方原版)

2016-05-28

FreeRTOS V9.0.0(官方原版)

FreeRTOS V9.0.0(官方原版)

2016-05-28

周立功SmartCortex M3-1788开发板原理图

周立功SmartCortex M3-1788开发板原理图

2012-09-17

DM9161A数据手册

DM9161A 数据手册 datasheet

2012-08-13

Stellaris LM3S9B96开发套件用户手册

Stellaris LM3S9B96开发套件用户手册

2012-02-04

LM3S9B96开发套件Read Me First

LM3S9B96开发套件Read Me First

2011-11-19

LPC2000系列远程升级资料.rar

LPC2000系列远程升级资料.rar LPC2000系列远程升级资料.rar

2011-09-20

IN4001~IN4007中文资料

IN4001~IN4007中文资料 中文器件手册

2010-05-14

keil 注册机 取消keil 2K限制

keil注册机 杀毒软件会误报,因为注册机会进行底层分析,若觉得危险可以不用.

2010-04-14

IIC总线协议-基于at24c64

IIC总线协议-基于at24c64 有完整的汇编和C语言程序

2010-03-13

安全监控系统通用技术要求(AQ6201—2006)

安全监控系统通用技术要求(AQ6201—2006)

2010-03-12

真正的《基于 S3C2440的触摸屏驱动程序实现》强新建、田泽、刘天时

摘   要:触摸屏作为人机界面的输入设备被广泛的应用于消费电子、 工业控制等诸多领域。目前流行的 嵌入式 ARM处理器 S3C2440是一款典型的嵌入式 SoC芯片,它提供了触摸屏控制器接口,方便了嵌入式 软、 硬件开发。简要介绍了 S3C2440处理器,同时分析了触摸屏的硬件架构、 硬件工作原理及与及其工作 框图,在此基础上给出了触摸屏与 S3C2440的硬件连接电路图。介绍了 S3C2440下触摸屏的 WinCE驱动 构架,并指出相关注册表的修改技术。在 S3C2440的嵌入式 WinCE开发平台上,该驱动程序运行良好。 关键词: S3C2440; 触摸屏; 驱动

2009-10-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除