自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 收藏
  • 关注

原创 Makefile基础入门:从编译小白到自动化构建达人

效率提升:减少90%以上的重复编译时间代码维护:集中管理编译配置跨平台:配合Autotools实现一键构建工程化:百万行代码项目的构建基石掌握Makefile不仅是掌握一个工具,更是理解软件构建的艺术。从手动敲命令到自动化构建的进化,正是程序员从"刀耕火种"到"工业化生产"的蜕变之路。自动依赖生成(-MMD选项)条件编译与平台适配结合CMake/Autotools构建系统现在,打开你的编辑器,为下一个项目编写第一个Makefile吧!

2025-06-04 16:32:20 281

原创 Linux中的守护进程:默默守护系统的无名英雄

在Linux系统中,守护进程(Daemon)是一种在后台运行的特殊进程,它不依赖于终端控制,通常用来执行系统级任务或服务。守护进程的名字来源于古希腊神话中的"守护精灵"(daemon)概念,正如其名,它们默默地在后台工作,维持着系统的正常运行。脱离终端控制,在后台运行生命周期通常很长,从系统启动到关闭通常以root权限运行没有控制终端,不会接收终端信号守护进程是Linux系统的基石,它们默默无闻地执行着各种关键任务。

2025-05-30 14:06:48 645

原创 Git紧急救援手册:遇到这些情况时别慌,这样做就对了!

Git虽然强大,但遇到问题时确实容易让人困惑。掌握这些常见场景的解决方案,能让你在遇到问题时从容应对。记住,Git几乎总能让你"回到过去",所以大胆尝试吧!小技巧:遇到不确定的操作前,可以先创建一个临时分支作为备份,这样即使操作失误也能轻松恢复。希望这篇指南能成为你Git旅途中的实用手册!遇到问题时不妨回来查阅,相信总能找到解决方案。

2025-05-13 16:07:29 194

原创 万物互联时代:ONVIF协议如何重构安防监控系统架构

ONVIF(Open Network Video Interface Forum,开放式网络视频接口论坛)是一种全球性的开放行业标准,由安讯士(AXIS)、博世(BOSCH)和索尼(SONY)于2008年共同发起,旨在解决不同品牌网络视频设备(如摄像头、录像设备等)的互通性问题。通过定义统一的接口和通信规范,ONVIF协议实现了设备发现、实时视频流传输、设备控制等功能,成为安防监控领域的主流标准。核心作用与优势互通性:打破厂商壁垒,支持跨品牌设备集成。灵活性:用户可自由选择设备,构建定制化监控方案。

2025-05-09 00:04:18 1639

原创 手把手教你玩转MPU6050:STM32F103C8T6直接驱动姿态传感器!

在嵌入式开发中,姿态传感器是一个非常有用的组件,而MPU6050作为一款集成了3轴陀螺仪和3轴加速度计的6DOF传感器,因其性价比高、使用简单而广受欢迎。今天,我将带大家从零开始,使用STM32F103C8T6直接驱动MPU6050,全程使用HAL库。3轴陀螺仪(量程可调:±250°/s、±500°/s、±1000°/s、±2000°/s)3轴加速度计(量程可调:±2g、±4g、±8g、±16g)内置数字运动处理器(DMP)I2C数字接口。

2025-04-26 18:06:33 1010

原创 深入解析CAN协议3:STM32驱动CAN总线通信详解

