- 博客(94)
- 资源 (4)
- 收藏
- 关注
原创 rt_enter_critical() / rt_exit_critical()和rt_interrupt_enter() / rt_interrupt_leave()区别
通过对比它们的函数原型、内部实现、影响范围及典型示例,帮助你在不同场景下正确选用并避免误用。禁止中断,保证在任务上下文中对共享资源的安全访问;以屏蔽或恢复全局中断,但其设计意图是“锁住调度器”而非长期屏蔽中断。的入口和出口处,通知内核进入/退出中断上下文,管理中断嵌套深度。前者“上锁”调度器,后者“解锁”调度器,用于保护临界区。调用后,调度器才真正解锁并可能触发线程切换。的管理,不直接影响 ISR 外的中断响应。在进入临界区后禁止线程切换,但。并在归零时检查并触发调度。,但与调度器锁分离,专注于。
2025-04-18 10:03:25
746
原创 STM32 串口中断接收方式笔记:HAL_UART_Receive_IT vs __HAL_UART_ENABLE_IT
/ 手动使能接收中断// 自定义缓冲区存储、协议解析等项目+ 手动处理接收管理HAL帮你管理接收缓冲你自己处理接收长度固定长度可灵活按字节回调机制自动调用你自己写中断函数中断使能内部自动配置你自己配置出错风险小大(忘记清标志位或缓冲区会卡死)场景推荐简单数据帧、串口透传协议解析、环形缓冲、实时性要求高。
2025-04-17 20:14:56
511
原创 YAML 语法教程
YAML(YAML Ain’t Markup Language)是一种简洁、直观的数据序列化格式,广泛用于配置文件、数据交换等场景。它设计的目标是易于人阅读和编写,同时也便于程序解析。下面我们从基础开始,详细介绍 YAML 的语法和常用特性。
2025-03-04 10:43:57
438
原创 HAL_UART_Receive_IT和__HAL_UART_ENABLE_IT区别
的功能和用法有显著区别,尤其是在中断触发和数据读取逻辑上。,因其更简洁且与HAL库的重新初始化流程兼容。在STM32的HAL库中,
2025-02-28 11:29:47
1233
原创 关于python中的类属性和实例属性
要实现类属性和实例属性的共享,需要确保在实例方法中修改的是类属性,而不是创建一个新的实例属性。,这实际上创建了一个实例属性,覆盖了类属性。应该为的值 是我开始我的理解,实际上不是这样。时,你访问的是实例属性,而不是类属性。方法中,你尝试将其赋值给。被定义为类属性,但在。
2024-12-23 15:25:33
259
原创 Buildroot Overlay
overlay 是一种文件夹结构,用于定义需要添加到根文件系统的内容。通过 overlay,可以将自定义文件夹的内容直接复制到最终的根文件系统中。这样,你可以在不修改 Buildroot 源代码的情况下,实现文件系统的定制。
2024-11-14 09:15:14
1047
原创 瑞芯微Buildroot编译
在开发过程中,Buildroot 自带的软件包有时可能无法满足我们的需求,所以有时候需要添 加自定义的软件包。Buildroot 支持多种格式的软件包,包括 generic-package、cmake-package、 autotools-package 等,我们以 generic-package 举例说明。
2024-11-13 16:52:37
1231
原创 PyQt6应用程序中,如何实现多种语言支持
用于加载翻译文件。使用tr()方法包装所有要翻译的文本。通过lupdate和lrelease工具生成.ts和.qm文件,并在运行时加载它们。可以动态切换语言,并刷新界面文本。除了使用 Qt 提供的和.ts文件来进行国际化,完全可以通过手动管理一个字典来实现多语言支持。这种方法适合简单的应用,尤其是在没有大量文本内容需要翻译的情况下。通过字典匹配不同的语言,你可以实现对 UI 元素的文本翻译。
2024-11-07 15:36:06
931
原创 常用PID控制策略
低延迟高精度:前馈PID、积分分离PID。复杂动态环境:模糊PID、自适应PID。数字系统:数字PID、增量式PID。代码:https://download.youkuaiyun.com/download/jxwzh/89962598。
2024-11-06 16:27:09
850
原创 【无标题】
鸿蒙生态的崛起为开发者带来了新的机遇,同时也带来了挑战。通过不断学习和实践,开发者可以抓住这一机遇,创造出更好的应用体验。让我们携手在鸿蒙生态中探索、创新,共同迎接智能时代的新篇章。
2024-11-01 13:18:31
255
原创 rt-thread中的stack监测方法有哪些?
RT-Thread 提供了堆栈监测功能,可以帮助你检测线程的堆栈使用情况,从而发现是否存在堆栈不足的情况。
2024-10-25 13:13:13
1025
原创 QTableWidget如何在header中添加一个复选框(含源码)
方法允许你为表格设置一个自定义的表头。通过的子类(如),可以轻松添加自定义控件(如复选框)到表头。通过事件,可以确保自定义控件(如复选框)在表头中始终处于正确的位置,避免随窗体拖动而错位。整个思路是利用替换默认表头,结合QCheckBox实现特殊功能,如全选的复选框,并通过几何调整确保控件始终在表头的正确位置。
2024-10-22 15:30:02
914
原创 如何在浏览器中使用JavaScript进行屏幕截图
无论你是将屏幕截图集成到获取反馈中,还是作为应用程序的关键功能,你都需要权衡每种解决方案的利弊。使用客户端解决方案,如html2canvas或getDisplayMedia API,意味着你不需要管理任何服务器基础设施,通常图像生成得相当快。如果你需要一个像素完美的表示你的用户正在看什么,并且不介意有时晦涩难懂的权限弹出窗口,那么是一个很好的起点。如果你想快速拍摄半准确的屏幕截图,并且没有外部服务依赖,可能是正确的选择。最后,如果你愿意外包技术实现和与之相关的成本,那么屏幕截图服务可能是最佳选择。
2024-10-22 13:46:05
1567
原创 解决 Python 中的常见错误错误:TypeError: A Bytes-like Object is Required, Not ‘str‘
在本教程中,我们将深入探讨如何解决 Python 中的错误。此错误通常发生在你尝试在需要bytes对象的地方使用了str(字符串)对象时。我们将通过各种示例和解释,帮助你理解并解决该错误。
2024-10-22 13:36:20
1061
原创 QStyledItemDelegate用法(PyQt)
我们用为不同的列设置了不同的输入验证器。的核心作用是为视图中的单元格自定义编辑行为和显示样式。通过重写等方法,可以实现灵活的编辑器配置,控制用户输入的格式和范围。这种方式比直接操作提供了更强的灵活性。
2024-10-21 16:03:50
644
原创 debugSTM32代码 报错:Break at address “0x0“ with no debug information available, or outside of program co
这个问题搞了一上午,程序vscode编译,debug进去就退出了,也看不出问题,使用STM32CubeIDE 进行debug,进入while循环就报这个错误,并且只要配置了PLL,程序就不能运行。我一直以为是程序得问题。搞了半天实在找不到问题,发现硬件把boot引脚配置错了,程序是从SRAM启动。debugSTM32代码 报错:Break at address "0x0" with no debug information available, or outside of program code.
2024-08-07 14:07:23
976
原创 使用STM32 VS Code Extension编译代码printf无法输出浮点型数据
删除编译链接文件:cmake\gcc-arm-none-eabi.cmake中得。
2024-05-22 15:26:57
483
原创 STM32之串口中断接收丢失数据
又参考了正点原子和野火的代码,这两家的代码可以说没有最烂,只有更烂,完全坑害初学者。比如正点原子的,竟然在中断服务中整个while循环判断状态。当LCD_UART_LEN为其它值时,打印的看不出规律,有点乱,只有当LCD_UART_LEN=为数据包的大小时,打印出来没问题。这个代码中 LCD_UART_LEN=1的时候,接收过来的数据,数据包的第一个字节总是会跑到rx_buffer的末尾,如下。或许这是HAL库的bug吧,我用的是STM32G0B0CET6,其它芯片的HAL库不清楚有没有这个问题。
2024-04-19 16:14:21
2760
11
原创 STM32CubeMX生成MDK代码提示项目有问题(...have a problem)
最终通过或和可以正常生成得*.ioc文件对比差异,发现是固件包得路径问题,虽然软件中勾选得没问题,但是工程文件中却不对,这应该是MX得bug,进行下面得修改就可以正常生成了。
2024-04-09 11:25:57
3166
原创 C语言中不常用到的一些函数
函数将字符串表示的数字转换为无符号长整型数。它可以指定转换的基数(如十进制、十六进制等),并且可以检测并返回转换结束的位置。函数用于扫描指定目录中的文件,并将结果存储在提供的指针数组中。函数用于根据格式化字符串创建动态分配的字符串,并将结果存储在提供的指针中。函数在给定字符串中从后向前查找指定字符,并返回最后一个匹配的字符的指针。函数用于根据提供的匹配模式搜索文件系统中的文件。函数用于复制给定的字符串,并返回一个新的动态分配的字符串副本。函数用于获取路径中的文件名部分,即去除路径中的目录部分。
2024-04-02 09:05:15
529
原创 电子显微镜——相机
Camera Link 是一种串行通信协议标准,由美国自动化工业协会 (AIA) 制定和维护。专为工业成像应用中的高速图像传输而设计。它旨在标准化包括相机、电缆和采集卡在内的科学和工业视频产品。Camera Link接口还有“大口”(MDR)和“小口”(SDR,或叫HDR-mini)之分,二者的引脚定义完全相同,只是在体积上不一样,如上图所示。为什么要做“小口”呢,因为常规的Camera Link接口确实是有点太大了。尤其是对于某些高速相机来说,它可能需要用四个接口才能够满足带宽要求。
2024-03-26 10:15:07
2814
原创 电子显微镜之光源和照明
荧光(fluorescence)是光致冷发光现象,是生物和分析显微镜中最常用的物理现象之一,由George Gabriel Stokes于1852年首次报道的一种现象。他观察到萤石在紫外线照射后开始发光。荧光是光致发光的一种形式,是指一种材料被光照射后会发射出光子。发射光的波长比激发光更长。这种效应又称为斯托克斯位移。荧光具有灵敏度高、特异性强的特点,是冷发光的一种形式。用户可以通过显微镜来捕捉单个荧光分子的种类、分布、数量及其在细胞内的定位。
2024-03-26 10:10:14
1596
原创 一台电脑配置两个git账号(自己的gitee,公司的gitlab)
第一步:清除已有的全局配置git config --global --unset user.namegit config --global --unset user.email第二部:生成两个秘钥ssh-keygen -t rsa -C "你的邮箱1@xxx.com"ssh-keygen -t rsa -C "你的邮箱2@xxx.com"上面命令分别单独执行,然后不要一路回车,要分别给秘钥重命名生成如下:第三步:把生成的秘钥分别添加到各自的ssh公钥(SSH Key.
2021-07-19 16:29:07
2066
原创 deepin系统更改默认启动内核
网上试了很多乱七八糟的都不管用,最后摸索的方法如下:以管理员权限打开/boot/grub/grub.cfg找到### BEGIN /etc/grub.d/10_linux ###位置### BEGIN /etc/grub.d/10_linux ###function gfxmode { set gfxpayload="${1}"}set linux_gfx_mode=export linux_gfx_modemenuentry 'Deepin 20.2 GNU/Linux' --c
2021-04-23 09:11:57
1793
原创 matplotlib线条属性设置(1)
import randomimport matplotlib as mplimport matplotlib.pyplot as pltx_data = range(0, 100)values1 = []values2 = []for i in range(0, 100): values1.append(random.randint(0, 100))for i in range(0, 100): values2.append(random.randint(10, 15.
2021-02-25 15:43:21
747
原创 logging简单配置
import loggingformat_str = '%(filename)s(line %(lineno)s)\t%(levelname)s -- %(message)s'logging.basicConfig(level=logging.ERROR, format=format_str)logger = logging.getLogger(__name__)logger.setLevel(logging.INFO) #logs info and higher
2021-02-24 14:41:32
367
原创 PyQt5设置主窗口为圆角
class TestWidget(QWidget): def __init__(self): super(TestWidget, self).__init__() self.resize(200, 200) self.frame = QFrame() self.setWindowFlags(Qt.FramelessWindowHint) self.setAttribute(Qt.WA_TranslucentBackgr.
2021-02-22 16:29:02
3087
原创 Could not find QtWebEngineProcess
在linux系统(Deepin)下遇到的错误;使用root用户会报zygote_host_impl_linux.cc(89)] Running as root without --no-sandbox is not supported. See https://crbug.com/638180.使用root用户报错 Could not find QtWebEngineProcess详细的报错还有一个relocation error,然后指向的位置是用户目录下的/home/用户
2020-12-22 15:39:18
3422
1
原创 开发中常用命令
1. 读取连接在Linux系统上的USB枚举出的版本号(使用root权限)# cat /sys/kernel/debug/usb/devices 2.gerrit push需要code reviewgit push origin HEAD:refs/for/master不需要code review,直接mergegit push origin HEAD:refs/heads/master3.设置linux printk的打印等级echo 3 > /proc/s
2020-12-22 10:05:18
179
原创 PyQt5运行插件报错
错误:This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, wayland-egl, wayland, wayland-
2020-12-19 15:40:19
715
1
原创 django程序放在云服务器无法使用公网访问
本地运行可以使用localhost访问,但是放在服务器运行就不可以了解决办法:python manage.py runserver 0.0.0.0:8000 # 监听所有IP(我的理解就是允许所有IP访问)
2020-07-04 15:45:12
716
原创 django ValueError: attempted relative import beyond top-level package
创建的django项目刚运行就报错,网上看的很多办法试的都没用,最后这个帖子帮助了我https://www.cnblogs.com/linkenpark/p/10909523.html,我在manage.py中加入import blog # blog是我的应用名,或者说你出问题的包名,找不到这个包,你就在上一级中导入这个包...
2020-07-03 11:29:13
1914
原创 linux系统从源代码安装python
sudo ./configure --prefix=/usr/local/python<版本号>--enable-shared CFLAGS=-fPIC --enable-optimizationsmake && make install
2020-07-01 17:44:06
288
翻译 QIODevice
欢迎加入QQ群:853840665,一块学习分享资料PyQt5类翻译、示例学习 class-learning描述QIODevice类是Qt中所有I/O设备的基本接口类。QIODevice为支持数据块(如QFile、QBuffer和QTcpSocket)读写的设备提供了通用实现和抽象接口。QIODevice是抽象的,不能实例化,但是通常使用它定义的接口来提供与设备无关的I/O特性。例如,Q...
2020-01-30 15:53:42
5332
2
翻译 QSerialPort
欢迎加入QQ群:853840665,一块学习分享资料PyQt5类翻译、示例学习 class-learning描述提供访问串行端口的功能。您可以使用QSerialPortInfo帮助类获得关于可用串行端口的信息,该类允许枚举系统中的所有串行端口。这对于获得要使用的串行端口的正确名称非常有用。可以将helper类的对象作为参数传递给setPort() 或setPortName() 方法,以分...
2020-01-29 22:47:16
4106
2
翻译 QSerialPortInfo
欢迎加入QQ群:853840665,一块学习分享资料PyQt5类翻译、示例学习 class-learning描述提供有关现有串行端口的信息。使用静态函数生成QSerialPortInfo对象的列表。列表中的每个QSerialPortInfo对象表示单个串行端口,可以查询端口名称、系统位置、描述和制造商。QSerialPortInfo类还可以用作QSerialPort类的setP...
2020-01-29 19:59:06
1876
常见PID控制策略C代码,实际项目使用代码
2024-11-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人