- 博客(4)
- 收藏
- 关注
原创 如何实现 MCU软件中多个模块初始化函数的优雅调用
上面的代码中每增加一个模块都需要包含对应的头文件,在main函数中也要修改初始化的代码,去掉一个模块也是这样的,增加了软件的耦合度,无疑不是明智的,下面就来探索下怎么自动的实现模块的初始化,在不修改main函数的代码的前提下,同时优雅的初始化模块。我们知道,函数名本身就是一个地址,用指针指向这个地址时,调用这个指针去运行这段代码就可以了,而我们把函数放在这个段中,我们是可以获取段的起始和终止地址的,有了这些条件,就能把段中的每个函数都遍历运行一遍了。接手了这样的代码后怎么更快的确认函数的调用关系呢?
2023-06-14 10:35:53
607
原创 环形缓冲区RingBuff的代码实现
~今天我们一起来聊一下环形缓冲区RingBuff又叫LoopBuff等等,都是相同的东西,只是一个名字不同罢了。~我们在编写代码的时候缓冲区是几乎每个代码都必不可少的东西,比如存放串口接收的数据、做Modbus通讯、和一些模块通讯等等都会用到缓冲区,简单的来写的话往往就是开辟一个buffer,把接收到的数据保存在这个buffer中,然后再去解析这个buffer的数据。 以串口和GPS通讯为例,我们常常使用串口接收中断接收GPS的数据包,把接收到的数据保存在RecBuff中,然后再去申明一个函数去解析这个数
2021-12-06 11:23:15
1106
原创 Linux中的offsetof/container_of宏
offsetof宏/*计算结构体成员在结构体中的偏移量*/#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0) -> MEMBER)offsetof宏作用用于计算结构体成员在结构体中的偏移量offsetof宏原理TYPE : 结构体的类型MEMBER : 结构体成员使用结构体类型定义一个指针并指向结构体成员,表示该地址从0开始到结构体成员地址的偏移,即可计算出偏移量。container_of宏/
2021-10-09 11:17:48
184
原创 VS Code不识别C标准库函数,已解决
VS Code不识别C标准库函数,且无法运行C程序 问题: 1、#include “stdio.h” VS Code提示没有改文件的路径,无法识别,下面有一条红色的波浪线。 2、很多人在刚安装完VS Code不知道怎么去运行一个Hello World!程序。写好程序后编译出错。本文将让您快速的完成Hello World代码的编译与运行,同时解决了VS Code无法识别C标准库函数的问题。解决方法: 1、安装Mingw-64 MinGW,是Minimalist GNU*
2021-09-17 10:06:33
5464
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人