STM32系列微控制器内置的CAN控制器(

2025-04-13 14:07:39 1153

原创 深入解析CAN协议2:CAN协议层深度剖析,数据帧、仲裁与时序的精密设计

数据帧由7段组成。数据帧又分为标准帧(CAN2.0A)和扩展帧(CAN2.0B),主要体现在仲裁段和控制段。帧起始(Frame Start):功能:表示数据帧的开始。特点:由一个显性位(Dominant Bit)构成,此时CAN_H为高电平(如3.5V),CAN_L为低电平(如1.5V),二者之间的电位差形成信号。仲裁段(Arbitration Field):功能:确定发送优先级,并包含标识符(Identifier)用于唯一标识发送者和接收者之间的通信关系。

2025-04-12 10:36:03 922

原创 深入解析CAN协议1:从核心原理到物理层设计(CAN物理层介绍)

CAN是一种多主(Multi-Master)串行通信协议,由德国博世公司于1983年开发,最初用于解决汽车中复杂线束问题。其核心设计思想是通过非破坏性仲裁机制实现高效通信,确保多个节点可同时竞争总线而不会丢失数据。低速CAN(ISO11519)通信速率 10~125Kbps,总线长度可达 1000 米。高速CAN(ISO11898)通信速率 125Kbps~1Mbps,总线长度 ≤40 米。下图为CAN 的连接示意图。

2025-04-11 14:05:47 885

原创 掌握STM32低功耗开发!HAL库实战指南,让你的项目续航翻倍

STM32系列提供了三种主要低功耗模式,满足不同场景的能耗需求:上电后默认是在运行模式,当内核不需要继续运行时,可以选择后面三种低功耗模式。

2025-04-09 15:55:58 1527

原创 从0到1:STM32 RTC定时器配置全流程

独立于主系统时钟(即使MCU进入低功耗模式仍可运行)提供日历功能(年/月/日/时/分/秒/亚秒)支持闹钟中断和周期性唤醒由备用电池供电(VBAT引脚),主电源断开后仍可保持计时20位的可编程预分频器,可适配不同频率的输入时钟。可选择三种RTC时钟源:HSE时钟除以128(通常为8MHz/128)LSE振荡器时钟(通常为32.768KHz)LSI振荡器时钟(40KHz)

2025-04-08 15:43:03 1156 1

原创 解锁STM32F103C8T6新技能:BKP备份寄存器背后的惊人用途!

BKP(Backup Register)是STM32系列中一组特殊的寄存器,用于在系统掉电或重启时保存关键数据。掉电保持:通过VBAT引脚供电(需外接电池),数据在系统断电后仍能保留。独立时钟域:与RTC共用低速时钟(LSE/LSI),支持低功耗模式。侵入检测:可配置硬件触发事件清除BKP数据(防篡改)。10个16位备份寄存器(BKP_DR1 ~ BKP_DR10)1个侵入检测引脚(PC13)BKP框图。

2025-04-07 11:33:35 356

原创 基于STM32的智能门禁系统设计与实现

在物联网技术快速发展的今天,传统门锁正在向智能化方向演进。密码输入与验证(4x3矩阵键盘)用户信息存储管理(W25Q128 Flash)实时状态显示(0.96寸OLED)电磁锁控制(继电器+5V电磁锁)声光提示反馈(无源蜂鸣器)系统异常报警功能本文详细介绍了基于STM32F103C8T6的智能门禁系统设计方案。系统整合了多种常用外设模块,实现了完整的门禁控制功能。开发者可根据实际需求调整密码策略、存储容量等参数,具体实现代码可根据硬件连接关系进行适配开发。

2025-04-05 15:39:29 1234

原创 嵌入式入门必学:STM32矩阵键盘驱动从0到1实战指南

本方案可扩展至各类STM32系列芯片,通过修改GPIO定义即可适配不同封装型号。结合LCD显示模块可构建完整的人机交互系统,适用于工业控制器、智能仪表等场景。4x3矩阵键盘由12个按键组成,采用行(ROW)列(COL)交叉布局。通过行线输出扫描信号,列线检测输入状态,相比独立按键可节省7个IO口资源。完整工程代码可在Gitee获取:https://gitee.com/bad-lemon/mcu-development-record.git。

2025-04-04 12:13:31 463

原创 深入浅出SPI通信协议与STM32实战应用(W25Q128驱动)(实战部分)

W25Q128是Winbond推出的128M-bit(16MB)SPI接口Flash存储器,支持标准SPI、Dual-SPI和Quad-SPI模式。工作电压:2.7V~3.6V分页结构:256页/块,每块16KB,共1024块支持页编程(256字节/页)擦除操作支持:扇区擦除(4KB)、块擦除(32/64KB)、全片擦除最高104MHz时钟频率超过10万次擦写周期。

2025-04-02 11:46:43 1811 1

原创 深入浅出SPI通信协议与STM32实战应用(W25Q128驱动)(理论部分)

SPI(Serial Peripheral Interface)是电子设备间常用的同步串行通信协议,凭借其高速、全双工的特点,广泛应用于存储器、传感器等外设的通信。

2025-03-28 15:16:08 1051

原创 树莓派温湿度监测终极指南:DHT11+wiringPi驱动深度解析

本实验演示了树莓派与DHT11传感器的典型应用。虽然DHT11精度有限,但其低成本易用性使其成为入门级项目的理想选择。后续可尝试升级到DHT22传感器或使用Python版本实现更复杂的功能。参考资料:DHT11官方数据手册希望这篇博客能帮助您快速上手温湿度监测项目!如有疑问欢迎在评论区留言讨论。

2025-03-25 15:58:14 478

原创 基于树莓派3B+的人脸识别实践:Python与C联合开发

通过本文,您已经实现了树莓派上软硬件协同的人脸识别系统。未来可结合MQTT实现物联网控制,或移植到更复杂的边缘计算场景中。完整代码已托管至[GitHub仓库链接],欢迎Star与Fork!附录百度AI人脸识别文档libcamera官方指南wiringPi GPIO参考问题反馈:欢迎在评论区留言交流,或通过GitHub提交Issue。

2025-03-22 14:38:10 1044

原创 树莓派3B+使用CSI接口OV5647摄像头模块全攻略

树莓派作为一款经典的微型计算机,其强大的GPIO和丰富的扩展接口使其成为物联网和嵌入式开发的明星产品。在众多外设中,‌OV5647摄像头模块‌凭借其500万像素、支持1080P视频录制等特性,成为树莓派视觉项目的热门选择。本文将手把手教你如何在‌树莓派3B+‌上通过CSI接口连接OV5647摄像头,完成硬件配置、驱动启用、拍照录像,并实现Python控制。通过本文指导,您已成功在树莓派3B+上实现了OV5647摄像头的完整控制。

2025-03-22 12:22:50 1757

原创 深入Python C API:掌握常用函数与实战技巧

{NULL, NULL, 0, NULL} // 结束标记Python C API为开发者打开了连接C与Python世界的大门。通过合理使用PyArg_Parse系列函数、Py_BuildValue等工具,你可以轻松实现高性能扩展模块或深度集成现有C/C++代码。记住:‌谨慎管理引用计数‌、‌严格检查错误条件‌是写出健壮代码的关键。

2025-03-21 19:56:19 855

原创 MQTT协议详解:固定报头、可变报头与有效载荷

本文通过对MQTT协议的固定报头、可变报头以及有效载荷的详细解析,帮助读者深入理解MQTT的工作原理。在实际应用中,根据具体需求选择合适的报文类型和参数配置,可以实现高效的消息传输和物联网设备间的通信。

2025-03-18 15:30:17 930

原创 基于STM32F103+ESP8266的OneNet物联网数据上传实战

文章包含详细的代码实现和平台对接说明,实际开发时需根据硬件连接情况调整引脚定义。建议配合示波器调试时序问题,使用串口调试助手验证AT指令交互流程。我并没有使用CubeMx,我使用的HAL代码进行的初始化。大家可以获取我的模板资源。1‌. ESP8266无法连接WiFi‌。3‌.DHT11读取超时‌。2‌. 数据上传失败‌。

2025-03-18 14:40:30 1022

原创 用“快递系统“看懂Socket、TCP、HTTP的区别

如果把网络通信比作快递系统,Socket是快递员与客户交接的窗口,TCP是确保包裹必达的运输流程,HTTP则是包裹里标准化的文件格式。三者的关系就像快递柜、运输车队和文件模板的完美配合。

2025-03-16 15:53:40 260

原创 深入浅出TCP与UDP:三次握手、四次挥手及面试通关指南

‌‌:客户端(租客)与服务器(房东)建立信任关系‌SYN(同步请求)、ACK(确认应答)、Seq(序列号)

2025-03-16 15:28:30 833

原创 一篇文章搞懂OSI与TCP/IP模型:从理论到实战面试题

(示意图:OSI七层与TCP/IP四层对比),

2025-03-16 14:32:54 517

原创 树莓派 3B/3B+/4B使用mjpg-streamer搭建摄像头实时流媒体服务

通过mjpg-streamer,你可以快速搭建一个低延迟的摄像头监控系统,适用于家庭安防、远程监控或物联网项目。结合树莓派GPIO,还可扩展运动检测等高级功能。‌ 提示‌:优化性能时,建议关闭图形界面(sudo systemctl set-default multi-user.target)以节省资源。希望这篇教程能帮助你快速上手!如果有其他问题,欢迎在评论区留言讨论。

2025-03-16 13:17:15 1141

原创 STM32与HAL库开发实战:深入探索ESP8266的多种工作模式

通过HAL库直接操作STM32F103C8T6的UART外设,结合ESP8266的AT指令集,开发者可以灵活实现WiFi模块的多种工作模式。本方案避免了CubeMX的依赖,强调底层寄存器操作与协议解析能力,为物联网终端设备开发提供了高可靠性的通信基础。

2025-03-14 12:39:15 1509

原创 STM32 HAL库实战:轻松实现串口通信驱动蓝牙模块与ESP8266开发

本文通过详细的步骤介绍了如何在STM32F103C8T6上使用HAL库进行串口通信,并展示了如何通过串口驱动蓝牙模块(HC-08)和WiFi模块(ESP8266)。这些技术为实现无线通信功能提供了坚实的基础,适用于各种嵌入式系统应用。

2025-03-13 15:34:56 1113

原创 STM32 HAL库实战:高效整合DMA与ADC开发指南

通过DMA+ADC的高效整合,开发者可以实现低CPU占用率的模拟信号采集系统。合理配置ADC的扫描模式与DMA循环传输。利用HAL库的中断回调机制处理数据。通过硬件与软件优化提升信号质量。掌握这一技术后,可轻松应对传感器数据采集、工业控制等高实时性场景的需求。

2025-03-12 15:02:38 1224

原创 精通STM32 HAL库:打造Systick定时器,实现多线程操作系统

寄存器地址功能描述CTRL0xE000E010控制寄存器:使能计数器、中断、选择时钟源等。LOAD0xE000E014重装载值寄存器:设定计数器的初始值(最大值0xFFFFFF)。VAL0xE000E018当前值寄存器:读取当前计数值,写入任意值会清零计数器。CALIB0xE000E01C校准值寄存器:包含出厂预定义的校准值(STM32中通常无需手动配置)。关键位说明(CTRL寄存器):Bit 0:使能计数器(1=启动,0=关闭)

2025-03-11 14:27:47 1204

原创 DeepSeek本地部署指南:从零开始构建你的AI模型环境

在人工智能迅猛发展的今天,越来越多的开发者和研究者希望能够在本地环境中部署和运行AI模型,以便更好地控制数据隐私、提高模型响应速度以及进行定制化开发。本文将详细介绍如何在本地环境中部署DeepSeek模型,涵盖从工具下载到模型运行的完整流程。

2025-02-02 20:13:11 488

原创 01、硬件设计常用经典电路

一直想入职嵌入式软件,但是25年作为学历一般的应届生真是太难了,于是今年实习就不想跑太远了,就在老家5线小城市进入了一家小企业,当电子工程师实习(学徒)。抱着入职什么,就学习什么的态度,大家都要认真对待每一份工作。硬件开发为软件开发打硬件基础。本篇文章将介绍几种常见的经典电路。

2025-01-24 13:47:52 1436

原创 01-硬件入门学习/嵌入式教程-CH340C使用教程

CH340C是一款USB转TTL电平转换器,可以将电脑的USB数据转换成串口数据,方便与单片机(MCU)等设备进行通信。这款芯片支持3.3V和5V电源电压,功能齐全,是DIY设计和嵌入式开发中的常用组件。

2025-01-23 13:41:37 1673

原创 02-硬件入门学习/嵌入式教程-Type-C使用教程

Type-C是一种新型的USB接口标准,由USB Implementers Forum(USB IF)于2014年推出。它以其可逆插的设计、更高的数据传输速度和更强的电力传输能力而著称。Type-C接口不仅适用于智能手机、平板电脑等移动设备,也逐渐成为笔记本电脑和其他便携式设备的主流接口。

2025-01-23 13:19:15 464

原创 使用内网穿透工具,为树莓派配置公网地址实现远程ssh

在我们使用树莓派时,我们常使用ssh连接,但是每次连接都需要在局域网中才能连接,这并不是很方便。本文将介绍使用内网穿透工具,实现远程ssh;

2024-12-28 20:55:55 1004

原创 Linux-网络编程-socket编程

端程序从命令行参数中接收服务器的IP地址和端口号。它首先创建一个Socket,然后连接到服务器,发送一条消息,并等待服务器的响应。一旦接收到服务器的响应,客户端就打印出消息并关闭Socket。如果Socket创建、连接或数据传输失败,程序将打印出错误信息并退出。Socket编程是一种强大的网络编程技术,可以实现计算机之间的通信。在进行Socket编程时,需要掌握其基本概念、主要步骤、主要类型以及注意事项等方面的知识。同时,还需要根据具体的应用场景和需求进行相应的调整和优化。

2024-12-15 23:43:48 566 1

原创 Linux_POSIX消息队列-异步通知

mqdes:是一个打开的消息队列描述符。:是一个指向sigevent结构的指针,该结构描述了当消息到达时应如何通知进程。sigeventLinux的POSIX消息队列提供了一种强大的进程间通信机制,而异步通知功能则进一步增强了其灵活性。通过使用mq_notify函数和信号处理,我们可以实现当消息到达队列时立即得到通知的功能,而无需通过轮询或阻塞等待。这在需要高效、实时响应的场景中非常有用。

2024-12-14 09:00:00 412

原创 Linux_POSIX消息队列

POSIX 消息队列(POSIX Message Queues)是 POSIX IPC(进程间通信)机制的一种,它允许进程间通过发送和接收具有固定最大长度的消息来进行通信。与管道和命名管道相比,POSIX 消息队列提供了更高级的功能,例如消息类型化和非阻塞操作。本文将指导你如何在 Linux 环境下使用 C 语言编写程序来操作 POSIX 消息队列。在POSIX消息队列中,我们常用的主要的函数有:mqd_t mq_open函数原型:mq_send函数原型:首先,我们需要使用函数来创建或打开

2024-12-13 09:30:00 794

原创 06-树莓派IIC协议驱动OLE显示屏

/初始化wiringPi库i2c,devId是i2c设备地址,返回值是linux的文件描述符//直接读取数据,fd是wiringPiI2CSetup函数的返回值,返回值是读到的数据//直接写数据,fd同上,data是写入的数据//写数据到8位寄存器,fd同上,reg寄存器地址,data要写入的数据//写数据到16位寄存器,fd同上,reg寄存器地址,data要写入的数据//从寄存器读取8位数据,fd同上,reg寄存器地址,返回值读取到的数据。

2024-12-13 02:04:02 455

原创 C语言-进程间通信---共享内存的入门

共享内存是一种高效的进程间通信方式,它允许不同进程直接访问同一块内存区域。通过C语言的IPC相关函数,我们可以方便地创建、连接、断开和删除共享内存。然而,在使用共享内存时,我们需要注意同步问题、权限管理、错误处理以及内存管理等方面的问题,以确保程序的正确性和安全性。本文介绍了共享内存的基本概念和使用方法,希望能为读者入门共享内存提供一定的帮助。在实际使用中,建议参考操作系统的相关文档和资料,以获得更详细和深入的了解。

2024-12-12 19:45:00 1025

原创 c语言-Linux进程间通信---消息队列

消息队列是一种在C语言中实现进程间通信的有效方式。通过使用msgget、msgsnd和msgrcv这三个函数,我们可以方便地创建消息队列、发送和接收消息。在实际应用中,我们可以根据具体需求对消息队列进行更复杂的操作和控制。希望本文对你理解和使用C语言中的消息队列有所帮助。

2024-12-12 09:45:00 794

STM32F103C8T6的HAL库模板

STM32F103C8T6的HAL库模板

2025-03-18

OLED-显示屏字模工具

液晶显示模块字模工具

2024-12-13

WiringPi-源码

WiringPi源码

2024-12-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除