自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(146)
  • 收藏
  • 关注

原创 【Linux驱动】USB协议

详细介绍了USB协议中的电气信号,以及数据传输过程中电平信号的变化。还有USB协议的数据格式,传输类型,如批量传输,实时传输,中断传输,控制传输。还讲解并演示了设备枚举的过程。

2024-05-02 16:07:13 843 25

原创 【智能家居项目】RT-Thread版本——DHT11获取温湿度 | MQTT上传到服务器 | 服务器控制外设

介绍了RT-Thread如何通过添加软件包和组件来快速实现一个智能家居项目,以及展示了如何使用MQTT协议与服务器进行通信等内容。

2024-03-29 15:54:48 2662 31

原创 【Linux驱动】休眠与唤醒 | POLL机制 | 异步通知 | 阻塞与非阻塞 | 软件定时器

讲解了休眠与唤醒,POLL机制,异步通知,阻塞与非阻塞的使用,大概原理和注意事项。还介绍了软件定时器在按键消抖中的使用。

2024-01-22 13:17:08 1568 36

原创 【Linux驱动】设备树中指定中断 | 驱动中获得中断 | 按键中断实验

讲解了如何在设备树中指定中断信息,包含父节点以及中断源的描述规则。还讲解了如何在驱动程序中获取不同设备节点的中断信息。最后进行了一个按键中断实验。

2024-01-15 11:00:00 1585 34

原创 【Linux驱动】Linux的中断系统 | 中断的重要数据结构

讲解了Linux的中断体系,中断可以分为上下两部分,下半部分有三种处理方式,包括软件中断,内核线程,线程化等方式。还详细介绍了Linux中管理中断的irq_desc数组这个数据结构,以及产生中断后,CPU是如何通过这个数据结构调用中断处理函数的。

2024-01-12 10:20:45 1993 30

原创 【Linux驱动】Pinctrl子系统 | GPIO子系统 | 基于子系统的LED驱动程序

介绍了Pinctrl子系统和GPIO子系统的概念以及由来,包括它们在设备树中如何使用和定义节点时的细节。还讲解了如何在驱动程序中使用GPIO子系统提供的标准函数接口,包含获取引脚资源,设置方向,写值和读值等等。

2024-01-08 17:04:31 1729 22

原创 【Linux驱动】设备树模型的LED驱动 | 查询方式的按键驱动

讲解了如何使用设备树模型实现LED驱动,包括设备树文件的修改,驱动程序的修改等等。还简要介绍了APP读取按键的四种方式,并且实现了查询方式的按键驱动程序。

2024-01-02 15:26:28 1298 35

原创 【Linux驱动】设备树简介 | 内核对设备树的处理

讲解了设备树文件引入的原因,设备树文件的基本语法,包括常见节点和属性。还讲解了内核对设备树的处理,包括device_node结构体,以及哪些节点会转换为platform_device结构体,转换后又是如何和platform_driver结构体进行匹配的。最后还简单介绍了如何使用没有被转换为paltform_device结构体的节点属性。

2023-12-30 17:37:12 1889 25

原创 【Linux驱动】驱动框架的进化 | 总线设备驱动模型

以LED驱动为例,讲解了驱动程序从最简单的框架,到含有面向对象和分层的框架,再到含有分离的框架,更进一步引出platform_device和platform_driver两类结构体以及总线设备驱动模型。

2023-12-26 19:47:52 1400 28

原创 【Linux驱动】最基本的驱动框架 | LED驱动

讲解了Linux程序的框架,包括file_operations结构体及初始化,入口函数及注册设备节点,提供设备信息,还有出口函数等等。最后用该框架实现了基于IMX6ULL单板的LED驱动程序。

2023-12-23 19:05:02 2083 23

原创 【RTOS学习】源码分析(信号量和互斥量 && 事件组 && 任务通知)

讲解了互斥量/信号量的源码,包括申请和释放信号量的内部机制,还有事件组,任务通知的源码,包括使用过程中基本操作的底层原理。

2023-12-21 10:30:00 2583 21

原创 【RTOS学习】源码分析(通用队列 && 队列 && 队列集)

分析了通用队列创建,读写数据的源码,还有普通队列及队列集对通用队列的封装和使用,包含读写数据时的链表操作,以及如何实现任务的通信和阻塞。

2023-12-18 16:50:20 1340 21

原创 【RTOS学习】任务创建 | 任务启动 | 任务切换 | 任务暂停和恢复 | 任务阻塞和唤醒 | 临界资源保护

详细的分析了FreeRTOS中任务操作的源码;任务创建,包括TCB和栈的创建,伪造现场,链表操作;任务启动,包括创建空闲任务,定时器任务,触发SVC异常恢复现场;任务切换,包括保护原任务现场,挑选下一个任务,触发PendSV中断恢复新任务现场;任务暂停和恢复,任务阻塞和唤醒,主要是不同链表的操作;临界资源保护,尤其是使用关闭调度器方式中,在唤醒时进行的xPendingReadyList链表遍历和模拟消耗系统时间。

