自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 I2C 读写 AT24C02

再发送字地址(指定存储位置),再次等待应答;• 机制:每传输完一个字节(设备地址、字地址、数据),接收方(AT24C02)需在第 9 个时钟周期拉低 SDA 线,返回 ACK 信号,表示成功接收。• 内容:8 位地址(MSB 到 LSB 依次传输),用于指定 AT24C02 中要写入数据的存储单元位置。• 内容:主设备发送的 8 位数据(MSB 先,LSB 后),即实际写入 AT24C02 的数据内容。• 意义:主设备通过发送设备地址,选中总线上的 AT24C02 从设备,告知其即将进行写操作。

2025-04-03 23:24:56 587

原创 uart 重定向printf

在大多数 USART 外设里,第 6 位通常代表发送缓冲区为空(TXE,Transmit buffer empty)标志。当该位为 1 时,意味着发送缓冲区为空,能够发送新的数据;当该位为 0 时,表明发送缓冲区还有数据未发送完。重新实现fputc函数,编写代码将这个字符通过串口发送,因为发送每个字符时都会调用该函数,所以。如果想要提高发送效率,就需要使用寄存器来操作:ch为发送字符。发送,而是直接操作寄存器发送。在uart文件末尾添加即可。当该位等于1时即传输完成。使用MicroLib库。

2025-03-31 16:07:49 183

原创 STM32 使用SYN6288语音模块 移植代码英文数字可以正常播报中文不行的问题

网上找了很多解决方法 总结一下 参考了。最主要的还是main文件的编码问题。选择完格式重新保存即可。

2025-03-16 17:17:54 181

原创 STM32F407ZGT6移植freeRTOS

还有一个文件在 freertos-code-r2837-tags-V10.4.1\freertos-code-r2837-tags-V10.4.1\FreeRTOS\Source\portable目录下的MemMang里面 看个人需求 我这里用。进入portable文件 这里我只保留了这两个因为是在vscode 上移植所以不需要keil那个文件 保留以下即可 看个人需求 和环境。这个文件最主要的是这个FreeRTOSConfig.h main文件可以完全用自己的。相关的根据自己的文件自己测试能不能就行。

2025-02-26 21:04:25 956

原创 Memory Programming ...Error: File does not exist: Max.hex

原因删了确定就可以了。

2025-02-26 20:22:20 174

原创 Linux 添加磁盘

1、编辑虚拟机添加磁盘。

2024-12-24 19:40:38 240

原创 FreeRtos 静态任务

StackType_t * const puxStackBuffer, // 静态分配的栈,就是一个buffer。和动态相比就多了一个buffer。

2024-12-09 19:38:50 245

原创 FreeRtos 创建任务 动态创建

FreeRtos

2024-12-09 19:18:18 274

原创 STM32 USART通信

通过过采样技术来区别数据和噪音,从而恢复数据。然后继续使用标准库的函数继续串口是数据收发就可以实现通信了。当发送器被禁止时,输出引脚恢复到它的。关于以上寄存器中每个位的具体定义,请参考寄存器描述。在单线和智能卡模式里,此。● 总线在发送或接收前应处于空闲状态。接口通过三个引脚与其他设备连接在一起。● 一个智能卡模式下的保护时间寄存器。个的停止位,由此表明数据帧的结束。● 使用分数波特率发生器 ——双向通信至少需要两个脚:接。口被同时用于数据的发。位),最低有效位在前。● 一个波特率寄存器。

2024-12-07 15:30:53 582

原创 Keill 软件逻辑分析仪

4. 设置逻辑分析仪:• 在逻辑分析仪窗口中,点击“Setup”按钮。• 在“Parameter”中输入你的芯片型号,格式为 -p芯片型号 ,例如 -pSTM32F103C。3. 打开逻辑分析仪:• 在调试界面,点击“View”菜单,选择“Analysis Windows”,然后选择“Logic Analyzer”打开逻辑分析仪窗口。7. 实时更新:• 如果需要实时观察波形变化,可以在“View”菜单下选择“Periodic Window Update”以实时更新逻辑分析仪窗口。

2024-11-30 15:56:59 1048

原创 Keil Debug 添加变量监视

如果值是16进制可以关闭16进制显示 Hexadecimal Display 就行。即可在1运行时监控和调试值。

2024-11-30 15:26:59 480

原创 STM32单片机中断

最重要的是第二步和第三步。

2024-11-27 20:57:55 135

原创 STM32标准库文件移植和keil工程创建

3、打开Keil 创建文件夹 Project -> new uVision Project 创建工程。USER 也是 CORE SYSTEM HAFDWARE 也是这个地方是用来添加.c文件的地方。4、移植文件 这里以 STM32F10x_StdPeriph_Lib_V3.5.0 为目标移植。移植核心驱动文件core_cm3.c core_cm3.h 到->CORE。core_cm3.c core_cm3.h 文件路径。

