自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux系统编程--------MP3项目实战

本文介绍了基于Linux系统的MP3播放器开发实战。首先搭建开发环境,安装mpg123播放器和LVGL图形库。通过父子进程实现歌曲播放与界面控制的同步,子进程负责播放音乐,父进程管理菜单显示和功能控制。代码实现了播放/暂停、切歌等核心功能,并利用信号机制处理进程间通信。随后使用GUI Guider工具设计交互界面,将功能移植到图形化程序中,最终完成了一个具有基本播放功能的MP3播放器项目。该项目综合运用了Linux系统编程、进程管理和嵌入式GUI开发技术。

2025-12-04 18:11:52 1123

原创 菜鸟日记--------进程与信号

本文摘要:介绍了进程和信号的基本概念。进程是程序运行的基本单元,包含线程,具有独立性、动态性等特性,分为就绪、执行、阻塞三态。系统通过进程号管理进程,常见进程类型包括父/子进程、僵尸进程等。文章详细说明了fork/vfork等进程创建函数,以及getpid/wait等进程管理函数。信号是进程间通信方式,Linux支持62种信号,重点介绍了SIGKILL(9)、SIGALRM(14)等常用信号及其处理函数kill/signal等。通过代码示例演示了进程创建、信号发送和处理的基本操作。

2025-12-03 16:44:09 1129

原创 菜鸟日记---------文件与目录

本文介绍了Linux系统编程中的文件操作、时间编程、目录操作和文件属性四大核心内容。文件操作部分详细说明了基于非缓冲区的open、write、read、close等函数的使用方法;时间编程介绍了date、cal等常用命令及时间函数;目录操作涵盖了getcwd、mkdir等8个常用目录函数;文件属性部分讲解了stat结构体及其相关函数,包括文件类型判断和权限获取。全文通过大量代码示例展示了各功能的具体实现方法,为Linux系统编程提供了实用参考。

2025-12-03 11:28:42 912

原创 菜鸟日记--------Linux系统编程

库文件是预编译的可重用代码集合,包括函数、类或数据结构等核心功能模块。开发者通过调用库提供的接口实现特定功能,无需重复编写底层代码。如数学库的开方sqrt(x)等函数的实现。

2025-11-23 20:13:30 1076

原创 菜鸟日记--------栈和队列

栈(Stack)是一种线性数据结构,其核心特点是 “后进先出”(Last In, First Out,简称 LIFO)或者“先进后出”(FIFO)—— 即最后放入栈中的元素,会最先被取出。可以理解为 “栈” 像一摞叠起来的盘子:新盘子只能放在最顶端(“入栈”);取盘子时也只能从最顶端拿(“出栈”);最底下的盘子(最先放入的元素),要等上面所有盘子都被拿走后才能取出。int arr[5];//栈里面元素的数量int *ptemp;//栈指针//栈底指针int *pend;//栈顶指针。

2025-11-19 17:11:46 850

原创 菜鸟日记--------链表

链表是数据结构中一种常见的线性表,其特点是通过指针(或引用)将零散的节点(数据单元)连接成逻辑上的连续结构(线性存储)。与数组(连续存储)不同,链表的节点在内存中可以不连续,通过指针维系节点间的逻辑关系(链式存储)。链表是由一个一个的节点构成的,而节点又包含所存的数据以及指向下一节点的地址,因此节点由数据域和指针域组成。int data;// 数据域// 指针域} Node;双向链表中的每个节点不仅包含指向下一个节点的指针next),还包含指向前一个节点的指针prev。

2025-11-19 11:29:10 827

原创 C语言--------学生信息管理系统

摘要:本文介绍了一个基于C语言的学生管理系统项目,该系统用于检验C语言第一阶段学习成果(涵盖初识C语言、流程控制、数组、指针、函数和结构体)。系统采用模块化设计,包含用户管理(注册/登录)、学生信息管理(增删改查)和成绩排序三大功能模块。其中,学生数据通过结构体数组存储(最多5条记录),成绩排序采用冒泡排序算法实现。系统采用两层菜单结构,通过全局变量和多个功能函数实现核心逻辑,如随机账号生成、密码验证、学号查重等。测试方案强调"分布测试"原则,提供了注册、新增、查找等功能的典型测试用例。

2025-11-11 20:50:58 1437

原创 菜鸟日记--------函数

本文介绍了C语言函数的基础知识与应用。主要内容包括:1)函数基础概念,包括四种定义方式:无参无返回值、有参有返回值、无参有返回值、有参无返回值;2)函数声明与调用的三种方式:主函数调用子函数、子函数互调及递归调用;3)形参与实参的区别及函数返回值的三种应用;4)全局变量与局部变量的对比,强调局部变量的优势。文章通过代码示例详细说明了函数在C语言中的使用方法,帮助读者理解函数的模块化编程思想及实际应用场景。

2025-11-06 19:46:25 1256

原创 菜鸟日记--------指针(2)

指针和数组在C语言中紧密关联,数组名本质上是数组首元素的地址常量,指针可以用于遍历或操作数组元素,本篇内容主要围绕指针与数组展开。!!~~好抽象的一节!~~!

2025-11-05 21:02:47 781

原创 菜鸟日记--------指针(1)

这里简单说明一下 * 的用法,* 在C语言里有多重含义,比如算术运算的乘法、这里int* 的指针类型,还有也是作为单目运算符的使用,解地址的使用。)申请一个1字节空间,同时这一个字节的空间会被分配一个地址,以上代码就是把原本a的地址给了p,如果这个时候打印a和p的地址会发现二者是一样的。这里运算的时候,根据运算优先级*和++是同级,但是规定从右向左运算,又因为++后置所以“先用后加”,这里输出结果:10。第二种是初始化为变量的地址,将指针初始化为已存在变量的地址,让其指向该变量的内存位置。