2023-12-14 15:57:13 1459 27

原创 【RTOS学习】FreeRTOS中的链表 | 堆的管理

介绍了FreeRTOS中的链表,包括它的结构组成,初始化,插入,删除等方法。还详细讲解了四种堆的管理方式,并且指出了它们各自的优缺点,还有底层解决内存碎片化的方式。

2023-12-11 18:35:08 1622 37

原创 【RTOS学习】模拟实现任务切换 | 寄存器和栈的变化

介绍了多任务系统中任务的切换过程,还模拟实现了任务切换功能,详细讲解了伪造现场,现场保存,现场恢复等过程中的细节,还分析了多任务切换过程中各个寄存器以及各自栈的变化情况。

2023-12-09 18:51:50 3555 33

原创 【理解ARM架构】中断处理 | CPU模式

介绍了中断的处理流程,以按键中断为例进行了详细讲解。还介绍了CPU的两种模式,两种访问等级以及两种栈,包括它们使用的场景以及如何切换等等。

2023-12-03 18:35:20 2583 35

原创 【理解ARM架构】异常处理

介绍了异常/中断的处理流程,包括现场保存,执行处理函数,现场恢复,这个过程中的种种细节。还演示了未定义指令异常,SVC异常,以及SysTick异常产生后的现象。

2023-11-29 15:37:49 1438 25

原创 【理解ARM架构】 散列文件 | 重定位

介绍了重定位的概念和原因,还有散列文件的作用,包括加载域,可执行域,输入段等。还实现了代码段的重定位,可读可写数据段的重定位,BSS或者ZI段的清0,以及如何使用纯C函数实现重定位。

2023-11-26 11:00:00 1655 35

原创 【理解ARM架构】操作寄存器实现UART | 段的概念 | IDE背后的命令

介绍了如何直接操作寄存器地址来配置UART,以及如何用一个结构体来描述一个模块中的多个寄存器,还有内存中段的概念,以及IDE背后执行的命令行指令。

2023-11-23 20:33:44 2391 19

原创 【理解ARM架构】不同方式点灯 | ARM架构简介 | 常见汇编指令 | C与汇编

介绍了ARM的大概架构,包括CPU中的寄存器,地址空间,还讲解了常用汇编指令的使用,还有四种栈的原理,以及C语言和汇编之间的关系,还使用纯汇编点了灯。

2023-11-20 19:34:13 1486 31

原创 【智能家居项目】FreeRTOS版本——多任务系统中使用DHT11 | 获取SNTP服务器时间 | 重新设计功能框架

介绍了在多任务系统中如何使用DHT11获取温湿度数据,有关闭调度器,中断等方式,很好的保证了系统的实时性。还介绍了ESP8266如何获取SNTP服务器时间。最后将两个新模块重新设计到了智能家居的框架中,并实现了FreeRTOS版本的智能家居。

2023-11-18 23:08:20 1680 28

原创 【智能家居项目】FreeRTOS版本——将裸机程序改造成FreeRTOS程序 | DHT11温湿度传感器

介绍了如何将裸机版本的智能家居项目改造成FreeRTOS版本,以及过程中的种种细节。还介绍了DHT11温湿度传感器的使用和代码实现,以及模块测试。

2023-11-16 16:11:44 2308 23

原创 【RTOS学习】CubeMX对FreeRTOS的适配

介绍了CubeMX对FreeRTOS的适配,CMSIS工具简介,以及如何创建任务,队列,信号量,互斥量,事件组,软件定时器和如何实现任务通知等内容。

2023-10-31 11:06:04 2116 33

原创 【RTOS学习】互斥管理 | 调试 | 信息统计

介绍了互斥管理,任务和任务之间通过禁止中断或者禁止调度器的方式来实现互斥,以及这禁止过程中的细节。还有如何更好的调试程序,获取系统的信息,例如CPU占用率等等。

2023-10-29 13:15:00 316 24

原创 【RTOS学习】软件定时器 | 中断处理

讲解了软件定时器的概念,使用,运行机制和守护任务,还有中断发生以后的处理,以及中断服务函数和普通任务是如何进行通信的,两套API的差别对比。

2023-10-26 14:30:03 1038 31

原创 【RTOS学习】事件组 | 任务通知

介绍了事件组的概念和原理,以及事件组的使用,包括基本使用和同步点。还讲解了任务通知的概念和原理,以及使用过程中的注意事项。

2023-10-24 09:33:51 641 32

原创 【RTOS学习】信号量 | 互斥量 | 递归锁

讲解了信号量的原理及基本使用,还有互斥量的原理,优先级反转,优先级继承和基本使用等内容,还有递归锁的原理以及基本使用等。

2023-10-21 17:08:59 649 28

