自定义博客皮肤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)
  • 收藏
  • 关注

原创 常用文件操作api

Linux系统编程中常用的文件操作函数: open() - 打开/创建文件,需指定路径、打开模式(如O_RDWR/O_CREAT)和可选权限(如0644),返回文件描述符 write() - 向文件描述符写入指定字节数据,返回实际写入大小 read() - 从文件描述符读取数据到缓冲区,返回实际读取字节数 fstat() - 获取文件元数据(如通过st_size获取文件大小),需传入文件描述符和stat结构体 close() - 关闭文件描述符 文中包含各函数的原型、参数说明及典型用法示例,如使用

2026-07-19 10:33:37 35

原创 线程创建、销毁、互斥、同步

Linux线程编程的核心内容,分为线程管理和同步机制两大部分。线程管理部分详细讲解了线程创建(pthread_create)、分离(pthread_detach)、退出(pthread_exit)和取消(pthread_cancel)等基本操作。同步机制部分重点阐述了互斥锁(mutex)和条件变量的使用方法,包括静态/动态创建、加锁解锁操作、信号等待与通知等。文章通过具体代码示例(如线程创建和条件变量应用)展示了这些API的实际应用场景,帮助理解多线程编程中的资源共享和线程同步问题。所有操作均基于

2026-07-16 15:19:11 230

原创 多路IO复用[select版TCP服务器与poll版TCP服务器]与常用网络编程函数详解

本文介绍了Linux网络编程中的多路IO复用技术,包括select和poll两种接口的使用方法。主要内容包括: select函数原型及使用示例,展示了如何创建TCP服务器并监控多个客户端连接 poll函数原型及使用示例,提供了另一种高效的IO多路复用实现方式 常用网络编程函数详解:socket()、bind()、inet_addr()、htons()、listen()、accept()等 通过对比传统多线程方法,阐述了IO复用技术在资源利用和性能方面的优势 文章包含完整的代码示例,演示了如何使用select

2026-07-16 10:36:59 208

原创 2.8寸LCD屏驱动(ILI9341)

基于STM32通过GPIO模拟8080时序驱动2.8寸LCD屏,包含完整驱动代码。可实现初始化配置、ID读取、基本绘图功能(画点、直线、矩形)及图片显示功能。

2026-07-08 17:37:52 490

原创 软件模拟8080通信

软件模拟8080通信时序,附带完整代码

2026-07-08 16:29:00 252

原创 LVGL-v7.11移植(详细版,附模版例程)

stm32f103zet6移植LVGL,教程详细,附带例程模版。

2026-06-22 18:53:55 219

原创 keil下载报错Connection refused due to device mismatch!

解决keil下载报错Connection refused due to device mismatch

2026-06-10 14:29:51 229

原创 基于终端的简易mp3播放器(源码分享)

基于终端的简易mp3播放器,使用C语言编写,源码分享。

2026-04-22 11:12:51 36

原创 静态库和动态库的制作(Ubuntu20.04环境下)

静态库和动态库的制作以及区别。

2026-04-14 17:03:17 50

原创 使用链表和数组实现栈

