- 博客(24)
- 收藏
- 关注
原创 WIFI模块(ESP8266)中的AT指令
Espressif官方烧录工具地址:f=5&t=433注意:要确保相应的BIN文件烧录到ESP8266模块,否则AT指令无法正常使用AT 提示 ESP8266 station 连接AP的状态如下:WiFi CONNECTED - WiFi 已连接WiFi GOT IP - ESP8266 station 已从AP 获得 IPWiFi DISCONNECT - WiFi连接断开。
2024-09-13 15:22:17 275
原创 关于linux中的socket网络编程并发服务器实现
。tcp通信是一对一进行有连接的方式,而这种服务器具有接收多个客户端连接的能力,并且允许多个客户端同时使用服务器资源。通过实现并发处理,服务器可以有效地利用系统资源,提高系统的性能和吞吐量,为多个用户同时提供服务。
2024-09-11 15:22:56 389
原创 关于环缓冲区的实现
环缓冲区(或环形队列)是一种在内存中创建固定大小缓冲区的数据结构,它允许数据在缓冲区中循环写入和读取。在网上搜集了许多,以下为它的主要用途:循环缓冲区可以作为数据的临时存储区域,用于缓存从数据源接收到的数据,直到这些数据被处理或消费。这在数据流处理、网络通信和文件I/O等场景中非常常见。:对于需要实时处理大量数据的场景,如音频和视频处理,循环缓冲区可以作为一个滑动窗口来存储当前正在处理的数据片段。这有助于避免不必要的数据拷贝,并允许算法以连续的方式处理数据。
2024-06-12 16:47:49 301
原创 关于互斥锁,信号量,条件变量等在使用时多线程休眠状态的理解
这意味着线程中的其他代码也不会继续运行,直到该线程获得了锁并重新被调度执行。此篇仅在记录实验和结论,关于这部分知识其他博文已很详细,这里不做赘述。尝试获取一个互斥锁(mutex)时,如果锁已经被其他线程持有,那么调用。结论1:当调用pthread_mutex_lock()的线程将会被阻塞,直到它获得该锁为止。结论2:sem_wait会阻塞调用线程,会使调用它的线程进入休眠状态。
2024-05-10 17:29:59 215
原创 编程中遇到的关于变量存活周期引发的段错误
上文线程foo中若不加static修饰变量i,则会段错误,局部变量存放在栈区,而static修饰后存放在data段。
2024-05-09 17:04:58 194
原创 关于Linux多线程调度策略及优先级的设置
如下示例(结合注释)足够说明如何在创建线程时设置调度策略及优先级要使用此功能需检查系统的实时调度是否启用。
2024-05-09 12:10:05 595
原创 linux虚拟机中使用gdb调试工程项目
不过多赘述gdb相关概念,如下为实际用法及示例如图进入项目工程键入 gdb cli_main进入调试界面键入start程序开始运行下面列出gdb基础指令说明如下我键入n(next缩写)进行单步运行,并用p打印结构体变量addr的值上述表格还有诸多命令,如遇相关场景使用即可,掌握以上便可初步调试较小功能模块程序。
2024-05-07 11:55:50 461
原创 初次使用Git使用遇到的问题及解决办法
此时会生成远程仓库的文件夹于新建的文件夹中,cd到此文件夹中,然后键入如下。首先,先建一个新的文件夹,在其下git终端键入如下指令。
2024-05-06 19:40:16 207
原创 偶遇缓冲区刷新相关bug
标准I/O库中的函数,如printf和scanf,通常使用缓冲区来减少系统调用的次数。这意味着当你调用printf时,数据首先被写入到一个内部缓冲区,而不是直接发送到标准输(通常是终端或控制台)。当缓冲区满或者在某些特定条件下(如遇到换行符),数据才会从缓冲区刷新(flush)到标准输出。同样,scanf在读取输入时也会使用缓冲区来存储用户输入的数据,直到遇到空格、换行符或者达到指定的读取量。
2024-05-06 10:58:45 262
原创 linux内核链表的使用
我们在使用前需要先定义一个结构体对象实例,再对其下成员list进行初始化。然后我们把结构体指针p指向的list成员添加到头节点的后面。接下来我们试着遍历头节点,并打印存入sno的信息。我们试着把p指向的成员sno的初始化。补充尾插函数,用法与头插一致。
2024-04-29 16:01:16 131
原创 安卓系统移植
1、获取源码方式有两种,官网:source.android.com,开发板厂商提供。安卓源码结构目录解析abi : 应用程序二进制接口bionic : c/c++运行库build : 编译android源码,建立system.img,ramdisk.img等文件的工具device : 设备相关代码frameworks : 框架层代码hardware : 硬件接口和库libcore : java核心库prebuild : android在各平台编译要使用的工具。
2024-04-29 10:17:09 376
原创 linux驱动设备树的使用
2. 编写内核源码同时也会编译设备树(以arm64为例)如下为编译内核源码shell指令,用于编译或构建特定于ARM64架构的NanoPi 4的映像。要验证是否回调probe函数,在probe函数中用以下方式打印调试信息便可验证。其一,设备树以文本形式,可读性很强。其二,对于不同硬件可移植性和兼容性更好。初始化match_table,用来与设备树节点配对。1、修改.dts文件,利用覆盖的方式。若匹配成功,则调用probe函数。设备树在内存中用sys文件系统映射成目录和文件。
2024-04-22 20:39:55 453
原创 2024-03-28-函数使用心得
fgets特点,从fp_r打开的文件中获取一行数据,每次只读一行(以换行符为标记),在插入数据库前通过此结构方便一行一行提取,此结构也可用于例如串口数据转为想要的类型。
2024-03-28 16:12:28 120
原创 近期学习心得
实时操作系统中将单片机轮询的运行方式变更为抢占式任务调度的运行方式,首先对各任务设立不同优先级并不断循环运行,再将所有任务放入就绪队列。对于高优先级的任务,在其中加入vTaskDelay函数(操作系统自带的延时函数),从而让CPU释放出来去运行其他优先级较低的任务,结合相应的任务挂起函数和任务恢复函数,实现对各个任务的调度运行。输出模式是指将输出寄存器的数字信号输出到相应引脚,由此实现CPU对其的电位控制。输入模式是指将GPIO的引脚信息放入输入寄存器,便于CPU提取。
2023-12-20 16:30:29 521
原创 基于MODBUS协议,通过485通信发送指令实现上位机控制继电器(公司项目实践)
endif以上就是今天要讲的内容,本文仅仅介绍了10功能码的程序设计。为保证产品能多次执行相同或不同的上位机指令,主函数中设置了多个闭环,用来保证后来指令不对当前指令造成干扰。
2023-08-25 16:58:40 2440 7
原创 STM32时钟系统
void RCC_HSE_Config(u32 div,u32 pllm) //自定义系统时间(可以修改时钟)RCC_PCLK1Config(RCC_HCLK_Div2);if(RCC_WaitForHSEStartUp()==SUCCESS) //等待HSE起振。
2023-08-03 14:48:24 249
原创 记录在公司嵌入式编程学习--LED的点亮与熄灭
目录1.STM32 GPIO介绍1.1GPIO概念1.2GPIO结构框图1.3GPIO工作模式2.硬件设计3.软件设计3.1.使用寄存器点亮LED3.2.使用库函数点亮LED4.实验现象1.STM32 GPIO介绍1.1 GPIO概念GPIO引脚分类电源引脚晶振引脚复位引脚下载引脚BOOT引脚GPIO引脚1.2GPIO结构框图1.3GPIO工作模式输入模式输入浮空输入上拉输入下拉模拟输入输出模式开漏输出开漏复用功能推挽式输出推挽式复用功能。
2023-08-03 14:27:01 336
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人