自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32 (NVIC)中断

本文摘要主要介绍了OpenHarmony中断注册服务ISR(InterruptServiceRegister)及其在STM32中的实现原理。内容涵盖中断基本概念、分类(内部/外部中断)、中断处理流程(IRQn和IRQHandler)、EXTI外部中断配置方法,以及USART接收数据的中断优化策略。重点讲解了中断优先级管理(占先优先级和次级优先级)、NVIC中断配置函数,并提供了STM32中断开发的完整代码示例,包括按键中断和USART通信中断的具体实现方案。文章还涉及内核中断/异常处理机制,为嵌入式系统开发

2026-05-15 11:43:28 354

原创 STM32 串口(USART)配置

本文摘要:串口通信是硬件数据传输的常用方式,支持WiFi、蓝牙等多种协议。文章详细解析了串行通信原理(单工/半双工/全双工)、同步/异步传输机制,重点阐述STM32的USART模块技术细节:包括寄存器配置(CR1/CR2控制数据格式)、波特率计算、GPIO模式设置(PA9复用推挽输出/TX,PA10浮空输入/RX)。通过代码实例演示了USART1初始化流程,涵盖时钟使能、引脚配置、8N1格式设定及波特率校准,并实现数据发送功能(单字节/缓冲区/字符串),强调状态寄存器(SR)的TC位在发送完成判断中的关键作

2026-05-15 11:03:34 452

原创 STM32 (MCU) and (GPIO)

目前使用的开发版是基于 STM32F103ZET6 型号。ST 意法半导体公司产品M 使用 Cortex-M 内核32 当前 MCU 为 32 位芯片F103F1 ==> Cortex-M3 内核03 ==> F1 系列的型号,03 是增强型ZET6Z ==> 引脚数目 144 引脚E ==> 闪存存储器大小(Flash) 512 KBT ==> 封装标准 LQFP 封装6 ==> 工作温度范围 -40 ~ 85 ℃GPIO,全称为通用输入输出。

2026-03-03 16:11:12 970

原创 Hi3861 OpenHarmony 中断服务注册和ISR DTH11 温湿度传感器和PWM 控制

DHT11 和 MCU 进行通信,对应有三个阶段MCU 告知 DHT11 进行数据采样传递,唤醒 DHT11,对应 GPIO 引脚工作模式为输出模式DHT11 告知 MCU 设备已准备就绪,准备开始传递有效数据,对应 GPIO 引脚工作模式为输入模式。DHT11 发送 40 位数据内容【小重点】需要完成单一数据位 0 和 1 接收每接收 8 个数据位对应一个字节5 个字节数据进行校验判断,解析为最终结果。

2026-02-26 14:38:27 757

原创 Hi3861 OpenHarmony 多线程操作、Timer 定时器、点灯、 IO 相关设备控制

本文介绍了OpenHarmony系统中的多线程编程和设备控制技术。主要内容包括:1)多线程操作基础,如线程创建、调度和同步机制(互斥锁、信号量);2)消息队列实现线程间通信;3)定时器应用;4)GPIO编程控制LED灯、蜂鸣器、人体传感器和按键等硬件设备。通过代码示例详细展示了如何配置引脚模式、控制输入输出电平,实现声光报警、按键检测等功能。文章提供了完整的组件构建配置,为OpenHarmony系统下的硬件编程提供了实用指导。

2026-02-02 17:00:27 880

原创 Hi3861 OpenHarmony 芯片概述、代码实现和烧录过程

本文介绍了基于OpenHarmony 3.0操作系统在Hi3861芯片上的开发流程。OpenHarmony是一款面向全场景的开源分布式操作系统,适用于智能家居、工业物联网等场景。开发环境基于Ubuntu 22.04,使用交叉编译工具生成可执行文件。文章重点讲解了OpenHarmony的多线程编程模式,详细说明了线程创建、属性设置和任务函数实现方法,并提供了示例代码。同时介绍了BUILD.gn文件的配置规范,以及程序编译、烧录到Hi3861开发板的具体操作步骤。开发过程中需要注意线程管理、代码规范等技术要点,