2025-11-03 19:31:54 981

原创 数组补充以及习题分享

这里还可以拓展出二进制数转换为十进制数,二进制转十进制需要把数拆分(当然也有其他方法比如用字符数组来实现),拆分的时候注意从最低位逐个拆分,然后乘以对应的权重再把尾数剔除。学习数组的过程中斐波那契数列是一道经典的题目,其主要思想就是前两位数字之和为下一位的数,需要注意的是前两位数都是1,这里需要我们直接定义出来。杨辉三角与斐波那契数列不同的是需要用到二维数组,前面说过二维数组虽然对嵌入式的学习没有一维数组重要,但还是要有基本的理解的,这道题目可以辅助理解二维数组。我们学过十进制转二进制的方法用。

2025-11-03 19:29:07 518

原创 菜鸟日记--------数组(2)

这样便实现了字符数组的复制功能,需要注意的是,这里复制的时候会把原数组含有的\0复制到目标数组里,以上面代码为例打印出的结果并不是hello6789,由于复制过程中把src数组o后面的\0覆盖到了dest数组5的位置,打印的时候遇到\0便终止了。比如n的值输出,字符串是一样的,相减得0,返回值0就表示字符串相等;如上代码,如果我们定义了一个长度很大的数组,但是里面只存了一部分,这个时候计算数组的实际长度的时候就需要用到strlen函数来计算出数组的实际长度,这里计算的长度不包含终止符\0。

2025-10-30 20:23:39 1021

原创 菜鸟日记--------数组(1)

数组是一种数据类型,在C语言中定义为一组相同数据类型元素的集合,这些元素在内存中连续存储。数据类型 数组名[数组长度];// 声明一个包含5个整数的数组这里,scores是数组名,int指定元素类型,5是数组长度。数组一旦定义,其大小和类型不可变。以下通过一段代码来说明连续存储。char ch[5];i < 5;以上代码如果正常运行就会发现输出的5个地址是连续的,因为char类型占用1个字节所以5个元素中相邻相差1,同理如果是int类型的数组相邻元素相差4。

2025-10-29 20:25:24 1219

原创 菜鸟日记--------流程控制语句(2)

while循环表达式如下,条件表达式为真时执行循环体,适用于不确定循环次数但需满足条件时执行的情况。goto的使用较为灵活,可以无条件跳转到指定标签位置,也因此在日常开发中应用很少,还是个人认为能读懂代码即可。其特点:先判断后执行,如果不满足条件表达式会出现一次都不执行的情况。用while循环实现打印1~10所有数字如下,while循环在我们MCU阶段经常被用作死循环实现某个功能保持运行状态,后续MCU阶段会详述。break的使用范围不仅在循环结构中使用,之前我们提到的switch语句中也会应用到。

2025-10-28 19:55:14 1107

原创 菜鸟日记--------流程控制语句(1)

default这里用作低于60分输出E,正常使用Switch-case语句的时候它可以用作一种报错提醒,比如输入的成绩大于100通过default提示,并且default的位置不会影响程序的运行,default只要在Switch的大括号里可以放到case的上面,这里我把它认为case的优先级是高于default的~~~~~不过我们正常写代码习惯性的把default放在后面或者省略不写。这两种语局是可以嵌套使用的,但是注意:if可以嵌套if,if也可以嵌套switch,------------因为。

2025-10-27 19:32:28 268

原创 菜鸟日记-----初识C语言

如上A&B和A|B运算例子现将十进制数转换为二进制数,进行按位与运算时:全1则1,遇0则0;这里着重写一下位运算,因为作者准备从事嵌入式开发相关以后会涉及到寄存器,操作寄存器的时候必须用到位运算~~~~(回顾今天所学,想到哪写到哪^~^)其中,int占用4个字节、float占用4字节、char 1个字节、double 8/4字节(32位 4字节、64位 8字节)同样的,对某一位进行置1时与清零操作相似,先对1进行移位运算,然后只需与原数进行按位或运算即可。好在把今天学到的知识输出了~~~~~~~

2025-10-26 20:32:17 314

原创 嵌入式学习路径

摘要:本文系统介绍了嵌入式开发的四个关键学习阶段:1)C语言基础(1-2个月),掌握指针、内存管理等核心概念;2)MCU编程(2-3个月),学习STM32外设控制及RTOS基础;3)Linux编程(1-2个月),掌握系统编程及网络通信;4)Linux驱动开发(2-4个月),深入内核模块开发。建议按顺序学习,每个阶段配合实践项目,总周期6-12个月。重点强调C语言基础和硬件实践的重要性,推荐使用STM32开发板和Linux系统进行实操,并提供了各阶段的代码示例和学习资源。(149字)

2025-10-24 09:57:13 1226

原创 Linux命令学习

cd sample:cd 是 “change directory” 的缩写,用于切换工作目录。该命令将当前目录切换到名为 sample 的文件夹中。gedit 1.c:gedit 是 Linux 系统中的一个图形化文本编辑器,该命令用于打开并编辑名为 1.c 的 C 语言源代码文件。./a.out:./ 表示当前目录,该命令用于运行当前目录下名为 a.out 的可执行文件,执行后输出 “hello world!ls命令 即 显示当前文件夹下的所有内容 可以看到 桌面上已经创建了sample文件夹。

2025-10-23 16:31:28 209

原创 开学季高效学习:技术工具+方法论全攻略

鼓励读者选择 1-2 项工具或方法持续实践,并强调迭代优化的重要性。

2025-10-23 15:50:45 466

空空如也

空空如也

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

TA关注的人

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