- 博客(73)
- 收藏
- 关注
原创 嵌入式八股文(四)FreeRTOS篇
嵌入式八股文(一)C语言篇嵌入式八股文(二)Linux应用篇嵌入式八股文(三)Linux驱动篇嵌入式八股文(四)FreeRTOS篇。
2025-03-29 13:50:00
1060
原创 嵌入式音视频开发(三)直播协议及编码器
本期深入解析直播协议的核心原理与编码器技术选型,重点探讨在嵌入式设备上的适配优化。通过对比RTMP、RTSP、HLS、WebRTC等协议的传输特性,结合H.264、HEVC等编码器的压缩效率,为低功耗、高实时性场景提供解决方案。
2025-02-18 12:17:35
682
原创 嵌入式音视频开发(二)ffmpeg音视频同步
前文中已经讲述了音视频处理的流程,需要我们将音频数据和视频数据分开处理,这个时候我们就需要音视频同步操作。
2025-02-18 12:17:30
1412
原创 Qt学习笔记(四)多线程
在Qt中,多线程的处理一般是通过QThread类来实现。QThread代表一个在应用程序中可以独立控制的线程,也可以和进程中的其他线程共享数据。之前我们在Linux应用篇中提到过多线程的概念,使用它的好处是可以同时操作好几个目标,而不是因为上一个目标未结束使得需要的操作陷入阻塞状态。
2024-11-14 14:36:04
732
原创 毕设拯救计划(一)基于FreeRTOS的智能家居(STM32+Onenet云)
这期算是补档,笔者之前出过STM32做的智能家具,当时利用的是EMQX,但是现在好像不是很好用,然后现在更新成ONENET云,并增加了Free RTOS。这部分算是第二节的下位机部分,大家可以自行扩展。
2024-11-14 14:34:30
878
原创 毕设拯救计划(二)基于QT的智能家居(Windows/嵌入式Linux(泰山派)+Onenet云)
前段时间,笔者觉得以前的STM32的智能家居太low了,于是想对其进行改进,目前的方案有以下两种:一、STM32和Linux开发板构成完整的智能车家系统,即通过MQTT云端进行双向传输,完成同时对应控件的相互下达。这部分的问题在于云端的双机通信其实很不稳定,即使加了心跳包保持连接仍然会时不时断链连(PS:可能有解决办法,笔者感觉意义不是很大就没有继续优化了);
2024-11-06 20:53:49
1171
原创 Qt学习笔记(二)Qt 信号与槽
在学习 Qt 的过程中,信号与槽是必不可少的部分,也是 Qt 编程的基础,是 Qt 编程的一大创新,这里分一个章节来学习这个 Qt 的信号与槽。信号(Signal)就是在特定情况下被发射的事件,例如 PushButton 最常见的信号就是鼠标单击时发射的 clicked() 信号,一个 ComboBox 最常见的信号是选择的列表项变化时发射的CurrentIndexChanged() 信号。
2024-10-22 18:14:11
1351
原创 Qt学习笔记(一)Qt的基础知识及环境编译(泰山派)
最近已经停更很久了,本系列主要是对Qt进行一个简单的学习和了解,这部分内容不是很多,操作也是较为简单的。
2024-10-22 18:13:53
1178
5
原创 FreeRTOS学习笔记(十)软件定时器
FreeRTOS 软件定时器是一种方便的工具,适用于对时间精度要求不高的延时任务或周期性任务。通过软件定时器,任务可以在不占用大量资源的情况下实现定时功能,而不需要手动管理硬件定时器或复杂的中断逻辑。
2024-09-12 15:00:11
1242
原创 FreeRTOS学习笔记(九)任务通知
esmp;任务通知功能允许我们可以在不创建任务队列、信号量的前提下为任务发送信息,但这种发送只能发送给一个任务,且只有等待的任务被阻塞。
2024-09-12 14:59:33
992
原创 FreeRTOS学习笔记(七)信号量
信号量,我们在之前网络编程的时候就讲过它的详细概念了,感兴趣的朋友可以回顾一下,这里介绍一下其在Freertos中的用法。
2024-09-10 16:51:34
1208
原创 FreeRTOS学习笔记(六)队列
队列(Queue) 是一种用于任务间通信和同步的重要机制。它允许不同任务或者中断服务例程之间交换数据,而无需直接共享变量。这种机制不仅确保数据在任务之间传递的安全性,还解决了多任务系统中的并发和同步问题。
2024-09-08 12:04:39
1161
原创 FreeRTOS学习笔记(五)任务进阶篇
本节内容主要是对基础篇的补充,大部分内容是对vTaskStartScheduler()的各种函数底层的探究,如果不深入了解的朋友可以跳过了,这些寄存器或者底层函数通常情况freertos会自动帮我们调整或者调度。延时函数的调用(如 vTaskDelay()):延时任务主动放弃 CPU 控制权,并进入阻塞状态。滴答定时器 SysTick:SysTick 产生系统节拍中断,定期更新任务的状态。调度器检查:在 SysTick 中断中,调度器检查是否有任务需要切换,是否有延时到期的任务。
2024-09-08 11:28:41
1837
原创 FreeRTOS学习笔记(四)Freertos的中断管理及临界保护
本章主要是讲述Freertos的中断管理及临界保护,具体的基础知识不再赘述,可以移步观看裸机开发部分。宏描述设置 MCU 使用几位优先级设置最低优先级设置内核中断优先级设置 FreeRTOS 系统可管理的最大优先级低于此优先级的中断可以调用 FreeRTOS 的 API 函数,反之则禁止。
2024-09-08 11:28:22
1875
原创 FreeRTOS学习笔记(三)Freertos的移植实验
本节是在前章任务学习之后进行的移植实验,其目标是将原有的串口代码改写成带有rtos系统的,所使用的mcu为stm32f103。
2024-09-07 10:16:37
972
原创 FreeRTOS学习笔记(二)任务基础篇
在FreeRTOS中,任务(Task) 是基本的执行单位,每个任务代表一个独立的线程,可以并行执行,管理系统的各项操作。任务是FreeRTOS的核心概念,了解任务的工作原理和管理方式是开发实时多任务系统的基础。任务函数本质也是函数,所以肯定有任务名什么的,不过这里我们要注意:任务函数的返回类型一定要为 void 类型,也就是无返回值,而且任务的参数也是 void 指针类型的!任务函数名可以根据实际情况定义。任务的具体执行过程是一个大循环,for(;;
2024-09-07 10:16:01
1299
原创 FreeRTOS学习笔记(一)初认RTOS
笔者在去年曾经开始过rtos的学习(虽然后面一直没更新),最近趁着有时间更新一下这部分内容,本节主要是对以前的文章进行优化和整理,已经看过的朋友可以跳过了。
2024-09-06 09:16:19
898
原创 C++学习笔记之基础篇
C++是一种功能强大、灵活的编程语言,广泛应用于系统软件、应用软件、设备驱动、嵌入式软件、高性能服务器和客户端应用程序、游戏引擎等。类是用户自定义的数据类型,由数据成员(attributes)和函数成员(methods)组成。类的定义包括类的名称、数据成员以及成员函数的声明与定义。C++中的类有三种访问控制方式:public、protected和private。这决定了类的成员在类外部的可访问性。public:所有成员可以在类外部直接访问。
2024-09-06 09:13:55
1122
原创 C++学习笔记之stl库及常用函数
C++是一种功能强大、灵活的编程语言,广泛应用于系统软件、应用软件、设备驱动、嵌入式软件、高性能服务器和客户端应用程序、游戏引擎等。
2024-07-21 00:51:02
1938
原创 Linux驱动开发笔记(十九)文件系统的构建
上节我们在mdev实验进行配置时,利用了busybox,这里着重对这部分进行学习。文件系统可直观的理解为Windows上的文件资源管理器,Linux启动后一定要挂载一个文件系统,这样程序才能被执行。文件系统可大可小,通过构造文件系统可衍生QT,ubuntu,android等系统。Linux还有一个重要思想:一切皆文件,像串口,led,按键等这些硬件设备,都可以归结为像文件一样的操作,如read,write,open,close。
2024-07-17 00:31:38
1311
原创 Linux驱动开发笔记(十八)热插拔
前面已经学习了很多外设,但是这些设备都存在一个问题,无法在运行的过程中自动检测设备的插入或移除,所以这里引入了热插拔的概念。在Linux操作系统中,热插拔(Hot Plug)指的是在不关闭系统电源的情况下,动态地插入或移除硬件设备的能力。这对于服务器和其他需要高可用性的系统非常重要,因为它允许在运行时更换或添加设备而不影响系统的正常运行。热插拔机制有很多,目前来说一般是在嵌入式设备上使用mdev,在x86上使用udev,当然也可以在嵌入式设备上使用udev。
2024-07-17 00:31:07
1442
原创 Linux驱动开发笔记(十七)设备模型总结
本文是对设备模型的一次总结,笔者回顾最近的笔记时发现一直缺少这部分内容,这期是对前面内容的查漏补缺。kobject是Linux内核中用于管理内核对象的基础组件,它提供了引用计数、层次结构、sysfs集成和uevent支持等功能,帮助开发者更好地管理和操作内核对象。我们可以将kobject结构体类比为一个组织中的员工记录系统,每个员工记录包含员工的基本信息、职位信息、部门信息以及一些管理功能。在设备模型中,kobject起到了核心作用,使得设备和驱动的管理变得更加系统化和灵活。
2024-07-16 00:46:06
1938
原创 Linux驱动开发笔记(十六)网络设备驱动
Linux的驱动主要分为三大类:字符驱动、块设备驱动和网络设备驱动,今天我们进行最后一类——网络驱动的学习。
2024-07-16 00:45:52
1058
原创 Linux驱动开发笔记(十四)PWM子系统
PWM子系统用于管理PWM波的输出,与我们之前学习的其他子系统类似,PWM具体实现代码由芯片厂商提供并默认编译进内核, 而我们可以使用内核(pwm子系统)提供的一些接口函数来实现具体的功能,例如使用PWM波控制显示屏的背光、控制无源蜂鸣器、伺服电机、电压调节等等。
2024-07-15 10:34:08
2182
原创 Linux驱动开发笔记(十三)Sysfs文件系统
前面章节驱动学习中,我们测试驱动时经常使用/sys目录下文件,我们本章就简单介绍下Sysfs文件系统。
2024-06-22 16:09:12
2475
1
原创 Linux驱动开发笔记(十二)并发与竞争
Linux的子系统我们已经大致学习完了,笔者最近相到似乎一直没有好好学习一下并发和竞争这一部分内容(在网络编程中曾经简单提到过Linux应用开发笔记(五)网络编程(二)多线程编程。
2024-06-22 13:53:59
1050
原创 Linux驱动开发笔记(十一)tty子系统及其驱动
之前已经讲过应用层的应用,接下来我们继续进行驱动的学习。其实实际上我们很少主动进行串口的驱动编写,通常情况下只需要进行应用层的应用就可以了,网络上相关的驱动内容介绍也较少,这里仅作了解并简单了解一下架构即可。
2024-06-22 13:53:53
1438
原创 Linux驱动开发笔记(九)IIC子系统及其驱动
IIC我们已经学习过很多次了,在应用部分我们已经介绍过其应用层的开发,这章我们将继续驱动部分的开发。本次实验采用MPU6050,使用了input子系统及IIC子系统构成。MPU6050是全球首例整合性6轴(3轴陀螺仪+3轴加速度计)运动处理组件,也可以通过扩展实现9轴运动处理(在连接三轴磁传感器后)。它集成了三轴MEMS陀螺仪和三轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP(Digital Motion Processor)。
2024-06-20 15:38:37
1392
原创 Linux驱动开发笔记(八)输入子系统
Linux 的 input 子系统是一个用于处理和管理输入设备(例如键盘、鼠标、触摸屏、游戏控制器等)的框架。它的作用是将硬件输入设备产生的原始输入数据转换成系统可以识别和使用的输入事件,并将这些事件传递给用户空间的应用程序。
2024-06-14 21:19:09
1559
原创 Linux驱动开发笔记(七)软中断
前节我们已经进行了外部中断的学习,这部分进行进阶内容——软中断。在Linux内核中,tasklet是一种特殊的软中断机制,被广泛用于处理中断下文相关的任务。它是一种常见且有效的方法,在多核处理系统上可以避免并发问题。Tasklet绑定的函数在同一时间只能在一个CPU上运行,因此不会出现并发冲突。然而,需要注意的是,tasklet绑定的函数中不能调用可能导致休眠的函数,否则可能引起内核异常。//初始化一个 work_struct 结构体,并指定工作函数。
2024-06-14 21:19:02
1108
基于QT5编译的MPV音乐播放器
2025-02-02
毕设拯救计划之基于MQTT云的智能家居
2024-09-20
超声波监视器(OV7670+STM32+HC-SR04)
2024-01-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人