2026-02-02 16:16:38 637

原创 电路基础和 PCB 制作

本文系统介绍了电路基础知识与原理图绘制方法。第一部分详细讲解了电路基本概念与元器件特性,包括欧姆定律、电阻/电容/二极管等元件的原理与应用场景,重点分析了二极管钳位效应、收音机原理和整流桥等实用电路。第二部分阐述了原理图设计要点,涉及MCU最小系统开发板模块组成、元件选型标准,并详细说明了0603电阻等自定义元件库的创建流程,包括原理图绘制、封装设计及关联操作。全文以实际工程应用为导向,既涵盖基础理论又包含实用设计技巧,为电子电路设计与开发提供了全面指导。

2025-11-22 17:19:42 1199

原创 原始套接字

摘要:本文介绍了原始套接字(RawSocket)的特点和底层协议结构。原始套接字可直接访问IP层及以下协议,用于网络监测、自定义协议实现等。详细分析了UDP、TCP和IP协议的底层数据结构格式,包括各字段定义和功能。原始套接字基于数据链路层实现,通过直接操作IP数据包实现底层网络通信功能。(99字)

2025-11-18 16:05:37 306

原创 TCP和UDP概述

本文系统介绍了TCP和UDP网络协议的核心概念与实现方法。TCP协议部分详细讲解了面向连接的特性、三次握手和四次挥手过程,以及客户端/服务器架构中的关键函数(connect、listen、accept)。UDP协议部分则重点阐述了无连接传输特点、数据包发送接收流程(sendto/recvfrom),并深入分析了组播和广播的实现机制,包括相关结构体定义和setsockopt函数的使用。文章还提供了完整的代码示例,涵盖UDP点对点通信、组播和广播的具体实现,为网络编程实践提供了实用参考。

2025-11-18 15:51:44 784

原创 网络编程概述

本文主要介绍了网络编程的基础知识,包括网络起源、TCP/IP协议栈、IP地址与端口号概念,重点讲解了网络字节序转换和IP地址转换函数。文章首先概述了网络解决的问题和设备间的数据交换需求,然后详细解析了网络层次结构和主要协议。接着说明了IP地址和端口号在网络通信中的关键作用,并对比了本地字节序和网络字节序的区别。最后重点介绍了htonl/htons、ntohl/ntohs等字节序转换函数,以及inet_pton和inet_ntop等IP地址转换函数的使用方法,提供了实现这些功能的代码示例。这些知识是进行网络编

2025-11-17 14:30:18 1075

原创 系统编程概述

本文介绍了Linux系统中线程同步的两种机制:条件变量和信号量的实现与应用。首先通过条件变量实现了生产者-消费者模型,展示了线程间通过条件变量实现同步等待和唤醒的过程。随后详细讲解了信号量的工作原理(P/V操作)及其API(初始化、等待、释放和销毁),并通过两个案例分别演示了信号量如何实现线程互斥控制(共享资源保护)和顺序执行控制(线程执行流程调度)。最后给出了一个综合应用案例,通过结构体封装数据和处理方法,利用多线程实现数组计算的并行处理,展示了线程在实际编程中的应用模式。全文包含详细的代码实现和注释,涵

2025-11-17 11:29:30 696

原创 函数指针、枚举和共同体、文件操作

本文介绍了C语言中函数指针、枚举类型和共用体的使用方法。函数指针部分详细讲解了如何定义和使用函数指针,并通过实例展示了函数指针作为参数传递和过滤函数的应用。枚举类型部分说明了如何定义和使用枚举提高代码可读性,包括默认值和自定义值的设置。共用体部分解释了共用体的内存共享特性,并通过示例演示了不同类型数据的存储方式。最后简要介绍了文件操作的基本函数,包括fopen、fclose、fputc、fputs、fgetc和fgets等文件读写操作。这些内容为C语言高级特性提供了实用指南。

2025-11-14 19:39:42 969

原创 字符串操作和内存操作相关函数