2024-11-23 17:53:44 427

原创 Linux 域通信

【代码】Linux 域通信。

2024-11-17 16:19:19 305

原创 Linux UDP广播服务器

【代码】Linux UDP广播服务器。

2024-11-17 15:36:01 102

原创 Linux 实现TCP并发服务器

并发服务器 实现多个进程能同时访问服务器。

2024-11-17 14:02:27 543 1

原创 Linux UDP服务器通信

【代码】Linux UDP服务器通信。

2024-11-17 13:19:27 125

原创 Linux TCP 服务器实现双向通信1v1

【代码】Linux TCP 服务器实现双向通信1v1。

2024-11-16 17:29:42 669

原创 Linux TCP服务器客户端

【代码】Linux TCP服务器客户端。

2024-11-16 16:27:32 477

原创 Linux 消息队列

需要注意的是,POSIX消息队列的名称在文件系统中是可见的,可以使用路径名来创建和打开消息队列。在Linux中,线程间消息队列可以通过使用System V消息队列或POSIX消息队列来实现。函数来创建一个新的消息队列。函数创建一个新的消息队列。a. 创建消息队列: 可以使用。函数向消息队列发送消息。函数从消息队列接收消息。a. 创建消息队列: 可以使用。函数向消息队列发送消息。函数从消息队列接收消息。b. 发送消息: 使用。c. 接收消息: 使用。b. 发送消息: 使用。c. 接收消息: 使用。

2024-11-10 17:03:31 553

原创 Linux 共享内存

在Linux中,共享内存是一种进程间通信的机制,可以使不同进程之间共享同一块物理内存区域。

2024-11-10 14:29:49 379

原创 Linux 有名管道

有名管道(Named Pipe),也称为FIFO(First In, First Out),是一种特殊的文件系统对象,它允许不相关的进程之间的通信。与无名管道不同,有名管道在文件系统中有一个路径名,因此不相关的进程可以通过这个路径名来访问同一个有名管道。

2024-11-06 20:28:37 898

原创 Linux 无名管道

无名管道(unnamed pipe)是一种进程间通信的方式,通常用于父子进程之间的通信。这是一个简单的示例,请根据实际情况进行相应的修改和扩展。

2024-11-06 19:38:12 329

原创 C语言静态库

3、将mylib.o制作成静态库 //-->静态库的命名:必须是:lib库名.a。-lmylib 指定链接器链接到 libmylib.a 库。1、创建库源文件:类似函数定义的文件。-o myprogram 指定输出的可执行文件名。2、将库源文件制作成 汇编文件 c->o。4、编译test.c的同时让其链接静态库。-L. 指定链接器在当前目录查找库文件。

2024-11-02 14:36:00 193

原创 C语言插入排序

【代码】C语言插入排序。

2024-10-27 15:42:37 119

原创 C语言冒泡排序

【代码】C语言冒泡排序。

2024-10-27 14:44:24 91

原创 C语言链式栈

【代码】C语言链式栈。

2024-10-24 19:26:07 127

原创 C语言单链表

【代码】C语言单链表。

2024-10-21 13:32:06 369

原创 VScode 终端执行程序出现乱码

使用命令chcp查看当前的编码格式 936 好像是gb20几的编码方式 和utf-8不同。是因为代码和终端的编码不一样才会导致出现乱码。所以更改一下 utf-8 是 65001。

2024-10-20 12:01:07 342

原创 Makefile的简单使用

`$(CC) -c $< -o $@ $(CFLAGS)` 命令编译 `.c` 文件生成 `.o` 文件。- `%.o: %.c` 是一个模式规则,用于从任何 `.c` 文件生成相应的 `.o` 文件。- `clean` 目标用于删除所有编译生成的 `.o` 文件和可执行文件 `app`。- `x.o: x.c` 是一个显式规则,用于从 `x.c` 编译生成 `x.o`。- `app` 目标依赖于 `x.o` 和 `y.o`。- `all` 目标简单地打印出 `CC` 变量的值。

2024-10-15 20:44:36 182

原创 C语言 指针函数

函数传出地址 main函数调用 打印。

2024-10-12 10:10:13 103

原创 Linux Samba配置

在windows中访问目录 先win+r 然后输入\\你虚拟机的ip。这样,您已经成功在Ubuntu上配置了Samba服务。现在,您可以通过其他设备或计算机访问您的Samba共享文件夹。下载 安装samba :注确保虚拟机联网。记住路径地址等会要用。

2024-10-10 19:08:56 471

