ifndef

零基础学习STM32智能家居系统之温湿度检测子系统的实现(二)

在上一节中,我们学习了DHT11温湿度传感器的使用。在这一节,结合温湿度检测子系统的功能,我们为系统设计执行机构。系统的执行机构利用继电器加风扇来完成。当环境的温度或湿度超过设定值时,继电器吸合,风扇工作,。6.1 继电器的介绍本项目以1路5V继电器模块为例,进行项目设计。其它类型继电器模块类似。1路5V继电器模块采用光耦进行隔离,性能稳定,人性化设计可选择 …

「嵌入式秘术」相约榨干SysTick的每一滴汁水

【说在前面的话】相信很多人都遇到过这样的情况:在一个Cortex-M嵌入式应用中要实现一个精确的毫秒级延时并不困难——如果你有RTOS,在任务中使用诸如 os_sleep(<休眠时间>) 之类的函数就可以轻松实现;如果你是裸机,也可以使用每个Cortex-M芯片都默认携带的SysTick来实现一个,甚至Arm官方的CMSIS都提供了现成的API, …

我如何用C语言构建简单Shell(二)(基于c语言的简单shell设计)

在我的自定义shell项目的这一部分中,我将解释如何在C中动态解析用户输入。在shell环境中正确解析输入是至关重要的,因为命令通常包含多个参数。我没有依赖固定大小的缓冲区,而是实现了动态内存分配方法以获得更好的灵活性。理解parser函数parser() 函数负责: 动态将用户命令分割成参数 高效管理内存分配和重新分配 返回参数数组以供进一步处理代码分解# …

条件编译(条件编译ifndef)

前言:有的时候我们需要多种配置,在敲代码的时候我们设定好各种配置,然后根据我们的需要配置一个开关,在源代码级别去修改配置开关让程序编译出不同的效果。常见的条件编译1、#if #else #elif #endif2、#ifdef #endif如下例子就是通过是否定义宏DEBUG来控制控制台是否打印#include <stdio.h>#define …

shared_ptr的设计哲学(原理+源码):内存安全和性能的架构权衡

0.简介 在C++编程世界中,内存管理是一把双刃剑,手动管理带来了极致的内存控制能力,但也带来了像内存泄漏,野指针等问题;自动垃圾回收虽然安全,但却会带来一定的性能损耗。本文将介绍C++11引入shared_ptr,通过对其原理和源码的解析,来了解其对于内存安全和性能的权衡。1.原理 要了解一个设计,首先要看这个设计要解决的问题,shared_ptr的核心目 …

C语言精华:宏与预处理器技巧深度解析

C语言的预处理器(Preprocessor)是编译过程的第一阶段,它在编译器实际编译源代码之前,根据预处理指令对代码进行文本替换、条件编译和文件包含等操作。宏(Macro)是预处理器最强大的功能之一,它允许程序员定义可重用的代码片段、创建符号常量、甚至实现简单的代码生成。熟练掌握宏与预处理器技巧,能够显著提高代码的可读性、可维护性、可移植性和效率。本文将深入 …

从0开始设计_基于STM32F1的RC522读写卡

从0开始设计_基于STM32F1的RC522读写卡1.介绍看网上很多RC522的教程都是基于读卡ID的,这个对于很多应用来说其实没有什么用,最近刚好有个项目需要读写卡,而RC522又是非常常用的且不容易缺货的芯片,所以准备用RC522来进行读写卡。2.设备准备首先准备一个开发板和一个RC522模块,开发板这里我选择正点原子的精英板(STM32F103ZET6 …

「技术」一文带你掌握Linux字符设备架构

一、Linux设备分类Linux系统为了管理方便,将设备分成三种基本类型:字符设备块设备网络设备字符设备:字符(char)设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。字符设备驱动程序通常至少要实现open、close、read和write的系统调用。字符终端(devconsole)和串口(devttyS0以及类似设备) …

同一个类,不同代码,Qt 串口类QSerialPort 与各种外设通讯处理

串口通讯在各种外设通讯中是常见接口,因为各种嵌入式CPU中串口标配,工业控制中如果不够还通过各种串口芯片进行扩展。比如spi接口的W25Q128FV.对于软件而言,因为驱动接口固定,软件也相对好写,因此串口通讯也是嵌入式常见开发模式,但是对于受控设备类型五花八门,往往编程代码也是不尽相同。串口参数处理 QSerialPort 是Qt用于串口处理类,在Linu …

FTP客户端库ftplibpp在linux系统上的使用

一、简述ftplibpp是一个跨平台的可以提供ftp客户端功能的C++库。它包含可以实现ftp客户端功能的类,支持所有基本的ftp功能以及一些高级功能:如恢复、fxp、ssltls加密、支持大文件或符合当今标准的日志记录等。本文讲述其在linux系统上的编译和使用。二、获取首先在github上(链接:https:github.commkulkeftplibp …