- 博客(132)
- 收藏
- 关注

原创 FreeRTOS(速记版)
中断是微控制器一个很常见的特性,中断由硬件产生,当中断产生以后 CPU 就会中断当前的流程转而去处理中断服务,Cortex-M 内核的 MCU 提供了一个用于中断管理的嵌套向量中断控制器(NVIC)。Cotex-M3 的 NVIC 最多支持 240 个 IRQ(中断请求)、1 个不可屏蔽中断(NMI)、1 个Systick(滴答定时器)定时器中断和 11个系统异常。Cortex-M 处理器有多个用于管理中断和异常的可编程寄存器,这些寄存器大多数都在NVIC和系统控制块(SCB)中,
2024-09-11 12:11:33
890

原创 嵌入式Linux C应用编程指南-高级I/O(速记版)
阻塞其实就是进入了休眠状态,交出了 CPU 控制权。比如 wait()、pause()、sleep()等函数都会进入阻塞。阻塞式 I/O 顾名思义就是对文件的 I/O 操作(读写操作)是阻塞式的,非阻塞式 I/O 同理就是对文件的 I/O 操作是非阻塞的。普通文件的读写操作是不会阻塞的,不管读写多少个字节数据,read()或 write()一定会在有限的时间内返回,所以普通文件一定是以非阻塞的方式进行 I/O 操作,这是普通文件本质上决定的。
2024-09-01 23:04:15
1233

原创 嵌入式八股文-网络(速记版)
三次握手可以防止已失效的SYN连接请求报文段被送到服务端导致错误连接。一个例子就是客户端发送了一次连接请求,延迟传送到服务端,期间又发送了一次请求并成功连接,如果只两次握手服务端会认为客户端又传来了一个新的连接请求,并重新连接,导致服务器资源浪费。还有就是客户端发送连接请求后就挂掉了,服务端这时建立连接也会浪费资源TCP协议是全双工通信,这意味着客户端和服务器都可以向彼此发送和接收数据,因此关闭连接是双方都需要确认的行为。
2024-08-13 17:50:38
339
原创 QFuture的使用方式
QFuture是Qt框架中用于处理异步任务和获取异步操作结果的一个类。 它通常与QtConcurrent::run一起使用,可以方便地启动一个异步任务,并在任务完成时获取结果。 QFutureWatcher监控结果是否可以获取,future.result()来获取结果。
2025-06-10 15:28:39
201
原创 Qt事件循环机制
受事件循环机制影响,按钮的样式表改变了可能不会立即刷新。 需要使用 update() 或 repaint() 或者调用 QApplication::processEvents() 强制处理所有待处理的事件,从而确保界面更新。
2025-05-13 19:33:57
847
原创 linux jounery 日志相关问题
var/log 目录是 Linux 系统中存放各种日志文件的标准位置。这些日志文件记录了系统及其服务的运行状态。
2025-04-30 14:35:20
1072
原创 开发板是如何把驱动添加到设备树的(驱动如何与设备树关联)
编写设备树节点 在 .dts 文件中添加设备节点,设置 compatible、reg、interrupts 等属性,并将 status 设置为 "okay"。将驱动模块(.ko 文件)传输到开发板,并通过 insmod 或 modprobe 命令加载。compatible:用于驱动匹配的字符串,驱动程序通过这个属性找到对应的设备。通过 SCP、NFS 等方式将编译好的 .dtb 文件传输到开发板的指定目录。通过 /proc/device-tree/ 检查设备树加载情况,测试驱动功能。
2025-04-06 08:55:17
255
原创 QT自运行程序
Linux Framebuffer 是 Linux 内核提供的一种图形设备接口,它将显示设备抽象为一个帧缓冲区,应用程序可以直接访问这个帧缓冲区来绘制图形,而无需依赖于 X Window System。
2025-03-26 21:21:34
190
原创 QT多线程实战经验
比如有一个blueToothWorker,继承了QThread,实现了run方法。那么该线程变量就是在函数栈上分配,一旦函数结束,线程没执行完,线程变量就被回收了。正确用法是堆上分配。并通过connect函数自动回收。
2025-03-22 17:32:38
205
原创 字符设备文件、普通文件,的偏文件偏移量的区别
(蓝牙设备)的文件偏移量可能始终为 0,因为蓝牙设备是流式设备,没有固定的文件大小。读写后更新,范围从 0 到文件大小。偏移量可能无意义,不支持随机访问。偏移量可能始终为 0,不支持。线性偏移,支持随机访问。
2025-03-22 12:01:56
200
原创 firefly经典蓝牙和QProcess、QFileSystemWatcher记录
FIREFLY-RK3568 和 lubancat4一些测试记录
2025-03-21 10:35:37
336
原创 QT日志级别设置
以下是一个完整的示例,展示如何通过设置日志过滤规则来禁用。开发版本代码包含了大量的qDebug,输出的消息都将被忽略,而不会显示在控制台中。发布版本可能导致未知异常。用于设置日志过滤规则,从而控制日志的输出。设置了日志过滤规则,将所有调试级别的日志(输出一条信息级别的消息,这条信息会显示。输出一条调试信息,这条信息不会显示。
2025-03-19 14:18:36
530
原创 linux+QT结合Git进行代码管理
先在gitee或者github等代码管理平台创建一个仓库。.gitignore文件用于填写需要忽略的文件。开源协议,linux系统用GPL开源协议。
2025-03-17 18:52:27
674
原创 explicit关键字的作用
默认情况下,如果一个类的构造函数只有一个参数,编译器会使用它来进行隐式类型转换。关键字用于修饰构造函数或转换运算符,其主要作用是防止。也可以防止通过拷贝初始化的方式创建对象。禁止了隐式类型转换。将无法通过编译,因为。
2025-03-16 20:11:53
168
原创 Show、Hide和Setvisible的区别
hide方法会将组件移出布局,setvisible不会。垂直布局中有A和B两个按钮,原本A在B上方,隐藏A后再显示A,A到了B下方。用setvisible方法就行。请问如何让A保持在B上方?
2025-03-16 13:09:06
168
原创 Qt运行xxx.so can not open shared object file
找不到 .so文件,确认.pro的 LIB项填写正确后,为环境变量设置 LD_LIBRARY_PATH=xxx。LD_LIBARY_PATH是一个LINUX环境变量,用于程序运行时查找共享库.so文件的路径。
2025-03-15 18:19:00
178
原创 AD学习-最小系统板,双层
速记版.推荐书籍 <Cadence Allegro 500问>.这是双层板。高速4层板参考智能车视频。PCB特训班最高教到10层板。
2025-03-05 21:59:06
992
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人