自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Embedded IDE下载及调试

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

2025-05-29 16:21:14 172

原创 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 472

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

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

2025-05-15 15:26:53 88

原创 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 281

原创 eclipse安装汉化

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

2025-05-14 09:53:26 108

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

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

2025-04-21 13:27:38 116

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

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

2025-04-01 16:41:19 190

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

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

2025-03-03 19:18:26 289

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

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

2025-02-25 14:10:53 1653

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

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

2025-02-25 08:41:48 128

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

可能是误卸载桌面了。

2025-02-16 12:57:35 478

原创 linux c 读写锁pthread_rwlock

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

2025-02-14 14:15:53 480

原创 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 196

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

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

2025-02-13 10:15:07 425

原创 linux c线程pthread

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

2025-02-09 15:54:57 814

原创 linux消息队列

【代码】linux消息队列。

2024-12-18 20:02:13 135

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

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

2024-12-15 16:23:06 127

原创 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 403

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

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

2024-12-07 16:40:38 238

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

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

2024-12-04 18:53:40 372

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

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

2024-12-01 15:25:07 349

原创 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 431

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

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

2024-11-22 08:59:24 204

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

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

2024-11-20 09:08:58 146

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

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

2024-11-09 15:14:54 215

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

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

2024-11-09 15:10:44 458 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 248

原创 VMware免费下载方法

我下的是for personal use。

2024-11-07 14:24:46 226

原创 VMware桥接网络设置

2024-11-06 21:58:01 154

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

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

2024-11-04 10:08:54 355

原创 最近github经常whoa there的解决办法

登录账号再进去就好了,应该是拦截游客浏览。

2024-10-12 10:18:22 9874 4

原创 主机可以ping通linux虚拟机但linux虚拟机无法ping通主机的解决办法

出现这个问题一般是由于物理主机的防火墙挡住了ping包,可以试试看把主机的防火墙关闭看看。如果可以ping通的话那么试试看添加规则将虚拟机ip添加进去。高级设置,入站规则,新建规则。

2024-10-06 00:36:11 648

原创 visual studio使用ssh连接linux虚拟机运行程序

回到vs 工具->开发->选项->跨平台->添加。打开端口22(取消端口22的注释)可以看到该代码已经在linux下执行。继续连接,成功后关闭,就是这样了。设置网络为桥接网卡后打开虚拟机。使用vs提升的那句话安装工具。项目对应的linux的目录为。1.vs安装linux组件。新建后会有一个使用指南。接着进去打开ssh端口。再下载linux头文件。再restart一次。

2024-10-05 16:49:05 734

原创 qt事件过滤器

2.事件过滤器是在事件响应前面加了一道过滤网,可以在这道过滤网中预处理,处理完后可以继续放过去继续处理,也可以不再处理,与返回值相关。4.事件过滤器的QEvent *event是输入的事件的基类,可以通过dynamic_cast转换以获得更多可执行方法。,因为我们打印按键后返回的是true,代表事件已处理完成,不需要调用组件默认的事件处理。,事件是QObject的枚举,更倾向于组件通用,信号槽则更有针对性,每个组件有不同的信号。识别事件发生是否是输入栏,是否是按键按下,如果是按键按下则打印到调试框。

2024-09-08 20:57:38 668

原创 qt多线程的两种方法run和movetothread

你可以直接调用run方法,仍会执行run函数内容,但是只会在调用run的线程里执行run的内容,不会创建新线程执行run内容,只能通过调用start方法才能真正在新线程里执行run函数的内容。执行,点击两下计算,会发现一开始只打印了一次,因为此时算法线程在执行第一个信号槽函数的QThread::sleep,所以信号在事件里等待,然后过2s后第二个信号执行。在主线程中创建这个类的对象并start,连接算法对象的接收发送信号槽,最后将算法对象移动到创建的线程对象。对象间操作都要通过信号槽或者元对象系统访问。

2024-09-08 01:09:06 544

原创 QT多线程引起的问题QBackingStore::endPaint() called with active painter; did you forget to destroy it or call

不要在主线程以外的任何子线程对GUI界面相关的小组件等进行建立/调用/操作等,通过信号槽在主线程的槽函数进行操作。

2024-09-07 19:42:01 453

原创 C++ explicit

代码1能正常执行的原因是因为c2 c(1)的过程中将1通过调用c1的构造函数隐式转换成了c1对象,加explicit后编译器不再允许隐式转换,需要通过显式转换来通过编译。加explicit前。加explicit后。

2024-09-02 15:04:14 273

原创 关于c++ 右值引用和移动语义的一点浅薄理解

3.引入右值构造函数可能需要对析构进行一定处理(比如代码中,如果右值函数不对源对象的name对象操作,析构不对右值构造的情况做释放,那么析构时仍然会释放掉name对应的内存,导致错误),为了效率应该使用右值复制函数,因为在此函数中我们只是转移了name这个指针的所有权。而左值构造函数是将其name内存中的内容复制过来。右值引用用于解决移动语义,移动语义用于解决不同情况下重载构造函数的问题。时,使用左值构造函数,const&保证了不会改变任何源对象的值。时,使用右值复制构造函数,提高效率。

2024-08-30 15:46:28 237

原创 C++ virtual虚函数 继承链override final关键字

编译器通过,可以执行,但是此时编译器认定为重载,所以调用的结果当然是只调用了基类的show的函数。override关键字用于为派生类覆盖基类虚函数时的检测是否成功添加编辑器检查。当在派生类函数加了override检查以后。在不能覆盖的情况下就会报错提醒。

2024-08-27 15:26:30 408

原创 linux qt编写串口软件

界面的简单设置,用到了1.输入显示栏2.数据发送栏3.选择栏4.16进制显示栏和若干pushbottom label,布局就是横竖横竖这样布局下去。

2024-08-25 21:56:23 1298

空空如也

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

TA关注的人

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