- 博客(39)
- 资源 (29)
- 问答 (1)
- 收藏
- 关注
原创 责任链模式
责任链模式是一种设计模式,它将请求的发送者和接收者解耦,使得多个对象有机会处理该请求。它们被串成链,并沿着这条链传递请求,直到有对象处理它为止。
2025-01-10 14:52:53
533
原创 ARM 虚拟机FVP环境搭建
ARM Fixed Virtual Platforms (FVPs) 是由 ARM 提供的一系列虚拟化硬件模拟器,用于在物理硬件可用之前开发和测试软件。FVP 模型非常适用于软件开发、验证和性能分析,涵盖了从裸机到操作系统和复杂 SoC 系统的各种应用。
2024-07-12 19:44:07
1942
原创 WSL 安装
系统会自动下载并安装默认的 Linux 发行版(通常是 Ubuntu)。如果你已经安装了某个 Linux 发行版,也可以指定特定的发行版。启用并配置完 BIOS 后,你可以在 Windows 中确认虚拟化是否已启用。确认虚拟化功能已启用后,可以继续进行 WSL 和 Linux 发行版的安装。安装的 Linux 发行版,按提示完成初始配置(创建用户名和密码)。安装完成后,系统将启动该 Linux 发行版,要求你进行初始配置。并搜索你喜欢的 Linux 发行版,如 Ubuntu。所选的 Linux 发行版。
2024-07-12 14:24:46
7910
原创 Windows安装West
West 是 Zephyr 项目的官方命令行工具,用于管理 Zephyr 项目的源码和依赖关系。它可以帮助开发者下载、更新和构建 Zephyr 项目。
2024-07-12 12:51:04
1474
原创 CMake如何生成makefile文件
设置默认生成类型为 Releaseendif()# 定义构建类型及其编译选项通过上述步骤,CMake 可以生成 Makefile,从而在 Unix/Linux 环境下使用make进行编译。CMake 提供了更高层次的抽象和灵活性,可以生成不同平台的构建文件,不仅限于 Makefile,这使得它成为跨平台项目构建的强大工具。这些步骤和配置都可以根据项目的实际需求进行调整,以满足特定的构建需求。学习和掌握 CMake 的各种命令和选项,可以极大地提高项目构建和管理的效率。
2024-07-04 14:31:55
1566
原创 CMake和Makefile关系
Makefile是make工具的输入文件,定义了如何构建项目。它适用于手动编写简单项目的构建规则,但在处理复杂项目时可能较为繁琐。CMake是一个更高级的构建系统生成工具,通过文件描述项目的构建过程,再生成特定平台的构建文件(包括Makefile它提供了更多的高级功能和更好的跨平台支持。简而言之,CMake可以被看作是一个更强大、跨平台的项目构建和管理工具,它能够生成Makefile,同时还能够生成其他类型的构建文件,简化复杂项目的构建和管理。下一篇文章讲解 CMake如何生成makefile文件。
2024-07-04 14:18:08
940
原创 VSCode中使用CMake管理
通过以上步骤,你可以在 VSCode 中高效地使用 CMake 配置和管理你的 C++ 项目。CMake Tools 插件简化了项目配置过程,而tasks.json和则帮助你集成构建和调试工作流。通过这种方式,可以在一个统一的开发环境中进行高效的开发和调试工作。
2024-07-04 13:50:05
1655
原创 CMake之CMakeList.txt文件介绍
如果项目需要生成多个可执行文件或者多个库文件,可以分别调用和命令。MyProject├── src# 添加库文件# 添加可执行文件,并链接库定义一个库文件,可以是静态库(STATIC)或动态库(SHARED)。CMake 是一个非常强大的构建系统生成工具,通过编写和配置文件,你可以高度自定义项目的构建过程。无论是简单的单文件项目,还是复杂的多模块项目,CMake 都能提供灵活性和扩展性。通过理解和使用 CMake 的基本命令和高级特性,你可以高效地管理项目的构建流程。
2024-07-04 11:15:25
1173
原创 VSCode工程中task.json的作用
tasks.json文件为开发者提供了一种便捷的方式来配置和自动化常见的任务操作。通过适当地配置该文件,你可以极大地简化项目的构建、测试和部署过程,使开发过程更加高效和有序。
2024-07-03 21:49:36
1483
原创 VSCode使用Makefile管理工程
通过这些步骤,可以使用 Makefile 在 VSCode 中高效地开发、构建和调试项目。VSCode 的扩展和配置使得这个过程高度灵活和自动化,减少了开发中的摩擦成本。
2024-07-03 18:13:25
7318
原创 vscode 工程中 c_cpp_properties.json文件作用
提供更好的代码补全和代码分析功能。指定使用的编译器及其版本。设置头文件搜索路径和预处理器宏定义。为不同的开发平台定制不同的配置。合理配置文件,有助于提高开发效率和代码质量。希望以上说明对你理解和使用该文件有所帮助。8. 关于IntelliSense 模式的使用说明在 Visual Studio Code(VSCode)中,是微软为开发者提供的一组丰富的代码辅助功能,包括代码自动补全、参数信息、快速信息和代码片段等。这些功能有助于提高开发效率,减少错误,并使代码更具可读性。
2024-07-03 14:51:44
7833
原创 Linux上Fread读取长度不对的问题
为啥我读取长度没有达到文件data的长度,图片的上半部分会出现问题,而不是下半部分出现缺失。原因是BMP格式的文件是从左往右,从下到上扫描的,所以data offset比较小的地方是在图片的下半部分。BMP格式中的biSizeImage 字段指示后面的data的总长度,只需要按照这个长度读取data 就可以了;但是读取的图片始终是少一部分;读取BMP文件的数据,并将数据存储到申请到的data buffer中。文件的打开是以“r” 的模式打开,需要以“rb” 模式打开二进制文件。
2024-06-06 20:12:48
292
1
转载 __attribute__((aligned(n)))与__attribute__((packed)) 区别 [转载]
_attribute__((packed))会让结构体以紧凑的方式进行排列,同样 #pragma pack (1)也会起到相同的效果,而__attribute__((aligned(n))) 实际上只影响紧随其后的变量或者结构体的对齐方式,而不会影响结构体内其他成员的对齐方式,当然编译器将会调整结构体的对齐方式,从而可能在结构体内部添加填充字节,以满足字节对齐的要求。此时aligned修饰的是具体的变量,并不会改变结构体的内部成员的对齐方式,仅仅只是改变结构体所定义的变量地址对齐方式。
2024-05-23 14:57:45
149
原创 基于MDK的代码优化
而该选项实现的机制是将每一个函数作为一个优化的单元,而并非整个文件作为参与优化的单元。对一个文件中的代码,有的函数使用到有的函数没有使用到,因为一个文件一般都是作为同一个section存在的,如果将该文件添加进来没有使用到的函数也会编译进来;可以看到--remove默认是enable的,添加与不添加都是一样的,意思是将没有使用到的section去掉,但是对于同一个段中的代码是没有办法优化的;对结果的确认可以通过查看map文件,使用的函数都会分配地址和和空间,没有使用到的函数都被remove掉了;
2024-03-07 15:21:20
297
转载 UTF8和Unicode
本质上来说:Unicode 是「字符集」 UTF-8 是「编码规则」字符集: 为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point);编码规则: 将「码位」转换为字节序列的规则(编码/解码 可以理解为 加密/解密 的过程)
2024-03-05 10:47:58
125
转载 tortoiseGit Clone Error: Incoming packet was garbled on decrypton
按如下修改tortoisegit的setting的 ssh.exe路径后, ssh.ext路径为git的安装路径,问题解决,tortoiseGit 拉取代码,提示, Tortoisegit Fatal Error,
2024-01-09 10:00:46
414
原创 C语言可变参数的使用
c/c++语言具备一个不同于其他编程语言的的特性,即支持可变参数。例如C库中的printf,scanf等函数,都支持输入数量不定的参数。////< 1个参数////< 2个参数////< 3个参数printf函数原型为 int printf(const char *format, …);从printf的原型来看,其除了接受一个固定参数format以外,后面的参数使用来表示。在c/c++语言中,表示可以接受不定数量的参数。
2023-12-15 10:34:57
101
原创 基于STM32+FreeRTOS+RC522的门禁系统
1. 系统采用FreeRTOS作为系统任务调用;3. 支持人体热释电红外识别,HCSR505;2. 采用STM32作为核心控制器;7. 支持RC522 射频刷卡开门;6. 支持OLED显示屏UI显示;8. 支持继电器的开关控制;4. 支持按键密码开门;5. 支持LED指示;
2023-06-26 11:45:43
464
1
原创 Raspberry PICO使用教程
Raspberry Pi Pico是树莓派基于 RP2040 芯片的微控制器开发板,支持使用C/C++ SDK 和官方的 MicroPython 接口。本教程介绍使用基于MicroPython进行开发。
2023-06-21 15:52:42
2615
原创 Git/TortoiseGit/Gerrit使用教程
现在很多大型项目管理都是用git + gerrit的方式进行的,git-review作为一种比较方便的代码review工具,这里介绍基于Linux和windows的代码提交工具,当然不是直接提交到库上,这里是提交到Gerrit等大家review通过了,就可以让负责人merge到远程仓库上了。
2023-06-21 15:47:47
1005
原创 一种环形双向链表的操作
在BLE扫描过程中,由于Privacy地址的加入,TIFS的时隙不能满足解析耗时的时间处理,这里将解析和时序ACK分为两个步骤,比如scan_req的ScanA解析和回复SCAN_RSP 两个步骤。这就需要一种链表数据结构记录这两个步骤的动作,不同的设备使用地址和地址类型这两个变量来进行判断,链表作用是可以缓存多个设备并且可以实现有序性。(1)检查该设备的地址和地址类型是否已经存在,不存在就添加到链表中,(当然前提还需判断该设备是为Privacy地址,进行解析,但是解析失败或者解析成功);
2023-06-21 15:43:12
128
原创 一种队列设计方法
将队列的内存想象成数组g_global_queue产生无数个副本铺开到内存中(实际没有铺开还只是一个数组),如下图。数组当作队列来用的时候,传统的队列设计方法在判空和判满的时候会损失一个Item,这种在Item占用的内存比较大的情况下比较浪费资源,这里介绍一种能将数组成员全部利用起来的方法。当write_index和read_index 相差数组长度的时候,认为是满队列;当write_index 和 read_index 相等的时候,认为是空队列;
2023-06-21 15:34:03
69
原创 Qt调用C函数
如果在Qt cpp文件中直接调用.c文件中的C函数会出现无法找到C文件的问题;error: undefined reference to `vendor_app_handle()'这种情况有两种解决方法:1. 使用extern "C"(1)在头文件中直接使用#ifdef __cplusplusextern "C" {#endif#include "xxx.h"extern int vendor_app_handle(void);#ifdef __cpl
2023-06-21 15:15:20
2203
原创 Windows Git的安装
点击完成就可以了,上面的Generate Putty key pair的按钮是产生SSH key,后面用于获取远程仓库的权限,可以在安装之后在开始菜单中找到。可以看到只有Git GUI和Git Bash,并没有windows的可视化操作,下面就需要安装TortoiseGit了。git是真正要是使用的工具,TortoiseGit是对Git接口的封装,以便于Windows可视化使用。(1) 双击.exe文件运行,记录下git的安装目录,因为后面TortoiseGit需要设置git目录。分别下载最新的安装程序。
2023-06-21 14:46:50
298
原创 串口接收语音工具
1. 支持串口对PCM RAM Data的数据接收。先保存才能播放,播放的是本地存储的文件;使用Qt实现一款串口接收语音的工具。16bit 16bps的语音数据。4. 语音数据的存储和播放。2. 支持指令发送除法语音。3. 指令数据的配置。
2023-06-16 17:17:12
209
1
原创 二进制数和文本互转工具
1. 如果对应的文件路径有填写就使用文件路径下的文件提取内容;2. 如果文件路径不填写就按照文本框中的内容进行处理;3. 文本转二进制,自动删除无效字符;1. 二进制转文本。
2023-06-16 10:24:56
1056
1
原创 QT发布软件
windeployqt.exe是Qt自带的Windows 平台发布工具,它可以自动为一个应用程序复制其运行所需的各种库文件,插件和翻译文件,生成可以发布的目录。Qt Creator 完成对release版本编译完成之后,就需要将exe文件发布出来。单纯的只拷贝exe文件是不能运行的,exe的运行需要依赖很多的Qt库;在命令行中切换目录到新建的exe所在的文件下面执行 windeployqt test_v0.exe。这样子exe的打包文件就做好了,exe在这个文件夹下面就可以双击运行了。
2023-06-13 19:24:11
358
1
原创 QT Creator无法识别头文件问题
创建项目的时候明明将所有的头文件都添加进来了,但是仍然报无法找到指定的头文件的问题;使用的是Qt Creator 4.2.1 (Community)
2023-06-06 17:51:06
3372
原创 解决Qt Creator分辨率问题
安装完成Qt Creator之后,Qt Creator主窗口的各个子窗口字体大小不一;Qt所在的目录: D:\software\Qt\Tools\QtCreator\bin。需要设置分辨率来进行适配;设置后重启软件, 问题解决!
2023-06-06 17:35:08
2190
1
原创 Makefile基础知识
一个工程中的源文件不计其数,其按照类型,功能,模块分别放在若干个目录中,makefiled定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至进行更复杂的功能操作,因为makefile就像一个shell脚本一样,其中也可以执行操作系统的命令。Makefile代码的好处就是--“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
2023-06-06 17:26:33
375
原创 Git生成diff文件
1. git 打patch> git format-patch e795fefab2. git 应用patch先检查patch文件:git apply --stat newpatch.patch查看补丁是否能够干净顺利地应用到当前分支中: git apply --check newpatch.patch对于git diff生成的patch,你可以用git apply --check> git am file.patch导入到库中,如果执行时失败,则最好执行:&g
2022-04-09 15:16:17
978
微机原理交通灯课程设计
2023-06-28
基于STC89C52的电子台历程序
2023-06-28
二进制和文本互转工具第二版
2023-06-28
基于STM32+FreeRTOS+RC522的门禁系统
2023-06-26
二进制和文本互转工具第一版
2023-06-16
RISC-V GCC Centos64安装包
2022-04-09
SN65HVD230中文资料
2015-01-19
Qt Creator教程
2015-01-19
ZStack-cc2530-2.5.1a.zip
2014-06-28
git bash无法执行make
2022-04-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人