自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(120)
  • 问答 (2)
  • 收藏
  • 关注

原创 cmake多个预头文件多个-include被优化成一个导致编译错误的解决方法

用target_precompile_headers就行了,国产ai+cmake真的蠢到家了。

2025-11-11 15:40:14 82

原创 微雪ESP32-S3-Touch-LCD-2.8-Test编译成功方法esp-idf vscode

2.把工程下的.vscode文件夹删除(因为里面的配置是其他人的路径),再在vscode里打开文件夹,安装了cmake会默认打开时运行,会出错,不管他,等cmake加载完后直接删除生成的build文件夹。3.芯片选s3,然后直接构建即可,第一次有点慢是正常的,build成功完后会弹出size。1.首先安装好环境,直到可以编译例程通过可以烧录为止。

2025-11-04 17:38:25 267

原创 esp32在vscode使用jtag下载调试openocd问题解决

错误详情:错误原因解决方法。

2025-10-28 15:35:05 560

原创 cmake使用makefile和ninja的一个区别BYPRODUCTS

如果ninja有一些add_custom_command 文件依赖规则,如果依赖的文件需要其他的target隐式生成(比如command) ,为了保证不会在这些target执行前就判断该文件依赖规则,需要使用BYPRODUCTS对这些target的副产品文件进行显示表示,这样顺序才会正确,makefile不知道可不可以自动判断,但是反正使用ninja时不会自动判断,要手动显示副产品。

2025-09-29 15:37:06 141

原创 vscode cortex-debug 调试boot+app的情况下

同时烧录多个hex文件调试多个elf的方法。使用这两个替代executable项就行了。使用方法参考eide的。

2025-09-19 16:34:54 200

原创 单片机MCU编译时.h文件预编译宏定义无效导致报错

看看是不是.S文件include的,.S文件include的时候不会默认带预编译宏定义的宏定义,可以在汇编选项里重新定义一下。

2025-07-08 17:05:19 180

原创 Embedded IDE导致跳转出问题的情况,跳转定义只能搜索到声明

这个配置表示使用eide插件提供的索引,删掉然后手动配置c_cpp_properties.json就行了,不知道是不是插件更新导致的,原来导入工程没有这个东西,而且现在突然调试的target也要自己设置了。在workspace文件找一下看看有没有这个配置。

2025-07-03 16:04:31 245

原创 蓝牙BLE ATT PDU GATT的简单理解

属性这个词理解起来好像更像电量或者和心率这种有实际意义的值,实际上属性还包含很多抽象的类型(UUID),这些类型用来组成服务和特征这两个概念,服务和特征是属于GATT的,而ATT只是定义了属性格式内容和客户端/服务器的交互方式(属性协议)很遗憾我找了很久都没找到服务属性的描述,可能是网站改了到别处了。2.类型(2或16字节,怎么区分不用管后面会说):属性类型就是UUID,UUID有些特殊的值在协议里定义了用来识别属性,可以自定义。GATT是在ATT上加了服务框架的上层,定义了服务,特征,描述符的概念。

2025-07-02 11:11:04 454

原创 IIC的SDA一直是低电平或者没有数据波形

可能是因为主机意外错误导致SDA线被从机控住了,可以SCL发几个时钟过去让从机把剩下的数据发完就从机会释放SDA了,如果是单主机的强烈建议用软件去做,因为没有碰撞仲裁的没必要用硬件,硬件有很多坑。

2025-06-20 13:46:11 258

原创 cortex-debug 无法实时监视

可能是因为使用的jlink。

2025-06-04 11:37:53 132

原创 Embedded IDE下载及调试

芯片名称配置的都是自动生成的,在eide.json的这里改为你jflash芯片包的设置。点旁边的小齿轮可以进去修改对应调试选项的各种设置路径,注意这几项就好。调试里也会自动生成一个cortex_debug的调试选项。我这边用jlink烧录,其他的根据你自己的来。安装cortex_debug插件。jlink路径在左下角齿轮设置里。

2025-05-29 16:21:14 308

原创 vscode的Embedded IDE创建keil项目找不到源函数或者无法跳转

里面的name是keil里工程的虚拟文件夹(只用于展现在左栏,实际文件夹不存在) 而"file":"path"是该文件真正的路径,将所有的"file":"path"添加到c_cpp_properties.json里的”configuration“:"browse":"path"数组里,没有"browse":"path"就自己建。然后再在eide.json中找到inclist,注意targets下面的那一层目录,对应着keil里面的target。打开eide.json ,找到folders,

2025-05-27 15:21:11 852

原创 cortex-debug怎么提取添加.svd文件进行外设查看