本文主要介绍了C/C++中字符串操作和内存操作相关函数。字符串部分讲解了字符串基本概念、'\0'结尾要求,以及常用字符串函数如strlen/sizeof、strcat/strncat、strcpy/strncpy、strcmp/strncmp、strstr/strchr等的功能、参数说明和返回值。内存操作部分则介绍了memchr、memcmp、memcpy/memmove和memset等函数,这些函数以字节为单位操作内存数据,不考虑数据类型。文章通过代码示例演示了各函数的实际用法,特别强调了内存操作函数中i

2025-11-14 19:08:32 1019

原创 链表和预处理

本文介绍了链表数据结构的实现及C语言预处理技术。链表部分详细说明了头结点和元素结点的结构设计,通过火车车厢类比解释链表的连接方式。同时展示了学生信息结构体(Student)和链表节点(Node)的具体实现代码及其内存管理方法。预处理部分重点讲解了编译流程、宏定义(无参和有参)、条件编译(#if/#ifdef等)以及多文件编程规范,包括头文件的标准格式和模块化开发原则。通过完整代码示例演示了从数据结构到模块化开发的完整实现过程,为C语言项目开发提供了实用参考。

2025-11-13 11:37:15 857

原创 结构体的使用

本文系统介绍了C语言中结构体的使用,包括:1)结构体定义语法及初始化方式;2)结构体变量和指针的基本操作;3)动态内存分配(malloc/calloc);4)结构体数组与指针数组实现;5)内存对齐原则。重点讲解了结构体指针操作(->运算符)和动态内存管理,通过多个示例演示了静态/动态数组的实现方式及内存释放要点。最后指出结构体内存占用受成员顺序影响,需遵循最大类型对齐原则。

2025-11-13 09:52:05 581

原创 动态内存管理

文章摘要:本文介绍了C语言动态内存管理的核心内容,包括内存分区概念和关键函数的使用方法。重点讲解了malloc、calloc、realloc三个内存申请函数,其中malloc直接分配指定字节数,calloc分配并初始化内存为零,realloc可调整已分配内存大小。同时详细说明了free函数的正确释放方式。文章通过实例代码演示了各函数的具体应用,并特别强调了void*指针的类型转换、内存释放后不可重复释放等重要注意事项,为C语言动态内存管理提供了实用指南。

2025-11-12 16:18:00 931

原创 地址和指针

本文主要介绍了计算机内存地址与指针的相关概念及应用。内存地址用于标识数据存储位置,采用十六进制表示。指针是存储内存地址的变量,通过指针可以高效访问和操作内存数据。数组名实际上是存储数组首地址的指针常量,指针运算与数组下标密切相关。文章详细讲解了指针的定义、运算符使用、数组与指针的关系、地址运算等内容,并通过代码示例演示了指针作为函数参数实现数值交换的原理,强调地址传递与数值传递的区别。这些知识为计算机底层数据操作提供了重要基础。

2025-11-12 15:55:14 1073

原创 数组的算法

本文介绍了数组操作的15个基础案例,包括:1)查找最大/最小值下标;2)查找元素首次/末次出现位置;3)数组逆序;4)元素替换;5)元素读取;6)元素插入/删除;7)查找所有匹配元素;8)数组拼接;9)截取子数组;10)排序推演案例。每个案例均包含基本实现和函数封装两种形式,详细说明了算法思路、参数设计和实现细节。其中涉及数组遍历、条件判断、元素交换等核心操作,并强调了边界条件的处理(如非法下标判断)。最后通过排序推演案例展示了如何基于基础操作构建复杂算法。这些案例为数组处理提供了完整的基础工具集。

2025-11-11 22:05:57 589

原创 数组和数组相关算法实现

本文摘要:文章系统讲解了C/C++中数组的基本概念和使用方法。主要内容包括:1)数组的定义格式(数据类型、数组名、容量和初始化数据);2)数组元素访问与下标操作注意事项(有效范围0~容量-1);3)for循环与数组的配合使用;4)数组作为函数参数的规范要求;5)常用数组算法实现(查找最大值/最小值下标、指定元素首次/末次出现位置等)。重点强调了数组操作中的数据类型一致性、下标越界防范和初始化必要性,并提供了详细的代码示例说明数组的实际应用。

