- 博客(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
原创 FreeRtos 静态任务
StackType_t * const puxStackBuffer, // 静态分配的栈,就是一个buffer。和动态相比就多了一个buffer。
2024-12-09 19:38:50
245
原创 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标准库文件移植和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 消息队列
需要注意的是,POSIX消息队列的名称在文件系统中是可见的,可以使用路径名来创建和打开消息队列。在Linux中,线程间消息队列可以通过使用System V消息队列或POSIX消息队列来实现。函数来创建一个新的消息队列。函数创建一个新的消息队列。a. 创建消息队列: 可以使用。函数向消息队列发送消息。函数从消息队列接收消息。a. 创建消息队列: 可以使用。函数向消息队列发送消息。函数从消息队列接收消息。b. 发送消息: 使用。c. 接收消息: 使用。b. 发送消息: 使用。c. 接收消息: 使用。
2024-11-10 17:03:31
553
原创 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
原创 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
原创 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
原创 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
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人