- 博客(82)
- 收藏
- 关注
原创 Linux小知识点
总的来说,虽然 `sprintf` 使用起来更直接,但由于其潜在的安全风险,推荐在可能的情况下使用 `snprintf` 来替代 `sprintf`,尤其是在处理不受信任的数据时。`sprintf` 和 `snprintf` 是C语言中用于格式化输出的两个函数,它们允许你将数据按照指定的格式写入到一个字符数组(字符串)中。- **功能**: 类似于 `sprintf`,但增加了对目标缓冲区大小的控制,从而避免了缓冲区溢出的风险。- `size`: 目标缓冲区的最大字节数,包括结尾的空字符。
2025-07-20 22:54:44
692
原创 蚂蚁百宝箱
如果你想要制作一个**AI对话型的小狗喂养助手**(即“蚂蚁百宝箱小狗喂养AI对话小助手”),你可以理解为是一个基于人工智能的语音或文字交互系统,能回答用户关于如何照顾、喂养小狗的问题。| AI模型 | 本地部署 LLM(如 Qwen、ChatGLM) 或 使用 API(如阿里云 Qwen API) |<input type="text" id="question" placeholder="输入你的问题">"prompt": f"你是一个小狗喂养助手,请回答以下问题:{question}"
2025-06-19 19:21:09
813
原创 Linux之锁
读写锁是一种特殊的锁,可以提高并发程序中对于共享资源的读操作效率。读写锁分为读锁和写锁两种,读锁可被多个线程同时持有,但是写锁只能被单个线程持有。当某个线程占用写锁时,其他线程无法持有读锁或写锁,这样可以保证数据的一致性。读写锁适用于多读少写的场景,因为它可以允许多个线程同时读取共享资源,而不会因为读操作的阻塞而影响程序性能。
2025-05-30 10:44:34
1048
原创 Linux常用C语言函数
memset 是一个用于内存设置的C库函数,它可以把某一块内存区域的内容全部设置为指定的值。这个函数通常用于初始化数组或结构体,以确保它们在使用前被设置为特定的值(例如0)。str: 这是指向要填充的内存块的指针。c: 这是要设置的值。尽管它的类型是 int,但是它会被转换为 unsigned char 来处理。n: 这是要设置的字节数。返回值该函数返回指向被修改后的内存区域的指针。示例代码。
2025-05-30 08:48:02
280
原创 Socket网络编程
套接字(socket) 是 Linux 下的一种进程间通信机制(socket IPC),在前面的内容中已经给大家提到过,使用 socket IPC 可以使得在不同主机上的应用程序之间进行通信(网络通信),当然也可以是同一台主机上的不同应用程序。socket IPC 通常使用客户端<—>服务器这种模式完成通信,多个客户端可以同时连接到服务器中,与服务器之间完成数据交互。本篇介绍socket 编程中使用到的一些接口函数。
2025-05-29 16:21:11
1532
原创 Linux多线程编程
线程是计算机中实现多任务的基本单位之一,它是进程中的一个执行流程。一个进程可以包含多个线程,。线程的特点是轻量级,创建和销毁的开销比进程小,同时多个线程之间的切换也比进程的切换快速,因此在需要同时执行。线程通常由操作系统调度执行,并可以通过同步机制来控制多个线程之间的协作和互斥访问共享资源。常见的同步机制包括等。线程的实现方式包括用户级线程和内核级线程,其中用户级线程是由应用程序自己实现的,而内核级线程则由操作系统实现。
2025-05-25 22:28:53
364
原创 Linux进程间通信
在计算机科学中,IPC通常指的是“进程间通信”(Inter-Process Communication)。IPC是一种允许不同进程之间进行数据交换和协调工作的机制。由于不同的进程可能运行在不同的地址空间,因此它们之间的通信不像线程间通信那样直接。(Pipes)和,用于控制对共享资源的访问,让多个进程能够访问同一块内存区域,用于进程间发送和接收消息,不仅支持本机进程间通信,还支持通过网络连接的不同机器上的进程间通信每种机制都有其适用场景和优缺点,开发者可以根据具体的应用需求选择合适的IPC方式。
2025-05-25 22:07:58
326
原创 Vscode+git笔记
git checkout就是可以理解为进入的意思。m是modify modified修改了的。3 status changed 暂存区。5.orangion 起源代表远程分支。2.check out 查看观察。4.fetch v 取来拿来。1.U是untracked。
2025-05-03 19:36:29
549
原创 Linux文件编程
1.Linux一切皆文件 文件系统(文件夹 /文件 ), 硬件设备 管道 数据库 Socket等。2.文件操作指令 ls -l(显示当前文件夹的文件,以及其属性。linux终端shell查看当前文件夹下的所有文件清单权限指令 ls -l)malloc(分配的内存大小无类型,所以要给他指定类型)3.文件属性(1)可读 r 4(2) 可写 w 2(3) 可执行 x 10600 6代表可读 可执行6=4+1。
2024-10-25 21:33:06
929
原创 1.Linux常用指令大全
把包括光标所在的这一行下面总共n行全部剪切。在命令模式下跳到开头的位置。如果文件不存在,新建文件。把光标所在的这一行剪切。
2024-09-12 00:01:06
360
原创 2.5多任务示例编程2
使用静态创建函数创建 FreeRTOS 任务时,需要记住一点:必须实现 vApplicationGetIdleTaskMemory 函数来完成空闲任务的内存分配。这是因为在使用静态内存分配时,FreeRTOS 会自动创建一个空闲任务,该任务会在系统空闲时进行调度。在这种情况下,我们需要实现 vApplicationGetIdleTaskMemory 函数,该函数会在空闲任务创建之前被调用。并将该内存池的首地址和大小等信息传递给空闲任务创建函数,以完成空闲任务的内存分配。
2024-09-08 11:21:25
479
原创 1.2CubeMAX创建FREERTOS入门示例
内核参数设置,用户根据自己的实际应用来裁剪定制。: 相关宏的定义,可以自建一些常量在工程中使用。User Constants(用户常量): 定时器和信号量的创建。: 用于查看堆使用情况。: 任务与队列的创建。
2024-09-06 23:09:40
255
原创 蓝桥杯客观题知识点
静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直 到整个程序运行结束。(3)时钟--如果说CPU相当于人类的大脑,RAM就是人目前的记忆,而ROM就是本能的记忆(像人类的动作一样,比如如何吃饭,如何洗澡一样),2.传感器负责感知环境中的各种变化,把数据传到处理系统,也就是我们常说的主控,分析后再发送指令到执行器,输出声音,图像等等。
2024-07-26 18:32:54
502
原创 4.振动传感器
振动传感器在无震动或者震动强度达不到设定阈值时,DO 口输出高电平,当外界震动强度超过设定阈值时,模块 D0 输出低电平。(言外之意就是发生振动时do口输出低电平)。请注意这个模块在感应到小的震动时触发时间会很短,无法驱动继电器,有些的资料显示可以直接和继电器模块相连,但实际运用效果不佳。
2024-06-27 23:40:16
445
原创 4.任务调度
类似暂停,通过调用函数 vTaskSuspend() 对指定任务进行挂起,挂起后这个任务将不被执行,只有调用函数 xTaskResume() 才可以将这个任务从挂起态恢复。处于就绪态的任务是指那些能够运行(没有被阻塞和挂起),但是当前没有运行的任务,因为同优先级或更高优先级的任务正在运行。当任务处于实际运行状态称之为运行态,即CPU的使用权被这个任务占用(同一时间仅一个任务处于运行态)。如果一个任务因延时,或等待信号量、消息队列、事件标志组等而处于的状态被称之为阻塞态。
2024-06-26 22:32:39
546
原创 3.蓝牙模块HC-08
启动时间:上电、重启后,需200ms启动时间;蓝牙协议: V4.0 BLE主从模式:主从一体;可设置主、从;连接成功后不分主从;串口通信:默认9600-None,可设置1200~115200bps;空中速率:1Mbps最远距离:80米(空旷、极限)、室内实测10米左右;工作电流:9mA连接数量:只支持一对一 (两模块通信为一主一从、与手机通信时手机是主机模块是从机)手机通信:支持Android 4.3及以上,支持Iphone 4S及以上。
2024-06-25 10:39:41
3039
原创 1.SG90
舵机(英文叫Servo),是伺服电机的一种,伺服电机就是带有反馈环节的电机,这种电机可以进行精确的位置控制或者输出较高的扭矩。舵机也叫RC伺服器,通常用于机器人、遥控汽车,飞机航模等。类似舵机这样的伺服系统通常由小型电动机,电位计,嵌入式控制系统和变速箱组成。电机输出轴的位置由内部电位计不断采样测量,并与微控制器(例如STM32,Arduino)设置的目标位置进行比较;根据相应的偏差,控制设备会调整电机输出轴的实际位置,使其与目标位置匹配,这样就形成了闭环控制系统。
2024-06-22 11:20:35
462
原创 五大内存分区
在执行一个C/C++语言程序时,此程序将拥有唯一的“内存四区”——。每个程序都有唯一的四个内存区域。1、一个可执行程序在存储(没有调入内存)时分为三部分;。1— 允许程序在运行时动态地申请某个大小的内存空间, 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事。2、— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。3、
2024-05-26 13:21:32
1953
原创 1.存储部分
1.Flash Memory--闪速存储器(注:U盘,SD卡就是闪存)在EEPROM基础上发展而来的,断电后也能保存信息,且可进行多次。注意:由于闪存需要先擦除再写入,因此闪存写的速度要比读的速度更慢。
2024-05-25 21:41:42
311
原创 1.freertos基础知识
freertos可同时存在1.抢占式调度:不同优先级任务之间 2.时间片轮转调度:同等优先级任务之间。2.针对不同的用户场景,freertos提供了4种交互方式:消息队列,任务通知,信号量,互斥锁。6.挂起任务:1.无论这个任务的优先级有多高,被挂起了就不会被执行了,直到任务被恢复。2.任务被挂起之后就相当于暂停,是可以被恢复的。总结:低优先级的任务
2024-05-25 15:49:22
513
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1