限定仅在表尾进行插入和删除操作的线性表。这一端被 称为栈顶,相对的,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶 元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻 的元素成为新的栈顶元素。堆栈又名栈(stack。先入的子弹最后被打出。

2026-04-08 17:17:41 52

原创 MOS管的符号和管脚判别

今天学习了Pmos 和 Nmos 现在对所学知识进行一个简单的总结,如果有错误的地方欢迎大家指出。

2026-03-25 19:33:43 191

原创 函数指针学习分享(嵌入式必备)

本文详细介绍了C语言中函数指针的概念和使用方法。函数指针是指向函数入口地址的变量,其核心作用是让函数可以像变量一样传递、赋值和调用。文章讲解了基础写法返回值类型(*指针变量名)(参数列表)和简化写法typedef返回值类型(*新类型名)(参数列表),并重点区分了普通类型typedef和函数指针类型typedef的语法差异。最后通过嵌入式驱动统一接口的实战案例,展示了函数指针在模拟多态方面的应用价值,即统一上层接口和便于扩展。掌握函数指针对提高C语言编程能力具有重要意义。

2026-03-25 19:27:23 316

原创 int* p[4] 和 int(*p)[4] 的区别(超详细)

声明形式典型用途易错点int* p[4]1. 存储多个 int 变量的地址;2. 模拟不规则二维数组(每行长度不同)不能直接指向二维数组的行(类型不匹配)int(*p)[4]1. 指向固定列数的二维数组;2. 遍历二维数组(精准控制行跳转)必须指向 “恰好 4 个 int 的数组”,列数不匹配会报错int* p[4]是数组,元素为int*int(*p)[4]是指针,指向int[4]

2026-03-24 14:28:00 243

原创 C语言位运算符 & | ~ ^ << >>

位运算是对二进制数的逐位操作,主要包括按位与(&)、或(|)、取反(~)、异或(^)、左移(<<)和右移(>>)。按位与见0为0全1则1,用于清零特定位;按位或见1为1全0则0;异或相同为0不同为1。左移相当于乘2,右移相当于除2。嵌入式开发中常用组合操作:&=~可精确清零指定位而不影响其他位,|=可将特定位设为1。这些操作高效且安全,是底层编程的重要技术。

2026-03-16 11:16:44 371

原创 ubuntu下的常用命令

ls (查看当前路径下的文件内容 -l 以列表形式展现,-a 查看所有文件包含隐藏文件 - h自动转换内存单位)-x 解压 -c 压缩 -v 打印过程信息 -f跟压缩包名字。cat 文件名 -n (将文件内容打印到终端, -n 显示行号)sudo dpkg -P 安装包名字 (彻底删除安装包及其配置文件)解压缩: tar -xvf 压缩包名称。sudo dpkg -i 安装包名字 (安装安装包)sudo dpkg -r 安装包名字 (卸载安装包)

2026-03-11 20:11:38 238

原创 Ubuntu安装(包含VMwere安装)

本文介绍了在VMWare虚拟机中安装和配置Ubuntu 20.04系统的完整流程。首先说明VMWare 17.6及以上版本可免费下载安装。然后详细讲解了在VMWare中创建新虚拟机并安装Ubuntu系统的步骤,包括重启等操作。系统安装完成后,指导用户通过终端更新系统并安装open-vm-tools-desktop工具包,该工具可实现自动分辨率调整和Windows系统间的数据交互功能。最后还提供了可选的虚拟化配置建议,说明开启虚拟化技术能提升虚拟机CPU利用率。全文提供了从软件安装到系统配置的一站式解决方案。

2026-03-10 10:17:45 84

原创 进制和进制之间转换

本文介绍了二进制与八进制、十六进制、十进制之间的转换方法。二进制转八进制采用3位分组法(421规则),转十六进制采用4位分组法(8421规则),转十进制则按位权展开求和。十进制转二进制通过除2取余法实现。八进制与十六进制间的转换需先转二进制再转换。文中提供了具体转换示例,如二进制10101101011010转八进制为025532,转十六进制为0x2B5A;十进制492转二进制为111101100。各进制转换规则清晰明了,便于理解和应用。

2026-03-09 16:27:06 359

原创 快速入门,使用Proteus进行stm32仿真

4.系列选择Cortex-M3,controller对应自己的芯片。选择hex文件,频率可对应自己芯片的主频。1.首先点击“文件”->“新建工程”2.这里可以设定自己工程的名称,3.如图,点击下一步。

2026-01-26 17:48:15 67

原创 一篇文章讲清static关键字

一篇文章讲清static关键字

2025-02-11 21:55:47 495

原创 二进制和十进制的互相转换(简单易学)

二进制和十进制的互相转换,方法总结

2024-12-29 09:00:00 400

原创 共用体union学习心得

由于共用体所有成员位于同一段内存,因此共用体的大小就等于最大成员的大小。在程序中改变共用体的一个成员,其他成员也会随之改变。当给某个特定的成员进行赋值时,其他成员的值也会具有一致的含义,这是因为它们的值的每一个二进制位都被新的值所覆盖。1、同一个内存段可以用来存放几种不同类型的成员,但是每一次只能存放其中一种,而不是同时存放所有的类型。2、共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就会失去作用。3、共用体变量的地址和它各个成员的地址是一样的。

2024-12-28 08:00:00 1021

原创 STM32通过TB6612驱动直流电机

使用stm32f103c8t6+tb6612驱动直流电机,源码加程序详解。

2024-12-21 13:16:35 1531

原创 keil5调试后出现 Encountered an improper argument 问题

keil5调试后出现 Encountered an improper argument 问题简单解决

2024-12-20 12:05:27 1887 2

原创 keil5软件程序报错,但是编译没有问题

解决keil5软件提示程序错误,但是编译没有错误的问题。

2024-12-14 16:00:04 3068

原创 条件运算符(三目操作符)

条件运算符(三目运算符)a > b ? c : d

2024-12-07 17:08:56 438

原创 TB6612电机驱动板驱动有刷直流电机

TB6612引脚接线介绍

2024-12-01 23:24:18 5516

原创 使用Arduino驱动舵机

通过Arduino驱动舵机旋转至指定的角度。简单易上手。

2024-11-26 14:14:39 1458

空空如也

空空如也

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

TA关注的人

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