原创 Linux SSH服务

192.168.90.71`是分配给接口的IP地址,`/24`表示子网掩码是255.255.255.0,这意味着网络地址是`192.168.90.0`,并且这个子网可以有256个IP地址(从`192.168.90.1`到`192.168.90.255`)。总结来说,这段配置确保了`ens33`网络接口使用静态IP地址`192.168.90.71`,子网掩码`255.255.255.0`,并且指定了默认网关和两个DNS服务器的地址。- `nameservers:`:这是DNS服务器的配置部分。

2024-10-09 13:08:48 1169

原创 Linux NFS 服务器 搭建

及以后版本需要增加以下配置,因为新版本Ubuntu只支持nfs 3和nfs 4,而uboot默 认使用nfs 2 linux@ubuntu:~ $星号在这里可能是用来占位,实际的服务器地址需要被替换为具体的值。:这是挂载点的路径,即 NFS 文件系统在本地系统上被挂载的位置。在这个例子中,NFS 文件系统将被挂载到本地的。也就是说,当数据被写入时,它会立即被写入磁盘,而不是被缓存。6. 使用下面的命令,将共享目录挂在到/mnt目录下,并修文件。2、创建一个目录,并在该文件下创建一个文件,用于测试nfs。

2024-10-07 17:28:30 680

原创 Linux TFTP服务器搭建

它用于在计算机网络中传输文件,特别适用于在网络设备(如开发板和Linux系统下)代码调试等操作。TFTP只支持文件的读取和写入操作,并没有提供用户认证和目录浏览等功能。:这个选项后面通常跟一个目录路径,用于指定 TFTP 服务器的根目录。在这个目录下,TFTP 服务器将提供文件服务。:这个选项允许客户端向服务器上传文件。如果不设置这个选项,服务器将只允许文件下载,不允许上传。>put + 文件 上传的是当前目录下的文件上传到。根据上面文件配置的路径 在该路径创建文件夹。下的文件是下载该文件到当前的目录下。

2024-10-07 15:55:04 671 2

原创 预处理命令总结

说明:如果前面的#if给定条件不为真,当前条件为真,则编译下面代码。用于多个条件的判断。这些指令在软件开发中非常有用,尤其是在需要根据不同的平台或配置编译不同代码的情况下。- 说明:包含一个源代码文件。预处理器会将指定的文件内容替换到当前位置。- 说明:如果给定条件为真,则编译下面代码。条件通常是宏的定义检查。创建一个宏,可以在代码中用宏名代替一个字符串。- 说明:结束一个#if……- 说明:取消已定义的宏。- 说明:如果宏已经定义,则编译下面代码。- 说明:如果宏没有定义,则编译下面代码。

2024-10-04 10:56:57 404

原创 函数指针来实现返回两个整数中最大值

【代码】函数指针来实现返回两个整数中最大值。

2024-10-02 21:00:06 191

原创 编写一个函数,它会生成5个随机数,并使用数组名作为返回值。

随机值只有效一次 运行的时候 可以加入获取当前时间产生随机值 改进一下。

2024-10-02 20:44:25 122

原创 C语言 指针数组 和 数组指针

(2)类型不同:上面案例中,zzsz 的类型是 int[5],;szzz的类型是 int(*)[5]。不需要显式初始化,它会自动指向数组的首元素;数组指针需要显式初始化,指定它将指向的数组。指针数组(Pointer Array)是一个数组,其中的每个元素都是。数组指针(Array Pointer)是一个指针,它指向一个数组的。访问数组元素不需要解引用;数组指针通常需要解引用才能访问数组元素。数组指针是可变的,你可以将它指向不同的数组。1、指针数组(Pointer Array)(5)访问元素:数组。

2024-10-02 19:06:31 257

原创 C语言结构体位域和联合体的奇妙组合

根据不同的数据类型,可能有不同的对齐方式。联合体(Union)是一种特殊的数据类型,它允许在相同的内存空间中存储不同的数据类型。如果联合体中的成员变量有不同的数据类型,那么总字节大小应该是最大的成员变量的字节大小。在计算总字节时,需要根据数据的对齐和内存对齐的规则来确定每个成员变量在内存中的存储位置。需要注意的是,由于联合体中的成员变量共享同一块内存空间,所以对一个成员变量的操作可能会影响到其他成员变量的值。在上面的例子中,联合体unionName中最大的成员变量是double类型的d,占据8个字节。

2024-10-01 19:13:29 782

C语言思维导图 半成品 啵啵啵

C语言思维导图 半成品 啵啵啵

2024-09-30

C语言知识结构 不是很全

C语言知识结构 不是很全

2024-09-30

空空如也

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

TA关注的人

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