- 博客(47)
- 收藏
- 关注
原创 FreeRtos教程
FreeRTOS 是一个轻量级的实时操作系统内核,适用于微控制器和嵌入式系统。它具有以下特点:开源免费:遵循 MIT 许可证。可移植性强:支持多种处理器架构。功能丰富:提供任务管理、信号量、队列、定时器等功能。任务是 RTOS 的基本组成单位,是一个逻辑概念,用于实现特定功能。FreeRTOS 是一个功能强大且灵活的实时操作系统,适用于各种嵌入式应用场景。通过学习任务管理、信号量、事件标志组、队列和定时器等核心功能,开发者可以高效地构建复杂的嵌入式系统。
2025-02-04 18:32:51
1090
原创 ADC和DMA的使用原理和过程
通过结合ADC和DMA的使用,可以高效地实现模拟信号的采集和传输,减少CPU的负担,提高系统的实时性和效率。在实际应用中,需要根据具体的硬件平台和应用需求进行配置和优化。
2025-02-04 18:15:46
563
原创 对比UART、IIC、SPI 三种总线的使用
UART:适用于简单的点对点通信场景,如串口调试和低速模块间数据传输。其低成本、易于实现的特点,使其在嵌入式开发中广泛使用。IIC:适用于需要挂载多个从设备且通信速率要求不高的场景,如传感器网络和小型显示设备。其双线设计和多设备支持优势,使其在物联网设备中备受青睐。SPI:适用于对速度和实时性要求较高的场合,如高速存储器和显示屏控制。其高性能的特点,使其在工业自动化和高端嵌入式系统中占有重要地位。实际应用中,应根据项目需求选择合适的通信总线。例如,在需要多设备通信的环境中,优先考虑 IIC;
2025-01-24 12:20:11
931
原创 汇编知识点整理
汇编指令伪操作伪指令注释加法(ADD)减法(SUB)乘法(MUL)比较指令比较指令就是用来进行两个数值的比较,根据比较的结果产生不同的条件,在后面的指令如果添加了条件码后缀,则根据条件执行指令 比较指令通过会和条件码一起使用:1.先进行比较2.比较后的指令后面加条件码,条件码对应的条件满足后指令才会指令 能够经过编码后保存到指令空间中直接当作指令一部分去执行的数据叫做立即数判断方式 一个32位指令空间中预留了12位空间保存当前操作数,可以通过某一个规则对操作数进行处理,将处理后的数
2025-01-23 16:19:45
1810
原创 STM32U575按键转换及设备驱动
1.单片机有三种工作模式(定义全局变量MM表示模式,MM=1,2,3表示三种不同的模式)按键按下一次,设备打开,按键再按下一次,设备关闭(设备管脚输出反向电平)2.可以在某一个模式下通过拓展板KEY1按键控制设备。
2025-01-07 18:46:18
965
原创 C++(Day35)
、“如何通过多态实现运行时的行为改变?封装:学习如何定义类和对象,理解访问权限(`private`, `protected`, `public`)。学习标准模板库(STL),包括容器(如 `vector`)、算法(如 `sort`)和迭代器的基本用法。掌握字符串的初始化、赋值、比较和常用函数(如 `empty()`, `size()` 等)。多态:理解虚函数(`virtual`)、纯虚函数和接口的用法,学习如何实现运行时多态。学习 C++ 的异常处理(`try`, `catch`, `throw`)。
2024-11-15 18:54:23
1029
原创 网络编程(Day35)
今天的学习内容主要涉及网络编程的基础知识,包括 IP 地址的网络字节序转换、套接字(socket)的概念、套接字的创建与绑定、服务器和客户端的通信流程、数据的发送与接收等。重点掌握了套接字的使用流程,学习了各类 socket 相关函数(如 `socket`、`bind`、`listen`、`accept`、`connect`、`send`、`recv` 等)及其作用。
2024-11-02 09:43:09
1114
原创 网络编程(Day34)
子网网段的个数 = 2^(子网掩码中1的个数)子网网段下的主机个数 = 2^(子网掩码中0的个数)今天的学习内容主要涉及计算机网络的基础知识和发展历程,包含网络发展阶段、TCP/IP协议的概念和分层模型、字节序的转换及相关函数、IP地址的分类与转换方法,以及端口号的概念和使用方法。通过这些内容,能够全面了解计算机网络的基本架构、数据传输的原理,以及网络通信中的关键技术。
2024-10-24 19:50:15
1096
原创 I\O进程线程(Day33)
今天的学习内容围绕进程间通信(IPC)及其在系统V中的实现展开,具体涵盖了信号通信、消息队列、共享内存、以及信号量集的基本概念和API使用。主要目标是了解多进程通信的不同方式,以及如何在进程间实现数据传递和同步。通过这些机制,可以让进程在更复杂的系统中实现并发操作与协同工作。
2024-10-22 16:29:33
652
原创 I\O进程线程(Day32)
信号处理的三种方式(默认处理、捕获、忽略)、常见信号类型及其处理、如何使用 `signal` 函数绑定信号处理方式、通过 `alarm` 启动定时器,以及使用 `kill` 和 `raise` 发送信号给进程。
2024-10-21 21:14:33
1110
原创 I\O进程线程(Day30)
使用 `pthread_create` 创建线程,`pthread_self` 获取线程号,`pthread_exit` 退出线程,`pthread_join` 回收线程资源,`pthread_detach` 实现非阻塞线程分离。
2024-10-18 21:05:18
1323
原创 I\O进程线程(Day29)
文件描述符和文件指针的区别,文件描述符的复制(`dup` 和 `dup2` 函数),文件光标的移动(`lseek` 函数),文件的打开、读取、写入、关闭操作。
2024-10-17 22:54:32
1028
原创 I\O进程线程(Day27)
今天的学习重点是IO基础,主要包括标准IO和文件IO的操作流程及其使用方法。你学习了标准IO如何通过封装好的库函数与文件进行交互,以及文件IO如何通过系统提供的函数来进行无缓冲区的文件操作。此外,还涉及缓冲区的类型、文件指针的操作、字符与字符串的输入输出操作、错误码处理机制、系统时间函数、格式化读写函数、模块化读写等内容。
2024-10-15 20:38:36
1036
原创 I/O进程(Day26)
int _flags;当前读光标的位置文件结束符的位置写光标的位置文件结束符为止最核心的,最终通过该数据定位文件的fprintf/sprintf 整体上来说用法一模一样,只不过不同的printf将数据写入的地方是不一样的printf:默认将数据写入终端fprintf:将数据写入第一个参数stream指向的文件中去sprintf:将数据写入第一个参数str指向的字符数组中去I/O进程是操作系统中的一个重要部分,负责管理输入输出操作。涉及标准输入、标准输出、文件描述符等概念。
2024-10-11 18:01:55
1207
原创 C高级(Day25)
变量名=初始值变量名='初始值'变量名="初始值"初始化的值不能有空格var = hello 错误初始化的值有空格var=hello world 错误 var='hello world' 正确使用变量进行初始化a=hellob=worldvar=a ---->var的值是a 而不是hellovar=$a --->var的值是hellovar=${a}var=$a $b 错误var='$a $b' 等价于 var的值是$a $b 不可以展开变量的值。
2024-10-08 19:55:57
1173
原创 国庆练习(Day24)
/ 存储学生成绩// 存储每个学生的平均成绩// 存储每门课程的平均成绩// 输入学生的成绩i++) {printf("输入第 %d 个学生的4门课程成绩:\n", i + 1);j++) {printf("课程 %d: ", j + 1);// 计算每个学生的平均成绩i++) {j++) {// 计算每门课程的平均成绩j++) {i++) {// 按照学生的平均成绩排序(简单选择排序)i++) {j++) {// 交换平均成绩。
2024-10-07 11:36:19
3710
1
原创 国庆练习(Day23)
B DCDACD10 30 0 first: 14,4,12second: 26,4,12third: 26,3,6问题解惑: 4、分析题4.1、使列举static关键字的几个作用 解答:练习二运算符 选择题 1.1、若有以下程序解析:解答: CBACDC CBD0 02.753.510 20 01 B 0 100((2 < x) && (x < 3)) || (x < -10) 4、分析题4.1、 思
2024-10-06 12:40:12
1297
原创 C高级(Day21)
通过 `ping` 命令测试虚拟机与外部网络的连通性。学习如何使用 NAT 网络模式,并配置虚拟机的网络适配器以实现网络通信。
2024-09-27 17:56:17
1453
原创 数据结构(Day20)
A.9个B.1个C.5个D.10个学习树的定义及其常见类型,如二叉树、满二叉树、完全二叉树、平衡二叉树等。树是一种层次型数据结构,其中节点通过边进行连接。
2024-09-25 19:59:04
1533
原创 数据结构(Day16)
编写了一个基于顺序表管理学生信息的项目。项目包括以下功能:创建顺序表、检查顺序表是否满或空、增加学生信息、遍历顺序表、在任意位置插入或删除学生、按位置或按值修改学生信息、按值查找学生、删除重复学生信息。代码实现了顺序表的基础操作,采用数组存储学生数据。
2024-09-19 19:11:35
1357
原创 数据结构(Day15)
union EUM { 类型1 成员1;类型2 成员2;类型3 成员3;枚举常量: 定义格式: enum 枚举名 { 成员1,成员2,成员3,成员4 };枚举成员直接使用,不需要结构体或者联合体那样引用。默认第一个成员是0,如果给第一个成员赋值,后面成员依次累加1定义函数实现输入,要求形参使用结构体指针接收函数实现5个学生年龄排序(注意对年龄排序时,交换的是所有信息)定义函数实现输出,要求形参使用结构体指针接收// 定义小车结构体,包含名称、价钱和颜色// 小车的名称// 小车的价格。
2024-09-18 19:20:20
2491
原创 数据结构(Day14)
struct 结构体名{ 成员变量1;成员变量2;成员变量3;…… };}a;//学生变量a分别是a[0] a[1] a[2] struct student a[3] = {{1001,"HQYJ",90.5},{1001,"HQYJ",90.5},{1001,"HQYJ",90.5}}①输入学生信息②输出学生信息③计算学生的成绩总分、平均分④按照学生的分数进行排序⑤输出排序后的数组了解了如何定义结构体,并通过实际例子学习了如何在结构体中使用各种数据类型。
2024-09-16 14:07:44
1212
原创 数据结构(Day13)
1、如果没有适时释放被动态分配的内存,会导致内存泄露问题。未释放的内存一直占用系统资源,使得系统变慢并最终导致崩溃。2、及时使用free()释放不再使用的内存合理设计数据结构和算法,避免内存无线增长设置合理的变量【作用域】,减少内存占用通过对堆和栈的详细讨论,讲解了内存分配的过程。栈用于自动变量分配,堆用于动态内存分配.
2024-09-15 14:58:35
1297
原创 Linux和C语言(Day 12)
数据类型 函数名(参数){} 存储类型 数据类型 函数名(参数){} 【定义函数可以省略存储类型,默认是extern】使用({})使用({})定义宏函数,如函数只有一条语句,可以省略({})如有多条语句,返回最后一条语句的结果语法格式#define 宏名(参数) ({语句1;语句2;语句3;})注意:宏函数的参数不带数据类型,只写参数名占位即可使用do...while(0)语法格式#define 宏名(参数) do{语句1;语句2;语句3;等价于 int a;
2024-09-12 19:13:30
1260
原创 Linux和C语言(Day11)
函数数据类型 函数名(参数){ return 返回值;//返回【一个】确定值 }若返回值数据类型与函数数据类型不一致,以【函数数据类型】为准。return有结束函数的作用,若有多个return,遇见第一个return就结束函数。若省略函数数据类型不写,默认是【int】类型。数组能存储指针函数能返回指针指针能指向数组、指向函数int *p;【指向一个int变量/一维数组】int *p[3];【指针数组,存储int指针】【数组指针,指向二维数组,也就是行指针】int *p();
2024-09-11 22:05:56
1655
原创 算法编程(Day02)
小美在美团外卖工作,负责处理包裹的分类。每个包裹都有一个唯一的标识符(ID),ID由一串字母和数字组成。你需要根据包裹的ID来判断它属于哪一类。
2024-09-11 10:29:33
970
原创 Linux和C语言(Day09)
语法:存储类型 数据类型 *指针名分析:数据类型:基本 构造 指针 空 eg: int *p float *p char *p double *p int(*p)[3] strcut *p int **p void *Pa) 一个整型数:b) 一个指向整型数的指针:c) 一个指向指针的的指针,它指向的指针是指向一个整型数:d) 一个有10个整型数的数组:下列哪个表达式的值为3:( )A. *p=&x;B. p=&x;C. *p=x;D. p=*&x;
2024-09-09 19:51:20
1104
原创 Linux和C语言(Day08)
单字符输入输出`putchar()` 和 `getchar()` 用于处理单个字符的输入输出。字符串输入输出`puts()` 输出字符串并自动换行;`gets()` 用于读取字符串,但因其安全隐患已不推荐使用,推荐使用 `fgets()`。格式化输入输出`printf()` 和 `scanf()` 进行格式化的输入输出操作,支持多种格式控制符(如 `%d`、`%f`)。
2024-09-07 13:48:38
1740
原创 Linux和C语言(Day06)
数据类型——int float double char 结构体 共用体 指针 空void……数组名——符合命名规范[]——数组的标志常量表达式——数组的长度方式1方式2使用循环for(i=0;i<5;i++){} //循环中 i 表示下标 arr[i]表示元素注意定义时在C99标准之前[]不为变量引用数组元素是[]可以为常量、变量、表达式 arr[i] arr[1] arr[i+1]通过学习,掌握了数组的声明、初始化、内存分配及基本的遍历操作方法。
2024-09-05 22:47:10
1459
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人