找到厂家提供的keil的pack包,改后缀成zip以压缩文件打开,把svd文件移出来,添加"svdFile"项。

2025-05-15 15:26:53 314

原创 cortex-debug无法断点,无法调试,暂停时无法定位代码段,定位代码段错误等问题可能的解决办法

arm-none-eabi-objdump -S your_firmware.elf # 检查反汇编结果是否包含源码行号。launch为下载程序后启动调试,attach为直接调试,直接调试就可能出现代码段的问题。我用的6.70c的jlink版本和1.12.1版本的cortex-debug。使用 nm -l test.elf 查看是否有符号与源码行号的关联。launch.json中cortex-debug的配置。

2025-05-15 15:14:39 527

原创 eclipse安装汉化

这个网址复制粘贴到 eclipse的help -> install new software-> add 的网址栏。

2025-05-14 09:53:26 173

原创 单片机代码打断点显示ffffffff dcd 0xffffffff

可能是前面的某些代码擦除了单片机这片区域的片flash导致的,擦除完就全是FF了。

2025-04-21 13:27:38 195

原创 KEIL error: #18: expected a “)“

有可能是你这行的函数/变量定义和原本就有的宏定义冲突了,搜索一下。

2025-04-01 16:41:19 370

原创 安装完芯片包.fml后jflash能识别下载但是keil找不到相关芯片

keil的jflash和你自己装的jflash是两个独立的,参考上面连接。不过可以不用直接安装,只把jflash里的JLinkDevices.xml(选项列表文件)和你需要的驱动芯片文件夹(里面是.flm文件)复制粘贴到keil的jlink对应文件夹去。比如直接把fmsh文件夹移过keil的jflash/Devices去。

2025-03-03 19:18:26 483

原创 VSCODE添加c/c++头文件路径