原创 【RTOS学习】同步与互斥 | 队列 | 队列集

介绍了同步和互斥的概念以及它们的关系。详细讲解了FreeRTOS中队列的结构和运行机制,以及是如何实现同步和互斥的。还介绍了使用队列时用到的函数,以及常用场景。还有可以同时检测多个队列就绪状态的队列集及使用。

2023-10-19 17:26:50 891 29

原创 【RTOS学习】优先级 | Tick | 任务状态 | 空闲任务 | 任务调度

介绍了任务的优先级,滴答定时器以及延时函数,还有任务的不同状态切换和管理,还有空闲任务的作用及钩子函数,还介绍了任务的调度等内容。

2023-10-16 14:49:27 1113 35

原创 【RTOS学习】精简RTOS源码 | 认识RTOS | 任务的创建和删除

介绍了如何精简从官方得到的FreeRTOS源码供我们使用,以及认识什么是RTOS,还有FreeRTOS的任务创建和删除等内容

2023-10-14 21:11:50 1224 24

原创 【智能家居项目】裸机版本——网卡设备接入输入子系统 | 业务子系统 | 整体效果展示

介绍了如何将网络子系统作为输入设备接入到输入子系统中,将所有子系统整合起来实现业务子系统,并且介绍了用滴答定时器实现按键消抖,最后对整个项目进行一个简单演示。

2023-10-10 15:33:41 1021 31

原创 【智能家居项目】裸机版本——认识esp8266 | 网络子系统

介绍了智能家居项目中,ESP8266模块的使用,以及网络子系统的实现,和效果展示。

2023-10-09 11:42:26 2037 25

原创 【智能家居项目】裸机版本——字体子系统 | 显示子系统

介绍了字体子系统和显示子系统的实现,讲解了显示子系统是如何从字体子系统中获得点阵数据,又是如何将点阵数据传送到设备子系统中的显示设备上的。

2023-10-06 15:30:00 1222 33

原创 【智能家居项目】裸机版本——设备子系统(LED && Display && 风扇)

介绍了设备子系统的实现,包含LED设备,显示设备,以及风扇设备,将该子系统分为应用层,内核抽象层,芯片抽象层,硬件操作,这是一种比较完善的程序框架。

2023-10-03 16:46:52 1524 31

原创 【智能家居项目】裸机版本——项目介绍 | 输入子系统(按键) | 单元测试

介绍了智能家居项目的大概样子,实现了输入子系统中的按键设备以及按键单元测试。最重要的是介绍了面向对象的嵌入式编程思想,使得软件更加容易维护和扩展。

2023-09-27 18:44:30 1863 32

原创 【STM32学习】I2C通信协议 | OLED屏

介绍了I2C协议的原理,并且实现了底层驱动源码,还有OLED屏幕的使用,显示原理以及底层驱动源码的实现。

2023-09-22 14:06:34 2341 37

原创 【理解ARM架构】单片机中的C语言

介绍了单片机中内存的划分,变量的初始化,变量的本质,包括指针变量,结构体变量,对ARM架构有一个初步的认识。

2023-09-16 14:21:53 4395 40

原创 【网络】多路转接——poll | epoll

介绍了多路转接中的poll和epoll方式,包括接口介绍,使用细节,以及简易版服务器的实现。特别还介绍了epoll的机制和原理,以及LT和ET两种模式。

2023-08-30 20:31:50 1786 39

原创 【网络】多路转接——五种IO模型 | select

介绍了五种IO模型的概念和工作原理,详细讲解了多路转接中的select方式,包括接口的认识,代码细节的讲解,以及这种方式的特点和不足。

2023-08-29 20:10:24 2146 35

原创 【网络】DNS | ICMP | NAT | 代理服务器

介绍了网络中的一些重要协议和技术,包括DNS(域名解析),ICMP协议,NAT技术,以及代理服务器的概念。

2023-08-23 17:52:38 1419 36

CMSIS接口函数和参数介绍手册

CubeMX生成的FreeRTOS工程,对于CMSIS接口函数的使用以及参数介绍。

2023-10-31

智能家居裸机版完整源码

智能家居裸机版本的完整项目源码,使用的开发板是百问网的STM32F103ZET6学习板。

2023-10-10

智能家居源码+技术手册+工具

包含智能家居裸机版项目中ESP8266模块的演示代码(来自百问网),ESP8266的AT指令手册,远端网络工具sscom,串口调试助手以及网络子系统的源码

2023-10-09

输入子系统按键设备源码和串口调试工具

这是智能家具小项目中输入子系统的按键设备源码,以及串口调试工具

2023-09-27

OLED驱动,I2C驱动,字模制作工具

包含了OLED驱动源码,I2C驱动源码,字模制作工具,以及使用到的SSD1306驱动芯片的数据手册等资料,源码及资料来源于百问网。

2023-09-22

空空如也

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

TA关注的人

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