- 博客(63)
- 收藏
- 关注
原创 Qt学习笔记(二)Qt 信号与槽
在学习 Qt 的过程中,信号与槽是必不可少的部分,也是 Qt 编程的基础,是 Qt 编程的一大创新,这里分一个章节来学习这个 Qt 的信号与槽。信号(Signal)就是在特定情况下被发射的事件,例如 PushButton 最常见的信号就是鼠标单击时发射的 clicked() 信号,一个 ComboBox 最常见的信号是选择的列表项变化时发射的CurrentIndexChanged() 信号。
2024-10-22 18:14:11 1257
原创 Qt开发笔记(一)Qt的基础知识及环境编译(泰山派)
最近已经停更很久了,本系列主要是对Qt进行一个简单的学习和了解,这部分内容不是很多,操作也是较为简单的。
2024-10-22 18:13:53 973
原创 FreeRTOS学习笔记(十)软件定时器
FreeRTOS 软件定时器是一种方便的工具,适用于对时间精度要求不高的延时任务或周期性任务。通过软件定时器,任务可以在不占用大量资源的情况下实现定时功能,而不需要手动管理硬件定时器或复杂的中断逻辑。
2024-09-12 15:00:11 1054
原创 FreeRTOS学习笔记(九)任务通知
esmp;任务通知功能允许我们可以在不创建任务队列、信号量的前提下为任务发送信息,但这种发送只能发送给一个任务,且只有等待的任务被阻塞。
2024-09-12 14:59:33 899
原创 FreeRTOS学习笔记(七)信号量
信号量,我们在之前网络编程的时候就讲过它的详细概念了,感兴趣的朋友可以回顾一下,这里介绍一下其在Freertos中的用法。
2024-09-10 16:51:34 1100
原创 FreeRTOS学习笔记(六)队列
队列(Queue) 是一种用于任务间通信和同步的重要机制。它允许不同任务或者中断服务例程之间交换数据,而无需直接共享变量。这种机制不仅确保数据在任务之间传递的安全性,还解决了多任务系统中的并发和同步问题。
2024-09-08 12:04:39 1081
原创 FreeRTOS学习笔记(五)任务进阶篇
本节内容主要是对基础篇的补充,大部分内容是对vTaskStartScheduler()的各种函数底层的探究,如果不深入了解的朋友可以跳过了,这些寄存器或者底层函数通常情况freertos会自动帮我们调整或者调度。延时函数的调用(如 vTaskDelay()):延时任务主动放弃 CPU 控制权,并进入阻塞状态。滴答定时器 SysTick:SysTick 产生系统节拍中断,定期更新任务的状态。调度器检查:在 SysTick 中断中,调度器检查是否有任务需要切换,是否有延时到期的任务。
2024-09-08 11:28:41 1695
原创 FreeRTOS学习笔记(四)Freertos的中断管理及临界保护
本章主要是讲述Freertos的中断管理及临界保护,具体的基础知识不再赘述,可以移步观看裸机开发部分。宏描述设置 MCU 使用几位优先级设置最低优先级设置内核中断优先级设置 FreeRTOS 系统可管理的最大优先级低于此优先级的中断可以调用 FreeRTOS 的 API 函数,反之则禁止。
2024-09-08 11:28:22 1303
原创 FreeRTOS学习笔记(三)Freertos的移植实验
本节是在前章任务学习之后进行的移植实验,其目标是将原有的串口代码改写成带有rtos系统的,所使用的mcu为stm32f103。
2024-09-07 10:16:37 803
原创 FreeRTOS学习笔记(二)任务基础篇
在FreeRTOS中,任务(Task) 是基本的执行单位,每个任务代表一个独立的线程,可以并行执行,管理系统的各项操作。任务是FreeRTOS的核心概念,了解任务的工作原理和管理方式是开发实时多任务系统的基础。任务函数本质也是函数,所以肯定有任务名什么的,不过这里我们要注意:任务函数的返回类型一定要为 void 类型,也就是无返回值,而且任务的参数也是 void 指针类型的!任务函数名可以根据实际情况定义。任务的具体执行过程是一个大循环,for(;;
2024-09-07 10:16:01 1137
原创 FreeRTOS学习笔记(一)初认RTOS
笔者在去年曾经开始过rtos的学习(虽然后面一直没更新),最近趁着有时间更新一下这部分内容,本节主要是对以前的文章进行优化和整理,已经看过的朋友可以跳过了。
2024-09-06 09:16:19 770
原创 C++学习笔记之基础篇
C++是一种功能强大、灵活的编程语言,广泛应用于系统软件、应用软件、设备驱动、嵌入式软件、高性能服务器和客户端应用程序、游戏引擎等。类是用户自定义的数据类型,由数据成员(attributes)和函数成员(methods)组成。类的定义包括类的名称、数据成员以及成员函数的声明与定义。C++中的类有三种访问控制方式:public、protected和private。这决定了类的成员在类外部的可访问性。public:所有成员可以在类外部直接访问。
2024-09-06 09:13:55 1070
原创 C++学习笔记之stl库及常用函数
C++是一种功能强大、灵活的编程语言,广泛应用于系统软件、应用软件、设备驱动、嵌入式软件、高性能服务器和客户端应用程序、游戏引擎等。
2024-07-21 00:51:02 1144
原创 Linux驱动开发笔记(十九)文件系统的构建
上节我们在mdev实验进行配置时,利用了busybox,这里着重对这部分进行学习。文件系统可直观的理解为Windows上的文件资源管理器,Linux启动后一定要挂载一个文件系统,这样程序才能被执行。文件系统可大可小,通过构造文件系统可衍生QT,ubuntu,android等系统。Linux还有一个重要思想:一切皆文件,像串口,led,按键等这些硬件设备,都可以归结为像文件一样的操作,如read,write,open,close。
2024-07-17 00:31:38 1138
原创 Linux驱动开发笔记(十八)热插拔
前面已经学习了很多外设,但是这些设备都存在一个问题,无法在运行的过程中自动检测设备的插入或移除,所以这里引入了热插拔的概念。在Linux操作系统中,热插拔(Hot Plug)指的是在不关闭系统电源的情况下,动态地插入或移除硬件设备的能力。这对于服务器和其他需要高可用性的系统非常重要,因为它允许在运行时更换或添加设备而不影响系统的正常运行。热插拔机制有很多,目前来说一般是在嵌入式设备上使用mdev,在x86上使用udev,当然也可以在嵌入式设备上使用udev。
2024-07-17 00:31:07 788
原创 Linux驱动开发笔记(十七)设备模型总结
本文是对设备模型的一次总结,笔者回顾最近的笔记时发现一直缺少这部分内容,这期是对前面内容的查漏补缺。kobject是Linux内核中用于管理内核对象的基础组件,它提供了引用计数、层次结构、sysfs集成和uevent支持等功能,帮助开发者更好地管理和操作内核对象。我们可以将kobject结构体类比为一个组织中的员工记录系统,每个员工记录包含员工的基本信息、职位信息、部门信息以及一些管理功能。在设备模型中,kobject起到了核心作用,使得设备和驱动的管理变得更加系统化和灵活。
2024-07-16 00:46:06 1854
原创 Linux驱动开发笔记(十六)网络设备驱动
Linux的驱动主要分为三大类:字符驱动、块设备驱动和网络设备驱动,今天我们进行最后一类——网络驱动的学习。
2024-07-16 00:45:52 742
原创 Linux驱动开发笔记(十四)PWM子系统
PWM子系统用于管理PWM波的输出,与我们之前学习的其他子系统类似,PWM具体实现代码由芯片厂商提供并默认编译进内核, 而我们可以使用内核(pwm子系统)提供的一些接口函数来实现具体的功能,例如使用PWM波控制显示屏的背光、控制无源蜂鸣器、伺服电机、电压调节等等。
2024-07-15 10:34:08 1245
原创 Linux驱动开发笔记(十三)Sysfs文件系统
前面章节驱动学习中,我们测试驱动时经常使用/sys目录下文件,我们本章就简单介绍下Sysfs文件系统。
2024-06-22 16:09:12 1747 1
原创 Linux驱动开发笔记(十二)并发与竞争
Linux的子系统我们已经大致学习完了,笔者最近相到似乎一直没有好好学习一下并发和竞争这一部分内容(在网络编程中曾经简单提到过Linux应用开发笔记(五)网络编程(二)多线程编程。
2024-06-22 13:53:59 1006
原创 Linux驱动开发笔记(十一)tty子系统及其驱动
之前已经讲过应用层的应用,接下来我们继续进行驱动的学习。其实实际上我们很少主动进行串口的驱动编写,通常情况下只需要进行应用层的应用就可以了,网络上相关的驱动内容介绍也较少,这里仅作了解并简单了解一下架构即可。
2024-06-22 13:53:53 1117
原创 Linux驱动开发笔记(九)IIC子系统及其驱动
IIC我们已经学习过很多次了,在应用部分我们已经介绍过其应用层的开发,这章我们将继续驱动部分的开发。本次实验采用MPU6050,使用了input子系统及IIC子系统构成。MPU6050是全球首例整合性6轴(3轴陀螺仪+3轴加速度计)运动处理组件,也可以通过扩展实现9轴运动处理(在连接三轴磁传感器后)。它集成了三轴MEMS陀螺仪和三轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP(Digital Motion Processor)。
2024-06-20 15:38:37 1227
原创 Linux驱动开发笔记(八)输入子系统
Linux 的 input 子系统是一个用于处理和管理输入设备(例如键盘、鼠标、触摸屏、游戏控制器等)的框架。它的作用是将硬件输入设备产生的原始输入数据转换成系统可以识别和使用的输入事件,并将这些事件传递给用户空间的应用程序。
2024-06-14 21:19:09 1444
原创 Linux驱动开发笔记(七)软中断
前节我们已经进行了外部中断的学习,这部分进行进阶内容——软中断。在Linux内核中,tasklet是一种特殊的软中断机制,被广泛用于处理中断下文相关的任务。它是一种常见且有效的方法,在多核处理系统上可以避免并发问题。Tasklet绑定的函数在同一时间只能在一个CPU上运行,因此不会出现并发冲突。然而,需要注意的是,tasklet绑定的函数中不能调用可能导致休眠的函数,否则可能引起内核异常。//初始化一个 work_struct 结构体,并指定工作函数。
2024-06-14 21:19:02 880
原创 Linux驱动开发笔记(六)中断子系统及实验
本章我们将讲解下和中断相关的知识,了解内核中断的框架和中断的概念,对于arm的中断控制器(GIC v3)相关内容,主要是借鉴参考手册简单解释下。
2024-06-06 00:34:49 1206
原创 Linux驱动开发笔记(五) 基于设备树与GPIO子系统的操作实验
前两章我们学习了平台设备和设备树的相关内容,接下来将对这部分进行结合学习。本章分为两部分,即有、无通过平台设备借由设备树对GPIO进行操作,大家可以自行比对。注册平台驱动时会用到平台设备结构体,在平台设备结构体主要作用是指定平台驱动的.probe函数、指定与平台驱动匹配的平台设备, 使用了设备树后就是指定与平台驱动匹配的设备树节点。//定义匹配表},//定义平台设备结构体。
2024-06-06 00:34:35 1110
原创 Linux驱动开发笔记(四)设备树进阶及GPIO、Pinctrl子系统
在早期笔者已经简单介绍过设备树的相关信息,本章将详细展开学习一下这部分内容。
2024-05-30 16:08:39 1255
原创 Linux驱动开发笔记(三)平台设备驱动
随着科技的飞速发展,平台设备已成为现代计算机系统不可或缺的重要组成部分。无论是智能手机、平板电脑,还是嵌入式系统、数据中心服务器,平台设备都承载着系统运行的核心功能。因此,平台设备驱动的开发与优化,对于保障系统稳定性、提升性能以及满足用户日益增长的需求具有至关重要的作用。在接下来的章节中,我们将详细介绍该驱动的设计思路、实现原理、功能特性以及使用方法,希望能够为广大读者提供有价值的参考和借鉴。//定义一个resource结构体,用于存放上述的寄存器地址,提供给驱动使用。
2024-05-30 16:07:29 1324
原创 Linux驱动开发笔记(二) 基于字符设备驱动的GPIO操作
前段时间我们学习了字符驱动,并实现了字符的回环发送,这部分我们将进行I/O的操作学习,以万能的点亮LED为例。需要设置的寄存器的地址为base+offset,由下图可以知道GPIO1的基地址为:0xFE740000接下来就是确定GPIO的是输入还是输出,我们这里需要的是GPIO_SWPORT_DDR_L。可以看到GPIO_SWPORT_DDR_L的定义情况,这里我们可以重复上面提到的命令行,查看寄存器的设置情况,我们的b0应当是第1x7+1=8位。
2024-05-21 09:12:11 1276
原创 番外(二):K210的外设操作及串口通讯
前文已经简单介绍了基于K210的色彩识别和数字识别,那么接下来就是一些简单的外设操作(包括定时器、按键、串口等),之后就可以和我们的主控进行连接了。
2024-04-28 16:30:11 1586
原创 Linux驱动开发笔记(零)驱动基础知识及准备
在简单结束应用层的开发学习后,本系列将开启驱动层的学习,本文作为该系列第一期旨在归纳前期需要准备的知识。Linux内核模块是Linux内核向外部提供的一个插口,也被称为动态可加载内核模块(Loadable Kernel Module,LKM)。它是一个具有独立功能的程序,可以被单独编译,但不能独立运行。在运行时,内核模块被链接到内核作为内核的一部分在内核空间运行。内核模块的主要作用是扩展内核的功能,而无需重新编译整个内核。例如,内核模块通常用于添加新的设备驱动程序、文件系统或其他功能到内核中。
2024-04-19 17:13:07 2775
课设拯救计划之基于MQTT云的智能家居
2024-09-20
超声波监视器(OV7670+STM32+HC-SR04)
2024-01-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人