这会打开一个图形化界面,并自动生成或修改。,输入头文件所在的目录路径(支持通配符。(Windows/Linux)或。(macOS),打开命令面板。(Linux/macOS)或。(例如 OpenSSL 库)

2025-02-25 14:10:53 3611

原创 vscode远程连接ssh添加头文件地址

打开远程机c_cpp_properties.json文件在"includePath"这一项加就行了。

2025-02-25 08:41:48 212

原创 ubuntu桌面东西没了,右键只有更换壁纸,显示设置和设置

可能是误卸载桌面了。

2025-02-16 12:57:35 614

原创 linux c 读写锁pthread_rwlock

当持续不断的有新的线程获取读锁又释放,就可能会出现一个现象,因为读读允许,所有可能会很长时间一直有不同的线程正在读,这样写入线程一直无法获取到写锁,这就是写饥饿,可以通过初始化设置将该读写锁设置为:有线程在写阻塞时新的读锁获取也阻塞。这样就不会有新的线程获取读锁,等当前存在的读锁都释放后写线程就得以运行。一个线程获取了读锁,另一个线程再获取写锁时将阻塞,反之亦然。在其他线程没获取写锁时,任意数量的线程都可以获取读锁。写写互斥,读写互斥,读读允许,同线程读写死锁。//定义且初始化互斥量。

2025-02-14 14:15:53 536

原创 Linux c pthread互斥量

pthread_mutex_timedlock(&mutex) //扩展:阻塞一段时间无法获取则不再阻塞,返回超时。mutex做全局变量,不需要函数初始化,初始化等于PTHREAD_MUTEX_INITIALIZER即可。pthread_mutex_trylock() 尝试获取互斥量,无法获取不阻塞立刻返回。pthread_mutex_lock(&mutex) 获取互斥量,未获得则一直阻塞。thread_mutex_unlock(&mutex) 释放互斥量。

2025-02-13 19:59:17 230

原创 通过内网穿透ssh实现远程对家里的linux进行终端操作和编程

/.ssh 目录为ssh服务的秘钥目录,里面的authorized_keys文件即是允许登录的ssh公钥,通过cat 公钥 >> authorized_keys在当前秘钥文件authorized_keys后添加新的公钥。官网登录后在左侧"状态"栏可以看到我们的已经连接上隧道(127...是本机地址,如果是本机的windows安装我估计是本机地址处填写虚拟机的网络地址和ssh端口22,可能虚拟网卡会要修改成桥接模式)ssh连接就输入公网地址端口,虚拟机登录时的用户名和密码即可。我是ubuntu虚拟机,在。

2025-02-13 10:15:07 487

原创 linux c线程pthread

linux线程与进程的区别进程间资源相互独立,只能通过线程间通讯接口交换资源和数据。而线程内存共享(变量)

2025-02-09 15:54:57 832

原创 linux消息队列

【代码】linux消息队列。

2024-12-18 20:02:13 162

原创 linux线程间通信:共享内存

【代码】linux线程间通信:共享内存。

2024-12-15 16:23:06 153

原创 linux使用有名管道mkfifo

include "sys/stat.h"//文件属性和mkfifo管道相关。mode:权限,同open O_CREAT时的第三个参数。根据代码,发送端发送end,回车后结束。建立一个可以以文件接口访问的有名管道。path:管道路径,可当一个文件看待。可以看到该管道文件已创建,类型为p。编译后打开两个终端运行这两个程序。return: -1为失败。接收的代码fifo_r.c。管道已经被unlink。发:fifo_w.c。

2024-12-08 16:02:08 489

原创 linux 进程间通信:匿名管道pipe()

输入一个2个元素的int数组地址,生成单向匿名管道,调用后该数组[0]为读取描述符,[1]为写入描述符,默认打开,使用前需要关闭另一通道,然后直接调用系统调用函数write open来进行读写。运行,分别输入10字节以上和10字节以下的数据看看。进程间内存独立且相互不可见,进程间通信需要特殊方法。匿名管道pipe()

2024-12-07 16:40:38 259

原创 linux通过fork()和execve()调用其他程序在子线程中运行

可以通过echo $PATH获取当前终端的环境,字符串格式为格式为"name=value" 和__argv类似,数组结尾必须是NULL。可以看到环境和参数都被输入到子程序中,由父程序调用,且父程序也执行了自己的程序。__path :待执行文件路径,可以通过pwd查询当前路径,再加上文件名。execve的作用为:让当前进程内容销毁大部分,重新执行一个程序。(猜想用于结束,类似于 while(argv!*__argv[] :一个由字符串指针组成的数组,编译子程序,再编译父程序,并且运行父程序。

2024-12-04 18:53:40 403

原创 linux C fork()和系统调用文件

fork()的意义是在当前进程中创建一个子进程,之后的代码在当前进程和子进程中都执行,也就是相当于执行两次,两个代码的资源相同,唯一不同的是在fork后返回的子进程号pid,看执行结果可以发现这个pid变量在子进程中为0,而在父进程中为真实的子进程号。注意到这里一个打开的文件执行了两次关闭,父进程关闭后子进程仍然能写,事实上是fd对应的结构体中有一个调用位,表明此文件有几个地方打开,父子进程都打开了,这个值为2,等父子进程都关闭该文件,该值会为0,此时才真正关闭该文件。

2024-12-01 15:25:07 383

原创 linux 文件权限,修改权限,系统调用

每一类用户的权限有3个,用二进制的每一个位表示,3位2进制也就是8进制的每一位代表一个权限。后面3*3位分别表示所有者用户,同组用户,其他用户的读(r),写(w),执行(x)权限。100 r-- 对应二进制为4。110 rw- 对应二进制为6。111 rwx 对应二进制为7。ls -l 查看当前目录文件的权限。一共有三个权限类型所以三个数字。比如777就是权限全开的意思。

2024-11-29 20:06:29 470

原创 vs编译编辑参数修改无效,按回车只会输入lf,无法更改,每次改成crlf回车就变成混合

其实是你github clone下来的的代码以前可能已经有.editorconfig强制定义过编码了,修改/删除该文件即可。

2024-11-22 08:59:24 246

原创 vs出现一堆无法编译的语法问题的解决办法

应该是中文注释的编码问题,调整为UTF-8 CRLF就行了。

2024-11-20 09:08:58 186

原创 VMware调整窗口为可以缩小但不改变显示内容的大小

也就是缩小窗口不会影响内容的大小。

2024-11-09 15:14:54 297

原创 重新安装VMware tools为灰色,linux无法安装VMware tools

udo apt-get install open-vm-tools-desktop 即可。其实是新版vm不再自带vm tools了,自行安装即可。

2024-11-09 15:10:44 634 1

原创 VS ssh连接linux无法运行的问题 GDB 的解决方法

Unable to start debugging. Program path ... is missing or invalid. GDB failed with message:/home/zsy/projects/是一个目录。把这个将解决方案和项目放在同一目录中勾选。

2024-11-09 14:33:04 354

原创 VMware免费下载方法

我下的是for personal use。

2024-11-07 14:24:46 286

原创 VMware桥接网络设置

2024-11-06 21:58:01 185

原创 vscode跳转出错,无法跳转,跳转错乱,只能跳转到声明,c语言

插件的问题C换以前的版本。

2024-11-04 10:08:54 442

SCons-4.8.1-py3-none-any.whl安装包

scons 安装报错writing UNKNOWN.egg-info\PKG-INFO的可以用这个装

2025-07-15

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

TA关注的人

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