- 博客(17)
- 收藏
- 关注
原创 CMake与Makefile的关系
绝大多数开源项目(如OpenCV、Boost、Qt)都使用CMake管理构建,学习CMake是现代C/C++开发的必备技能。如果你刚开始学习构建系统,建议直接从CMake入手,这是目前最主流、最实用的构建解决方案!欢迎在评论区讨论你的CMake使用经验!
2026-01-22 09:04:32
222
原创 冒泡排序优化
初始值(确保至少进入一次外循环)位置关键每轮外循环开始时检查flag每轮内循环开始时重置只在交换时设置跳出条件if (!放在外循环开始处。
2026-01-19 08:11:09
164
原创 C语言递归函数与函数指针指南
fill:#333;important;important;fill:none;color:#333;color:#333;important;fill:none;fill:#333;height:1em;递归应用场景数据结构算法设计系统编程树/图遍历链表操作JSON/XML解析分治算法回溯算法动态规划文件系统遍历语法分析目录结构生成特性递归函数函数指针定义调用自身的函数指向函数的指针变量内存使用栈空间,可能溢出使用指针空间,固定大小性能可能有重复计算。
2026-01-18 11:13:45
957
原创 ARM Cortex-M 启动流程完全解析:从复位到main()的每个细节
硬件复位 → 向量表 → Reset_Handler → SystemInit → __main → main()
2026-01-16 08:42:31
847
原创 stm32为什么不能跑Linux
传统STM32不能跑Linux,根本原因是其Cortex-M内核缺乏MMU且内存太小,硬件设计上就不是为Linux这类大型OS准备的。在STM32上强跑Linux是**“小马拉大车”**,即使勉强启动,也几乎无法运行有意义的应用程序,失去了实用价值。对于需要Linux的项目,应该选择带MMU的Cortex-A内核处理器(如STM32MP1, NXP i.MX系列,TI Sitara系列等)。STM32的黄金搭档是各种RTOS,它们能充分发挥其实时、高效、低成本的优势。
2026-01-15 06:46:12
831
原创 C语言:从键盘输入整数求和并统计偶数个数(输入字母 g 结束)
本文介绍了C语言中从键盘读取整数并求和、统计偶数个数的实现方法。针对初学者常见的scanf循环错误写法(无法准确识别结束字符'g'),推荐使用fgets+sscanf的安全方案。该方案能精确识别单独的'g/G'输入,处理各种非法输入情况,具有更高的健壮性。文章包含完整代码示例、运行演示和方案对比表格,强调在交互式输入场景中优先使用整行读取的编程实践。
2026-01-14 12:50:40
324
原创 static display_drv_t display_drv_dev[2]
摘要: static display_drv_t display_drv_dev[2]是嵌入式系统中用于管理多显示设备的驱动设计。通过static限定作用域,display_drv_t结构体封装了显示操作函数,数组形式支持双屏或多屏控制(如主屏和副屏)。其优势包括:硬件抽象(更换设备无需修改上层代码)、统一接口(结构体函数指针标准化操作)、灵活扩展(数组索引管理多实例)。典型应用如智能手表或工控屏的双屏驱动,体现模块化与跨平台思想,提升代码可维护性。 关键词:#嵌入式 #驱动设计 #硬件抽象 #多屏管理
2025-06-15 22:48:36
196
原创 IIC通信模拟器 - PyQt5实现详解
设备选择:模拟多个从设备(地址:0x10, 0x20, 0x30)信号控制:Start/Stop信号、地址传输、ACK应答、数据传输实时波形:动态绘制SCL(时钟)和SDA(数据)信号时序图交互操作:支持单步执行或分步操作。
2025-05-08 22:00:18
689
原创 状态机(纯c语言版)
本文实现的C语言状态机具有以下特点:1. 纯软件实现,不依赖任何硬件或操作系统特性2. 代码结构清晰,易于理解和维护3. 良好的可扩展性,方便添加新状态和事件4. 可直接应用于各种嵌入式系统和应用软件实际项目中,可以根据需求:- 添加状态持久化功能- 实现分层状态机- 加入状态历史记录- 开发可视化调试工具这种状态机实现方式特别适合资源受限的嵌入式环境,也适用于需要清晰状态管理的各种软件系统。附加(中文版)(小熊猫可运行)// 定义状态类型红灯状态,绿灯状态,
2025-04-29 23:46:07
1506
原创 结构体大小
2. 事实上,为了方便我们后续操作结构体中的成员,开辟空间的时候,会遵循内存对齐的方式。取数据,就一直按照4个倍数来偏移取数据.. 时间就短了,造成内存浪费。a: 1个字节 还会占用3个字节的空间【内存空洞】,总共4个字节。1. 结构体的大小,并不是直接把里面的成员大小累加得出来的。空间充分利用,但是取数据,就不好取了...2.2 对齐 【参照最大的那个成员来对齐...】3. 比起内存的浪费,时间的效率提升,是否值得呢?思考:时间换空间 or 空间换时间。
2025-04-11 13:52:31
205
原创 C语言位运算
取反,左移,右移,得出1000 0000(-128)为特殊案例,不用逆运算。出来的位置,要补内容 最高位是1就补1,如果最高位是0,就补0。位运算 注意异或(因为不知道该位具体的值)>> 运算:二进制位整体向右移动,左边空。
2025-04-11 13:48:22
174
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