CXX
文章平均质量分 88
-
刻BITTER
这个作者很懒,什么都没留下…
展开
-
基于链表的滑动中值滤波器实现思路
基本上,中值滤波,或者说滑动中值滤波,需要做三件事:1. 在新数据添加到窗口的同时,将最旧的数据删除;2. 对窗口中的数据排序;3. 找出中位数;原创 2024-04-25 03:44:08 · 733 阅读 · 0 评论 -
实现精简的通用环形缓冲器或环形队列
老实说太简单了,没什么好说的。成员函数的命名参考了C++ 的STL,push和pop应该不用解释,front指头部,back是尾部。原创 2024-04-07 02:59:01 · 298 阅读 · 0 评论 -
STM32 实现简单定时任务调度器,动态创建任务,两种思路实现流水灯
代码实现和硬件没关系,所以并不限于STM32,Arduino 之类的其他地方也能用,只要有一个能获取时间的函数就行,或者说,只要有一个会随着时间自动增加的变量就行,时间单位无所谓,所以确实想的话,拿到电脑上也能用。原创 2023-06-06 19:27:45 · 4551 阅读 · 0 评论 -
二级指针骚操作实现链表虚拟头节点
重点是不用像其他文章里那样,用一个普通节点当头节点,节省一点空间占用,反正我觉得有点骚。就不详细交代技术背景了,简而言之,就是链表中第一个节点前没有节点了,只有一个指向它的指针,所以不能像其他节点一样对第一个节点进行删除操作,代码中必须判断这个特例,详细的参考。可以用一个普通节点当作头节点来指向第一个节点,从而让第一个节点也有前一个节点,统一操作,如下图:但是头节点里会有一个没用的数据域,浪费空间,所以才想到用二级指针。原创 2023-06-03 20:10:56 · 561 阅读 · 0 评论 -
用C++ 包装STM32 官方固件库 - 链式调用改写初始化结构体
在继续之前,先说明一下,当然,这么包一层肯定会付出一些代价,包括运行时间和空间占用,后面会有编译结果比较。有官方库“珠玉在前”,我觉得相比之下,这层包装付出的代价并不显著,有兴趣可以看看常用的GPIO 初始化函数在固件库里是怎么实现的,可以说是资源浪费的典范[doge]。另一方面,固件库里都是C 函数,函数实现都分开放在.c 文件里,编译器内联的可能性应该不大,因此就算是简单的给引脚设置个电平,用固件库也会产生额外的函数调用,所以很多人是在宏里自己写寄存器操作的。用C++ 的话,这种简单的函数放在头文件里,原创 2023-06-01 21:23:56 · 899 阅读 · 0 评论 -
Real-Time C++ 嵌入式C++ 程序设计(三)
在C++ 中,局部变量可以在第一次使用的地方声明,它们不一定需要放在函数的开头。这可以提高代码可读性并促进编译器优化。例如,下面的代码在使用i、j和k前才声明了整型变量。use_i(i);use_j(j);k < 10;} }实现范围操作。原创 2023-05-25 21:31:08 · 705 阅读 · 0 评论 -
Real-Time C++ 嵌入式C++ 程序设计(二)
二、在实际硬件上实践C++ 程序原创 2023-05-25 18:00:53 · 812 阅读 · 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 · 825 阅读 · 0 评论