- 博客(26)
- 收藏
- 关注
原创 STM32:ADC
模数转换器,ADC(Analog-to-Digital Converter)是将模拟信号转换为数字信号的电子设备。在STM32中,ADC用于处理来自传感器、麦克风等的模拟信号。STM32的ADC具有高分辨率、高速转换以及丰富的功能和配置选项,能够满足多种应用需求。
2024-11-12 00:02:57
1056
原创 STM32:GPIO
输入输出(IO)是单片机最基本的外设功能之一。根据型号不同,STM32的IO端口数量不同,如64引脚的STM32F103RBT6有A、B、C、D四个IO端口,每个端口有16个引脚。每个引脚可以作为通用输入输出(GPIO,General Purpose Input Output),大部分引脚也可以作为复用功能输入输出(AFIO,Alternate Function Input Output)。
2024-10-23 10:06:19
991
原创 FreeRTOS:内存管理
FreeRTOS使用动态内存分配来为任务、队列、计时器、信号量等 RTOS 对象分配内存。为了提高灵活性和适应性,FreeRTOS 提供了多种内存管理策略。这些策略通过不同的内存分配实现文件(heap_x.c)来选择和配置,开发者可以根据应用的需要选择最适合的策略。动态内存分配需要一个内存堆,FreeRTOS 中的内存堆为ucHeap[],大小为configTOTAL_HEAP_SIZE。FreeRTOS 的V9.0.0 版本为我们提供了 5 种内存管理算法,分别是。
2024-10-22 14:33:21
948
原创 FreeRTOS:任务
在裸机系统中,系统的主体就是 main 函数里面顺序执行的无限循环,这个无限循环里面, CPU按照顺序执行代码。在多任务系统中,我们根据功能的不同,把整个系统分割成一个个独立的且无法返回的函数,这个函数我们称为任务(Task)。在FreeRTOS中,任务是指独立的、并发执行的功能模块,任务是最基本的执行单元,类似于一个独立的线程。操作系统通过任务调度器对多个任务进行调度。
2024-10-21 23:31:05
1364
原创 FreeRTOS:任务通知
FreeRTOS的任务通知(Task Notifications)是一个轻量级、快速的机制,用于在任务之间发送简单的信号或传递数据。从V8.2.0版本开始,FreeRTOS新增了任务通知这个功能,可以使用任务通知来代替信号量、消息队列、事件组等这些东西。
2024-10-19 15:56:36
1076
原创 C++:排序算法
二路归并排序的递归实现是一种自顶向下的方法,形式简洁但效率相对较差。二路归并排序的非递归实现是一种自底向上的方法,算法效率较高,但算法较复杂。快速排序的平均时间性能是迄今为止所有内排序算法中最好的,因此得到广泛应用。希尔排序(Shell sort)是对直接插入排序的一种改进,快速排序(quick sort)是对冒泡排序的一种改进,由于在希尔排序过程中记录是跳跃移动的,因此希尔排序是。堆排序是简单选择排序的改进,改进的着眼点是。,相对于快速排序,这是堆排序最大的优点。(记录就是排序问题中的数据元素)
2024-10-19 00:20:56
2274
原创 FreeRTOS:事件标志组
在FreeRTOS中,使用信号量可以实现同步,但是使用信号量来同步的话任务只能与单个的任务进行同步。有时候某个任务可能会需要与多个任务进行同步,此时信号量就无能为力。FreeRTOS为此提供了一个可选的解决方法,那就是事件标志组。
2024-10-17 00:08:59
828
原创 FreeRTOS:信号量
FreeRTOS中的信号量(Semaphore)是一种实现任务间通信的机制,用于任务同步和资源管理。信号量可以防止任务之间发生竞态条件(race condition),并确保系统中多个任务或中断安全地共享资源。
2024-10-16 22:24:58
1922
原创 FreeRTOS:消息队列
FreeRTOS 的消息队列(Message Queue)是任务之间通信的一种常用机制,允许任务或中断将数据发送到队列中,其他任务从队列中读取数据。消息队列在嵌入式实时操作系统中非常重要,因为它提供了一种任务间的异步通信方式,同时可以确保数据的顺序性和完整性。
2024-10-16 12:40:57
1285
原创 C++:图的拓扑排序
有向图是描述工程进行过程的有效工具。通常把教学计划、施工过程、生产流程、软件工程等都当成一个工程。除最简单的情况之外,几乎所有的工程都可以分为若干个称为活动的子工程。某个活动都会持续一定的时间,某些活动之间通常存在一定的约束条件,例如,某些活动必须在另一些活动完成之后才能开始。本文将讨论有向图的拓扑排序。
2024-10-15 21:48:51
564
原创 STM32:通用同步/异步收发器USART
CPU与外围设备之间的信息交换称为通信。基本的通信方式有并行通信和串行通信两种。STM32单片机提供了功能强大的串行通信模块,即通用同步/异步收发器(USART)。
2024-10-07 15:56:24
1745
原创 C++:图的遍历
图的遍历通常有深度优先遍历和广度优先遍历两种方式,这两种遍历次序对无向图和有向图都使用。本文分别介绍基于邻接矩阵和邻接表的图的深度优先遍历和广度优先遍历。
2024-10-05 00:33:37
1463
原创 C++:图的最短路径问题
最短路径问题是图的一个比较典型的应用问题。例如,给定某公路网的n个城市以及这些城市之间相通公路的距离,能否找到城市A到城市B之间一条距离最近的通路呢?如果将城市用顶点表示城市间的公路用边表示,公路的长度作为边的权值,这个问题就归结为在网图中求顶点A和顶点B的最短路径。
2024-10-04 17:07:53
1583
原创 C++:图的最小生成树
连通图的生成树是包含图中全部顶点的一个极小连通子图。一颗具有n个顶点的生成树,有且仅有n-1条边。无向连通网的生成树上各边的权值之和称为该生成树的代价,在图的所有生成树中,代价最小的生成树称为最小生成树。
2024-10-04 10:57:29
1655
原创 C++:图的存储结构及实现
图是一种复杂的数据结构,任意两个顶点之间都可能存在边,所以无法通过顶点的存储位置反应顶点之间的邻接关系,因此,图没有顺序存储结构。信息以及顶点之间的信息。无论采用什么方法存储图,都要完整、准确地表示这两方面的信息。下面介绍两种常用的存储结构——和。一般情况下,图越稠密,邻接矩阵的空间效率越高;而对稀疏图使用邻接表存储,则能获得较高的空间效率。邻接矩阵比邻接表的时间代价高。
2024-10-02 16:58:06
820
原创 STM32:通用定时器
STM32内部集成了多个定时/计数器,根据型号不同,STM32系列芯片最多包含8个定时/计数器。其中,TIM6、TIM7为基本定时器,TIM2~TIM5为通用定时器,TIM1、TIM8为高级控制定时器。
2024-10-02 14:13:24
2112
原创 C++:队列的实现和使用
队列(Queue)是一种在队列的尾部,在队列的头部。因此,队列遵循(FIFO, First In First Out)的原则,即最早进入队列的元素最先被处理。
2024-10-01 10:54:18
4500
原创 C++:栈的实现和使用
栈(Stack)是一种重要的数据结构,它遵循“后进先出”(LIFO, Last In First Out)的原则。这意味着最后插入栈中的元素会最先被移除。栈有两种存储结构,分别是和,对应称栈为和。本文将介绍这两种栈的实现,并介绍STL库中的栈的使用。作为一般规律,当栈的使用过程中,元素个数变化较大时,建议使用链栈,反之,使用顺序栈。
2024-09-30 18:37:43
2856
原创 STM32的串行外设接口SPI
SPI是同步全双工串行通信,需要SCK、MISO、MOSI、NSS四条通信线来完成数据传输 ,每增加一个从机,多一条NSS通信线。
2024-09-29 17:45:55
1226
原创 比较:C++的struct和class、C和C++的struct
C++中的struct结构体和C语言中的struct结构体差异较大。C++中的struct结构体和C++中的class类极为相似。
2024-09-29 13:51:37
2929
原创 C++类的三种特性之一:多态
多态按字面的意思就是多种形态。从系统实现的角度来看,多态性分为两类:静态多态和动态多态。静态多态是通过函数重载和运算符重载来实现的,动态多态是通过虚函数来实现的。
2024-09-29 00:59:27
1087
原创 STM32的集成电路总线I2C
(1)两线制I2C只需要SDA、SCL两根线来完成数据的传输和外围器件的扩展,器件地址采用软件寻址方式。(2)多主机总线I2C是一个真正的多主机总线,如果2个或多个主机同时初始化数据传输,可以通过冲突检测和仲裁防止数据被破坏。每个连接到总线上的器件都有唯一的地址,任何器件既可以作为主机也可以作为从机,但同一时刻只能有一个主机。(3)传输速率数据传输速率相对SPI不高,串行的8位双向数据传输速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。
2024-09-27 23:52:21
2037
原创 STM32单片机外部中断EXTI
中断:外部设备主动向单片机发送请求,单片机接到请求后立即中断当前工作,处理外部设备的请求,处理完毕后继续处理未完成的工作。
2024-09-26 20:16:16
1081
原创 STM32 ESP8266WiFi模块的使用:基于机智云物联网平台
本文介绍在机智云物联网云平台上实现基于STM32的WiFi通信功能,即通过WiFi发送指令,使STM32能够完成特定的操作。具体介绍如何通过WiFi控制LED灯的亮灭,更多复杂功能可自行拓展。这里将使用一个WiFi模块来连接单片机,在WiFi模块中烧写固件,同时在单片机中移植所需的代码,最终实现所需的功能。
2024-08-14 20:26:15
5658
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人