2025-05-07 17:30:14 +08:00
..
2025-05-03 03:14:39 +08:00
2025-05-03 22:00:46 +08:00
2025-05-04 17:48:00 +08:00
2025-05-05 02:22:54 +08:00
2025-05-03 21:40:39 +08:00
2025-05-03 21:35:34 +08:00
2025-05-06 20:26:25 +08:00
2025-05-03 21:28:06 +08:00
2025-05-07 15:39:48 +08:00
2025-05-07 12:09:36 +08:00
2025-05-07 17:30:14 +08:00
2025-05-03 03:14:39 +08:00
2025-05-04 00:47:43 +08:00
2025-05-04 00:47:43 +08:00
2025-05-03 21:35:34 +08:00
2025-05-06 16:40:36 +08:00
2025-05-06 16:40:36 +08:00
2025-05-03 02:42:51 +08:00
2025-05-03 02:42:51 +08:00
2025-05-03 03:14:39 +08:00
2025-05-03 03:14:39 +08:00
2025-05-03 03:14:39 +08:00

说明

hbox意为HYH的工具箱。

实现一些在开发过程中的常用函数及相关结构。

主要用于嵌入式编程通常只依赖于C运行库与部分OS接口,尽量使用较少的依赖以适应各种编译环境。

HBox_Structure

硬件要求

主要支持32位及更高位宽的硬件平台,包括但不限于嵌入式硬件平台:

  • 32位通用硬件平台
  • 32位嵌入式硬件平台(如单片机等)
  • 64位通用硬件平台
  • 64位嵌入式硬件平台

8位/16位平台的C编译器基本有其独特的扩展C语言代码专用性比较强如需使用相关组件一般需要进行一些针对性适配。

宏定义

本章节所指宏定义主要指用户传递的宏定义,并非组件内部的宏定义。

宏定义通常是通过编译器命令行参数传递的,也可能是编译器预定义的,也可通过特殊的头文件(如config.h)定义。

不同的宏定义将触发不同的行为。

宏定义 说明 备注
__RTTHREAD__ 处于RT-Thread操作系统 RT-Thread 4.0.3+有效
__NuttX__ 处于NuttX操作系统
WIN32 处于windows中
__unix__ 处于(类)unix中 若处于linux中可使用__linux__ 判断。在(类)unix中将使用pthread及其相关库有些可能需要手动启用
__FreeBSD__ 处于FreeBSD中 通常也会定义__unix__,即处于(类) unix中。
__linux__ 处于linux中 通常也会定义__unix__,即处于(类) unix中。
__ANDROID__ 处于Android中 通常也会定义__unix____linux__,即处于(类) unix、linux中。
__CYGWIN__ 处于Cygwin中 通常也会定义__unix__,即处于(类) unix中。
__EMSCRIPTEN__ 处于emscripten中 通常也会定义__unix__,即处于(类) unix中。
__STDC_NO_ATOMICS__ 当此宏定义被定义时C不包含_Atomic原子类型名,即不支持原子操作。 C11起
HAVE_CONFIG_H config.h存在,当定义存在时包含config.h 此宏定义一般由用户定义
HBOX_CONFIG_HEADER HBOX_CONFIG_HEADER表示hbox的配置文件路径(不含引号)若定义将由hdefaults包含该配置文件。 此宏定义一般由用户定义

C++组件

此C++组件主要用于嵌入式代码,一般不依赖某些在嵌入式中一般不移植的C++运行库(如线程、互斥等),依赖于本工具箱的C代码。

此C++组件具体实现与说明见cpp目录。

组件

hcompiler

主要提供一些编译器相关特性的宏定义。

具体实现见hcompiler目录

hdefaults

本组件主要提供一些定义及函数。

本组件主要用于提供统一访问OS接口的接口,其它组件一般不直接与OS接口打交道。

具体实现见hdefaults目录

hevent

本组件主要用于辅助进行事件处理。

具体实现见hevent目录

hdriverframework

本组件主要用于辅助进行驱动编写。

具体实现见hdriverframework

hmemory

本组件主要用于辅助进行内存管理。

具体实现见hmemory目录

hlocale

本组件主要用于辅助处理区域设置(如字符编码等)。

具体实现见hlocale目录

hnet

本目录主要用于辅助实现网络相关代码。

具体实现见hnet目录

h3rdparty

有很多成熟的第三方库也适合本库的应用场景,在此模块上添加这些库。

具体实现见h3rdparty,由于第三方源代码(有些静态变量、宏定义会冲突)不能直接放在一个C源代码中h3rdparty中的文件应当添加至构建的源代码列表。

hgui

在嵌入式场景中辅助实现GUI界面。

实现在GUI界面中一些常用的功能,提供一些接口模板。

具体实现见hgui目录

hsimulator

辅助实现一些可在嵌入式平台(如MCU)上运行的模拟器。

具体实现见hsimulator

模拟器相对真机的优点是可轻松控制运行状态(监控、复位、调试、升级等),缺点是一般来说模拟器的性能不如真机。

如果是物联网应用,模拟器还可远程控制运行状态。

hshell

通常用于运行简易命令,通常用于调试。

具体实现见hshell目录。

使用本组件实现的shell推荐使用支持终端转义序列的软件putty、minicom打开不推荐直接使用串口调试工具打开。

huuid

辅助处理UUID。

具体实现见huuid目录。

hcrypto

加密组件。

一般提供软件实现的加密算法及校验算法。

具体实现见hcrypto目录。

hruntime

辅助处理运行时相关工作。

具体实现见hruntime目录。