CXX
文章平均质量分 78
-
刻BITTER
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++ 获取任意整数类型的最大、最小值和长度
C++11在<limits>中提供了std::numeric_limits工具,用于获取数值类型的参数信息。对于整数类型T,可以通过该工具查询最大值(max())、最小值(min())、二进制位数(digits)和十进制位数(digits10+1)。其中digits对有符号类型不包含符号位,digits10返回的是10的幂次,等于log10(max)向下取整。例如uint8_t的最大值255对应的digits10为2。这些工具为数值处理提供了标准化的查询方式。原创 2025-12-20 13:54:00 · 152 阅读 · 0 评论 -
C++ 翻转一字节的位序
摘要:比较了两种反转字节位顺序的算法。移位交换法通过多次移位和与操作实现位反转;查表法使用16字节预存表,分别处理高低4位后拼接。两种方法计算结果相同,效率相当,但实现方式不同。查表法采用小表节省空间,而移位法无需存储空间但计算步骤较多。两种方案各有优劣,可根据具体场景选择。原创 2025-08-22 01:55:07 · 241 阅读 · 0 评论 -
Arduino 用简易的GUI 后台“线程” 实现实时按键响应
摘要:本文探讨了在Arduino上实现高响应性Modbus主机程序的方案设计。针对Modbus通信中长时间阻塞等待响应的问题,作者否定了RTOS和纯状态机方案,提出了一种在阻塞等待中嵌入轮询检测的创新方法。通过在主循环的每个阻塞点(如通信等待、延时)插入轮询函数调用,实现了类似多线程的实时响应效果。文章详细介绍了基本实现原理和伪代码,并扩展了支持多界面的面向对象方案。该方法兼顾了代码简洁性和实时响应需求,为资源受限的单片机系统提供了实用的高响应性程序设计思路。原创 2025-06-29 05:42:23 · 780 阅读 · 0 评论 -
简单快速的浮点数转字符串算法,适合单片机环境
既然能复用显示整数的代码,那么最简单的思路就是把浮点的整数和小数部分分别转换成整数,打印的时候中间加个小数点就好了,只有一个小问题。比如,要把 3.03 转换成两个整数,整数部分 = 3,没问题;小数部分是 03,如果按整数打印,左侧的0 就没了,整体打印出来变成3.3。好在我的整数显示函数功能还比较齐全,可以设置数字右对齐,并且左侧补0。那么只需要在打印小数部分时,设置数字右对齐,且数字长度等于小数精度。比如,打印 3.03,保留两位小数;打印 03 的时候,数字长度设置为2,右对齐,小数部分3 会被原创 2025-05-04 03:12:07 · 822 阅读 · 0 评论 -
基于链表的滑动中值滤波器实现思路
基本上,中值滤波,或者说滑动中值滤波,需要做三件事:1. 在新数据添加到窗口的同时,将最旧的数据删除;2. 对窗口中的数据排序;3. 找出中位数;原创 2024-04-25 03:44:08 · 887 阅读 · 0 评论 -
实现精简的通用环形缓冲器或环形队列
老实说太简单了,没什么好说的。成员函数的命名参考了C++ 的STL,push和pop应该不用解释,front指头部,back是尾部。原创 2024-04-07 02:59:01 · 475 阅读 · 0 评论 -
STM32 实现简单定时任务调度器,动态创建任务,两种思路实现流水灯
代码实现和硬件没关系,所以并不限于STM32,Arduino 之类的其他地方也能用,只要有一个能获取时间的函数就行,或者说,只要有一个会随着时间自动增加的变量就行,时间单位无所谓,所以确实想的话,拿到电脑上也能用。原创 2023-06-06 19:27:45 · 5885 阅读 · 0 评论 -
二级指针骚操作实现链表虚拟头节点
重点是不用像其他文章里那样,用一个普通节点当头节点,节省一点空间占用,反正我觉得有点骚。就不详细交代技术背景了,简而言之,就是链表中第一个节点前没有节点了,只有一个指向它的指针,所以不能像其他节点一样对第一个节点进行删除操作,代码中必须判断这个特例,详细的参考。可以用一个普通节点当作头节点来指向第一个节点,从而让第一个节点也有前一个节点,统一操作,如下图:但是头节点里会有一个没用的数据域,浪费空间,所以才想到用二级指针。原创 2023-06-03 20:10:56 · 637 阅读 · 0 评论 -
用C++ 包装STM32 官方固件库 - 链式调用改写初始化结构体
在继续之前,先说明一下,当然,这么包一层肯定会付出一些代价,包括运行时间和空间占用,后面会有编译结果比较。有官方库“珠玉在前”,我觉得相比之下,这层包装付出的代价并不显著,有兴趣可以看看常用的GPIO 初始化函数在固件库里是怎么实现的,可以说是资源浪费的典范[doge]。另一方面,固件库里都是C 函数,函数实现都分开放在.c 文件里,编译器内联的可能性应该不大,因此就算是简单的给引脚设置个电平,用固件库也会产生额外的函数调用,所以很多人是在宏里自己写寄存器操作的。用C++ 的话,这种简单的函数放在头文件里,原创 2023-06-01 21:23:56 · 1085 阅读 · 0 评论 -
Real-Time C++ 嵌入式C++ 程序设计(三)
在C++ 中,局部变量可以在第一次使用的地方声明,它们不一定需要放在函数的开头。这可以提高代码可读性并促进编译器优化。例如,下面的代码在使用i、j和k前才声明了整型变量。use_i(i);use_j(j);k < 10;} }实现范围操作。原创 2023-05-25 21:31:08 · 941 阅读 · 0 评论 -
Real-Time C++ 嵌入式C++ 程序设计(二)
二、在实际硬件上实践C++ 程序原创 2023-05-25 18:00:53 · 1130 阅读 · 0 评论 -
Real-Time C++ 嵌入式C++ 程序设计(一)
翻译自 Real-Time C++ Efficient Object-Oriented and Template Microcontroller Programming 4th Edition - Kormanyos, Christopher,这书涉及了从C++11 到C++20 的内容,主要介绍使用C++ 的模板、面向对象等特性设计嵌入式程序。书里的示例代码都是公开的:https://github.com/ckormanyos/real-time-cpp。原创 2023-05-25 15:48:25 · 1266 阅读 · 0 评论
分享