2025-11-11 21:45:21 438

原创 多文件编程

多文件编程将项目分成多个文件,便于团队协作。分为三个步骤:函数声明放在.h头文件,函数实现在.c文件,调用在main函数中。头文件需用#ifndef防止重复引入,包含资源引入和函数声明:.文件引入对应头文件并实现函数;main文件调用函数。示例展示了获取较大值的函数实现和调用流程。

2025-11-06 21:42:10 342

原创 函数的基本概念和用途

文章介绍了函数的基本概念和用途,强调其减少代码冗余、提高维护性和可读性。以main函数为例说明函数模板结构,包括返回值类型、函数名、参数列表和函数主体。详细分类了四种函数类型,并通过GetMax和ShowMax示例展示有返回值和无返回值函数的实现与调用流程。最后提到函数文档注释的重要性。

2025-11-06 21:34:01 1181

原创 分支与循环

文章介绍了C语言的分支结构,包括i、if else和if else if三种形式。if根据条件执行代码;ifelse在条件真假时分别执行不同代码;ifelseif依次判断多个互斥条件并执行对应代码。举例说明了成绩判定系统的实现方法。

2025-11-05 21:51:11 1112

原创 c语言运算符

文章介绍了C语言中的运算符,包括算数运算符(如+、-、*、/、%)、增强运算符(如+=、-=)、自增自减(++、--)、关系运算符(如==、>)逻辑运算符(如&&、|)和位运算符(如&、)。重点讲解了/和%的用法,/用于取整或除法,%用于取余,范围是0到除数减1。最后通过示例代码和随机数生成问题展示了%的实际应用。

2025-11-05 11:06:23 583

原创 基本数据类型

文章介绍了C语言中的基本数据类型,包括常量的概念及分类。数值常量分为整数和小数,分别用%d和%输出控制,小数可指定精度。字符常量用单引号表示,包括英文字符和数字字符,用%c输出,但C语言不支持中文字符。

2025-11-01 16:05:06 644

原创 Linux基础命令

Ubuntu与Windows在文件系统上有显著差异:Ubuntu采用单一根目录(/)结构,所有文件都从根目录出发。每个用户拥有独立家目录(~),位于/home/用户名路径下。终端显示信息包括登录账号、计算机名和当前路径($前部分)。学习Linux命令对嵌入式开发至关重要,因为产品可能没有图形界面。基础命令如ls可列出当前目录内容:-a参数显示隐藏文件(以.开头),-l参数显示详细信息。这种文件结构和命令行操作是适应Ubuntu系统的关键要点。

2025-11-01 15:02:52 337

原创 第一行代码与基本数据类型

本文摘要介绍了C++编程基础,包括代码编写流程、语言分类、第一个C++程序示例以及基本数据类型。主要内容:1.区分编译型语言(C/C++)和解释型语言(Python/JS)的特点;2.展示Hello World程序结构及编译执行方法;3.详细说明常量(数值、字符、字符串)和变量(整型、浮点型、字符型)的使用,包括声明格式、取值范围及注意事项;4.强调编程规范如符号使用、命名规则等。文章为C++初学者提供了清晰的基础知识框架。

2025-11-01 14:40:27 1165

原创 数据存储与进制转换

本文摘要:文章介绍了计算机数据存储和处理的基础知识。主要内容包括:1)计算机硬件核心组件(CPU、RAM、ROM)及其功能;2)数据存储单位(字节、bit)和常用量级(KB到TB);3)常用进制(二、八、十、十六进制)及其相互转换方法;4)原码、反码和补码的概念,重点说明计算机中负数的表示方法和运算原理。这些基础知识是理解计算机数据存储和运算机制的核心内容。

2025-10-31 15:18:15 1186

空空如也

空空如也

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

TA关注的人

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