- 博客(61)
- 收藏
- 关注
原创 Linux学习七——进程回收
wait 阻塞函数函数作用:1.阻塞并等待子进程退出2.回收子进程残留资源3.获取子进程结束状态(退出原因)wait(&status)判断子进程怎么退出的(正常退出用WIFEXITED)为什么exit value is 0?因为main函数return 的是0,改成return 9,就会是exit value is 9非正常结束,也就是用信号结束的。
2025-04-02 15:03:30
175
原创 Linux学习六——进程(exec函数族、孤儿进程、僵尸进程)
先回顾一下父子进程间数据共享fork之后两个地址空间区数据完全相同,后续各自进行了不同的操作父进程:num‐‐子进程:num++物理地址:i, f_num,z_num各个进程的的对于同一个变量,写的时候分别在物理地址上拷贝一份变量进行单独读写父子进程之间可不可以通过全局变量通信?不能,两个进程内存不能共享。
2025-04-01 14:40:52
934
原创 Linux学习五——fork、vfork、进程退出、ps、kill
一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与也就是两个进程可以但如果初始参数或者传入的变量不同,两个进程一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同。相当于克隆了一个自己。:(man 2 fork查看)两个返回值:=0:当前进程为子进程>0:当前进程为父进程‐1,出错用户数据一样,进程ID不一致。
2025-04-01 14:40:28
712
原创 Linux学习四——进程(父子进程间数据共享)
程序:二进制文件,占用的磁盘空间进程: 启动的程序所有的数据都在内存中需要占用更多的系统资源cpu,物理内存。
2025-03-31 15:06:15
453
原创 linux课程学习三——静态/动态库的创建
libxxx.a,就将库编译进可执行程序中。优点:程序的运行环境中不需要外部的函数库。缺点:可执行程序大,又称共享库,libxxx.so,在将库加载到可执行程序中。优点:可执行程序小。缺点:程序的运行环境中必须提供相应的库。函数库目录:/lib /usr/lib写man.c与sub.c文件内容如下,写好后去执行man.c,会显示sub函数没有定义,所以不能生成a.out,这就要根据上面的步骤去写。
2025-03-31 14:38:09
253
原创 蓝桥杯嵌入式客观题一
int(*a)(int)(*a):指向函数的指针(*a)(int)该函数有一个整形参数int(*a)(int)并返回一个整形数int(*a)(*int) a指向函数的指针,该函数有一个指向整型的指针参数,并返回一个整形数。
2025-03-30 20:03:42
876
原创 linux课程学习二——缓存
把printf换成fputs(“hello world”,stdout)函数,我们不使用fflush也是无法输出的,但是把标准输出atdout改成staerr不使用fflush也可以输出。的缓冲区在fclose之前写一个死循环,这样子才可以看出效果,因为 使用fclose就可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区,这回导致缓存没有满就把内容存进去了。将gets换成fgets,可以看到我们输入了六个,但是len是7,这是因为fgets将新的换行符存入缓存中。
2025-03-29 20:55:50
1232
原创 Linux课程学习一
linux中fopen函数直接用man fopen 去查看mode有以下值:r:只读方式打开,文件必须存在r+:可读写,文件必须存在rb+:打开二进制文件,可以读写rt+:打开文本文件,可读写w:只写,文件存在则文件长度清0,文件不存在则建立该文件w+:可读写,文件存在则文件长度清0,文件不存在则建立该文件a:附加方式打开只写,不存在建立该文件,存在写入的数据加到文件尾,EOF符保留a+:附加方式打开可读写,不存在建立该文件,存在写入的数据加到文件尾,EOF符不保留。
2025-03-29 10:53:35
636
原创 CP指令的实现
我们把hello.c复制到hello2.c中,是否复制成功可以用cat分别查看两个文件的内容,也可以用diff hello.c hello2.c确认,如果没有反应说明两者内容一致。
2025-03-27 17:08:23
229
原创 Linux操作小结
记住这些常用的指令,很实用在Linux系统中我们会自己创建很多文件,有时候我们关闭系统之后重新打开会找不到文件。文件时存放在目录中的,我们就可以去查看每个目录下的文件。最大的目录时根目录 ,我们可以先去根目录下查看有哪些目录。
2025-03-27 13:07:38
413
原创 蓝桥杯嵌入式十六届模拟三
由硬件框图可以知道我们要配置LED 和按键先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题按键配置,由原理图按键所对引脚要GPIO_Input生成代码,在文件夹中添加code文件夹,code中添加fun.c、fun.h、headfile.h文件,去资源包中把lcd.c、lcd.h、fonts.h添加到code中,然后去写按键控制灯亮灭的程序,看是否有问题。
2025-03-26 18:42:41
1602
原创 第十四届蓝桥杯真题(PWM输出)
先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题按键配置,由原理图按键所对引脚要GPIO_Input生成代码,在文件夹中添加code文件夹,code中添加fun.c、fun.h、headfile.h文件,去资源包中把lcd.c、lcd.h、fonts.h添加到code中,然后去写按键控制灯亮灭的程序,看是否有问题按键控制led没有问题后写lcd显示代码,显示没问题后,解决lcd与led引脚冲突问题,方法在我的文章中。
2025-03-26 18:41:57
1031
原创 FreeRTOS列表和列表项
FreeRTOS列表和列表项是FreeRTOS的一个数据结构,类似于链表。FreeRTOS大量使用了列表和列表项,它是FreeRTOS中的基石,方便我们学习FreeRTOS的源码和原理。列表被用于跟踪FreeRTOS的任务,列表结构为List,再文件list.h中定义。
2025-03-21 22:23:09
778
原创 第十六届蓝桥杯模拟二(串口通信)
由硬件框图可以知道我们要配置LED 和按键先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题按键配置,由原理图按键所对引脚要GPIO_Input生成代码,在文件夹中添加code文件夹,code中添加fun.c、fun.h、headfile.h文件,去资源包中把lcd.c、lcd.h、fonts.h添加到code中,然后去写按键控制灯亮灭的程序,看是否有问题。
2025-03-21 22:20:09
2199
原创 蓝桥杯第13届真题2
找到串口接收函数HAL_UART_Receive_IT();第一个参数为串口句柄第二个参数为接收的数据第三个参数接收数据的字节数。
2025-03-18 13:08:05
2454
1
原创 Linux目录结构以及文件操作
ubuntu属于Linux的发行版,带图形界面。但是跑在嵌入式设备中的Linux操作系统往往不带图形界面,直接使用命令来操作。Linux区分大小写。在Linux系统上,文件被看作字节序列。普通文件(—)录目(D)符号链接(l):讲两个文件名指向硬盘上一个存储空间,对于两个文件中的任何一个内容进行修改都会影响另一个文件。又称符号连接,是指将一个文件指向另一个文件的文件名,由ln-s命令建立Linux命令操作目的Linux采用的命令是shell命令。
2025-03-17 20:43:08
329
原创 蓝牙模块HC-05
AT+ROLE设置主从模式:AT+ROLE?AT+ROLE=1是设成主,AT+ROLE=0是设成从,AT+ROLE=2设成回环角色(Slave-Loop(回环角色)—一被动连接,接收远程蓝牙主设备数据并将数据原样返回给远程蓝牙)。AT+INQM:设置查询模块模式,AT+INQM=11,9,48(1-带RSSI信号强度指示,9-超过9个蓝牙色设备响应则终止查询,48-设定超时为48*1.28=61.44秒):获取HC-05的名字,AT+NAME=BSP-06,修改模块的名字为BSP-06,具体名字自行修改。
2025-03-17 08:25:25
753
原创 Typedef 与enum的使用
typedef是C语言中的一个关键字,用于为已有的数据类型定义新的名称(别名),主要目的是增强代码的可读性和可维护性。使用typedef可以简化复杂数据类型的声明,提高代码的清晰度和一致性。例如:这样,Integer、IntPtr和Line就可以分别作为int、指向int的指针和具有81个字符的字符数组的别名使用。例如:int i;int j;} A;A a;// 直接使用别名声明变量a这样,结构体A的实例可以直接使用别名A进行声明。
2025-03-16 21:48:47
904
原创 陶晶驰屏幕使用
在下载好的SUART HMI软件中新建一个工程,taojingchi。我这使用的型号的是TJC3224T124型号的,选好型号去配置显示,我这使用180度竖屏我后边使用的是32单片机,字符编码这里我选择使用GB2312,点击ok就创建seh生成之后的.s文件时初始化的变量的定义,把波特率改成115200,单片机用的就是115200页面可以设置多个页面,但是需要一些指令,然后左边工具箱哪里有许多功能,自己所买的型号不支持的功能他就是会有文字说明不支持。
2025-03-13 09:11:03
506
原创 ESP8266多连接TCP服务器
ESP8266多连接TCP服务器,就是相当于把8266当作服务器来开发。ESP8266 AT 仅⽀支持建⽴立⼀一个 TCP 服务器器,且必须使能多连接,即允许连接多个 TCPclient。以下为 ESP8266 作为 softAP ,建⽴立 TCP 服务器器的举例例;如果是 ESP8266 作为 station,可在连接路路由后,同理理建⽴立服务器器。
2025-03-10 09:12:32
499
原创 ESP8266TCP单连接透传
透传,即透明传输,指的是在通讯或数据传输过程中,不对传输的内容进行修改、处理或解释,而是将数据或信号原样传递,转发或传输到目的地址或设备。这种传输方式确保了数据的准确性和完整性,特别是在需要直接将数据传递给下游设备或系统时。ESP8266 AT默认仅在TCP client 单连接或UDP传输模式时,支持透传。
2025-03-09 14:46:07
780
原创 ESP8266远端可变的UDP传输
AT+CWMODE=3响应:okAT+CWJAP=“SSID”,“password”响应:okAT+CIFSR响应:+CIFSR: APIP, "192.168.4.1"+CIFSR: APMAC, "1a: fe: 34: a5:8d: c6"+CIFSR: STAIP, "192.168.3.133"+CIFSR: STAMAC, "18: fe: 34: a5: 8d: c6"OKSSCOM软件上的端口号选择UDP,远程哪里填写我们8266设备的地址电脑和8266要连接同一个wifi才可以使用
2025-03-09 13:43:49
688
原创 EPS8266远端固定UDP传输
UDP通信的远端固定,由AT+CIPSTART指令的最后一个参数设置为0决定。系统将分配一个连接号给这个固定连接,UDP通信双方不会被其他设备替代。
2025-03-09 11:14:00
893
原创 WIFI ESP8266以及基础功能介绍
芯片一旦烧写了程序就不可以使用AT指令集,需要重新刷回AT指令库才可以使用wifi的通信频段是2.4G免费频段。
2025-03-08 22:45:33
959
原创 FreeRTOS任务挂起和恢复
vTaskSuspend():挂起一个任务,进入挂起状态的任务永远不会进入运行态,推出挂起态的唯一方法就是调用任务恢复函数vTaskResume()或vTaskResumeFromISR(),这个函数是从中断中恢复任务vTaskResume():恢复一个任务的运行vTaskResumeFromISR():中断服务函数中恢复一个任务的运行中断配置时的中断优先级不可以低于5,因为5以下的的中断不可以调用RTOS的API在中断中解挂任务要注意,解挂的任务A和正在执行的任务B的优先级。
2025-03-06 17:07:49
326
原创 FreeRTOS定时器中断
1.开中断函数 portENABLE_INTRRUPOTS()2.关中断服务函数 portDISABLE_INTRRUPOTS()这两个函数在list.c的portmacro.h中中断配置宏,在FreeRTOSconfig.h里有中断相关的配置在RTOS中要使用中断也是要去配置中断函数的,先建立tim文件夹,添加tim.cyu.h。记得添加路径,main中也要添加头文件定时器的配置请看文章32定时器。
2025-03-05 19:19:52
1117
原创 蓝桥杯第15届真题解析(频率、PWM捕获)
由硬件框图可以知道我们要配置LED 和按键、lcd,解决lcd引脚冲突先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题按键配置,由原理图按键所对引脚要GPIO_Input生成代码,在文件夹中添加code文件夹,code中添加fun.c、fun.h、headfile.h文件,去资源包中把lcd.c、lcd.h、fonts.h添加到code中,然后去写按键控制灯亮灭的程序,看是否有问题。
2025-03-03 16:32:22
1438
原创 FreeRTOS动态任务和静态任务创建
去task.c中将任务参数复制到main中然后将const去掉,它会限制参数类型,任务大小、任务优先级、任务句柄需要去宏定义,任务句柄是指针类型要取地址//开启任务调度,.c中1900多行创建了任务函数就要去定义,在task.h定义,在.c中通过动态任务函数跳转到.h中,将vTaskCode复制过去for(;;然后把vTaskCode改成任务名,之后去声明,之后我在函数中写两个任务,这两个任务和之前任务的创建过程一样,这个任务需要删除任务。
2025-02-26 22:40:53
597
原创 蓝桥杯第十六届嵌入式模拟编程题解析(eeprom、ADC、)
由硬件框图可以知道我们要配置LED 和按键先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题按键配置,由原理图按键所对引脚要GPIO_Input生成代码,在文件夹中添加code文件夹,code中添加fun.c、fun.h、headfile.h文件,去资源包中把lcd.c、lcd.h、fonts.h添加到code中,然后去写按键控制灯亮灭的程序,看是否有问题。
2025-02-24 22:47:48
2034
5
USB与电池供电切换 、烧录、5v转3.3v、电池充电电路 (含有原理图、嘉立创工程文件)
2024-11-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人