Ch32x033 Arduino 环境USB 键盘开发

目前已经有 Ch32x035 的 Arduino 开发环境,在 https://github.com/openwch/arduino_core_ch32 可以看到。美中不足的是这套环境中没有提供 USB 的支持。经过研究可以在代码中加入官方示例代码来实现 USB 功能。这次演示的是在 Ch32X033 板子上实现USB 键盘每隔一段时间输入字符的功能。

第一步,按照上面提到的方法安装 ch32x035的Arduino 支持;

第二步,编写代码。这里参考了Ch55xduino 的方法,创建了 src 目录,然后在这个目录中再创建userUsbKB 目录,对于 USB 支持的代码都在其[......]

阅读全文

LattePanda Mu X86计算模块套件

最近入手了LattePanda Mu ,这是一款微型 x86 计算模块,模块上带有 Intel N100 四核处理器、8GB LPDDR5 内存和 64GB 存储。搭配基础载板,后可以扩展出来
2个 USB 3.2 10Gbps 接口,1个千兆以太网,2个USB 2.0 ,1个HDMI 2.0,1个PCIEx1 接口。

供电方面可以通过USB Type-C(仅供电) 和12V DC 5.5x2.5mm 进行。

完整的系统分为2部分:核心板和载板。同样的核心板可以搭配不同的载板实现更强的扩展。

核心板非常迷你,接近信用卡尺寸:

左上角的芯片是 LPDDR5 内存芯片[......]

阅读全文

C语言内联函数

在阅读代码的过程中,我们有时候会碰到使用 inline 修饰的函数。这是C99 新增的内联函数(inline function)。这种内联函数相当于给编译器一个建议,告诉它将函数的代码插入到调用的地方。编译器可以选择忽略内联函数的建议,继续将函数编译为常规函数。

简单的说,对于常规函数编译器会将它解释成压栈,然后 call 函数名这样的指令;对于内联函数,编译器可以直接在调用处“展开”。这样就避免了压栈和 call 的开销。这样的设计让人很容易联想起来宏定义。

以一个例子来进行说明:

代码非常简单,定义了一个内联函数 swapINT1() 和一个普通函数swapINT2([......]

阅读全文

CH552 PWM 测试

根据资料,CH552 的PWM 频率是根据 PWM_CK_SE 的分频而来【参考1】。具体的频率计算方法是:

Fsys / 256 / PWM_CK_SE

对应的 DataSheet 描述如下:

为此,编写一段测试代码:

当前频率为 16,000,000/256/1=62.5KHz

频率和上面的相同,只是占空比不同。

当前频率为 16,000,000/256/16=3.906KHz

参考:

[......]

阅读全文

Step to UEFI (292)Cpp UEFI 008 This 是啥

这一系列文章的目标是让人看懂C++ 代码,因此很多地方知道意思即可。这次介绍的是 “this” 这个关键字。这是一个指向当前对象的 const 指针,通过它可以访问当前对象的所有成员。更简单的描述如下【参考1】:

一.this是什么

this 是 C++ 中的一个关键字

this是一个 const 指针

this 指针是所有成员函数的隐含参数

二、this可以用在哪

this 只能用在类的内部

this可用于调用类的成员函数和成员变量

三、this可以用来做什么

它指向当前对象,通过它可以访问当前对象的所有成员(包括 private、pro[......]

阅读全文

测试0x3F8 串口输出的 UEFI Application

之前的文章【参考1】介绍过,初始化 Legacy COM Port 为 115200 的方法。这次编写一个 UEFI Shell Application,初始化这个 COM port 之后输出 www.lab-z.com字符。

虽然有很多BIOS 的调试方法,但是BIOS 工程师最常见的方法仍然是串口输出 Log,唯一的原因是:足够简单和直接。用户无需为了调试BIOS而去调试工具。

源代码和编译后的 EFI Application:

参考:

1. https://www.lab-z.com/ocuart/

[......]

阅读全文

推荐一个开源的HTTP Server

有些时候我们需要进行一些带有JavaScript的网页测试,为了保证能够可靠的运行,推荐架设一个的 HTTP Server 然后通过浏览器进行测试。这推荐一个开源简单的命令行 HTTP Server:simple-http-server,项目地址是https://github.com/TheWaWaR/simple-http-server/

项目支持多种 OS:

对于我们来说,最简单的是 Windows 版本的。

具体的命令行参数如下:

比较常用的参数有如下几个:

--ip :指定绑定的IP 地址

-p : 指定绑定的端口号

例如:首先使[......]

阅读全文

修改 Win11 鼠标右键菜单的方法

Windows 11 中修改了鼠标右键菜单,我们经常需要选择“Show more options”才能找到我们需要的功能。本文介绍如何修改为之前的菜单。

管理员权限使用如下命令即可修改为老式右键菜单风格:

之后还可以使用如下命令恢复:

修改之后需要重启才能生效,或者使用如下命令重启Explorer:

编写两个批处理方便使用(密码 labz):

参考:

1.https://answers.microsoft.com/en-us/windows/forum/all/restore-old-right-click-context-men[......]

阅读全文