自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32学习(十一)——蓝牙模块

话不多说先上代码,代码功能为使用串口发送AT指令集设置蓝牙,并通过串口调试助手接收蓝牙返回的信息或者数据,在电脑屏幕上使用,使用两个串口,串口3与蓝牙通信,串口1与调试助手通信,在电脑屏幕上显示蓝牙返回数据,只需要根据自己的stm32芯片参考手册修改对应的引脚,以及时钟等参数即可。AT指令模式指的是蓝牙未连接的工作模式,在该模式可以配置蓝牙的参数(蓝牙名字、蓝牙密码、蓝牙地址......),需要利用固定的AT指令,注意不同公司设计的蓝牙的AT指令大同小异。1. 蓝牙模块的特点。2. 蓝牙模块的模式。

2026-10-22 15:38:34 128

原创 STM32学习(十)—— 串口通信

异步通信:不带时钟同步信号,如UART接口属于异步通信,要求通信双方具有发送端和接收端,由于不要求时钟同步,所以在通信的时候,通信双方必须提前约定好通信格式(字符格式)以及通信速率,异步通信以字符为单位进行传输,在传输一个字符的时候会添加起始位和停止位,通过起始位以及停止位来达到同步的功能。通信速率指的是单位时间内传输的有效的二进制数的个数,也被称为波特率,单位为bps。③ 校验位:指的是对于数据位的简单校验,可以确保数据正常发送,也可以避免噪声的影响,校验分为奇校验、偶校验,校验位也只占1bit。

2026-10-21 13:56:36 279

原创 STM32学习(九)—— PWM

PWM技术的原理其实很简单,只不过是利用STM32定时器种的某个通道的输出比较功能(PWM模式)来输出周期性的脉冲信号,只不过要调节脉冲的宽度(调节占空比)。PWM技术的关键参数有两个,一个是频率,一个是占空比,频率指的是利用STM32的定时器通道输出脉冲的次数,占空比指的是一个周期内高电平所占的比例。(5)配置定时器通道的参数(输出极性、PWM模式......)+初始化定时器通道TIM_OCxInit()PWM指的是脉冲宽度调制,是一种利用微处理器的数字输出能力来控制模拟电路的技术。

2026-10-19 14:47:50 308

原创 STM32学习(八)—— 定时器

1. 定时器的概述定时器的基本功能一般就是作为定时,但是STM32的定时器除了具有定时功能之外,还具有输入捕获(检测外部信号)以及输出比较功能(输出不同的脉冲),可以控制产品(控制灯的亮度、控制直流电机的转速、控制舵机的角度......)。2. 定时器的种类STM32由于资源丰富,所以提供了多种定时器,一共提供14个定时器(不包括系统定时器、不包含看门狗定时器),分为高级定时器(TIM1和TIM8)、通用定时器(TIM2~TIM5+TIM9~TIM14,一共10个)、基本定时器(TIM6和TIM7)

2026-09-18 11:00:17 332

原创 STM32学习(七)—— Systick定时器

Systick定时器是属于内核中的一个外设,内嵌在NVIC中,在Cortex M3/M4 内核中都存在,方便用户在使用不同类型的芯片时可以进行移植。定时器是stm32中非常常用的一个外设,对于stm32来说,提供多种定时器供用户使用,比如高级定时器、通用定时器、基本定时器在使用时比较繁琐,所以内核就提供一款定时器,叫做系统定时器,也被称为Systick定时器(滴答定时器)。1s(1000000us)振荡21000000次,振荡1次的周期是1/21us,也就是振荡21次花费1us.

2026-09-16 15:53:29 407

原创 STM32学习(六)—— 外部中断

1. 轮询系统指的是在程序运行时,首先对所有的硬件进行初始化,然后在主程序中写一个死循环,需要运行的功能按照顺序进行执行,轮询系统是一种简单可靠的方式,一般适用于在只需要按照顺序执行的并且没有外部时间的影响的情况下。程序的运行过程中出现如按键灯需要外部检测的事件,轮询系统的实时响应能力变的很差2. 前后台系统相比于轮询系统,前后台系统增加中断的概念,如果外部时间发生,则在中断中进行处理,主程序在轮询系统中运行,中断被称为前台,主程序的while(1)就称为后台。

2026-09-15 10:18:34 344

原创 STM32学习(五)—— 时钟体系

时钟相当于处理器的”心脏“,外部晶振经过振荡会产生高速稳定的信号,由芯片的引脚输入芯片内部,再经过芯片内部的频率放大器进行放大或者缩小,最终变成各种总线的时钟频率,处理器的外设都是由时钟控制的,举个例子:交响乐团 指挥思考:时钟信号是由什么产生的?时钟信号是由时钟源产生的,比如外部晶振产生的时钟信号就是时钟源的一种,但是有点外设不需要太高的时钟频率,所以STM32提供了多种时钟源给用户使用。参考STM32中文参考手册第6章 一共有5种时钟源。

2026-09-11 09:18:28 251

原创 STM32学习(四)—— GPIO寄存器开发

不管是图形界面还是函数库开发,本质都是对底层寄存器的使用,一般在实时性要求不高的情况,就使用前两种方式,但是对实时性要求比较高的情况下,就需要使用寄存器开发。3. 分析中文参考手册或者芯片数据手册,了解需要使用的寄存器都有哪些,同样以点亮一个LED灯为例,讲述如何使用寄存器开发。练习:给定一个整型变量a,写两个函数,第一个设置a的bit3,第二个清除a的bit3,再以上两个操作中,要保持其他未不变。4. 寄存器的工作原理,参考stm32中文参考手册,stm32的寄存器是32bit的。

2026-08-24 16:18:06 153

原创 STM32学习(三)—— GPIO

1. GPIO的概念GPIO指的是通用的输入输出端口,可以由用户通过软件配置的方式来进行控制,GPIO引脚需要和外设连接在一起,就可以实现和外设实现通信以及采集数据等功能。2. GPIO的定义指的是对芯片的某个引脚进行高低电平的输出,以及可以去检测某个引脚的电平状态。一般电平采用都是TTL电平信号,TTL电平信号规定:+5V等价于逻辑”1“, 0V等价于逻辑”0“。电平其实有一个电平范围:>2.4V就表示高电平,<0.4V就表示低电平。高电平(2.4~5V) 低电平(0~0.7V)

2026-08-22 15:06:42 605

原创 STM32学习(一)—— ARM架构中通用寄存器

它们是控制GPIO引脚的"开关和状态灯"(如配置输入输出模式、读取电平、输出高低电平),数量和功能由芯片厂商设计,可能有成百上千个。:是CPU内部的"高速临时便签",用于指令执行时的数据暂存、地址计算等。将R0的值存储到R1指向的内存地址 (即GPIOB_ODR)关键字是必须的,它可以告诉编译器,这个地址的值可能被硬件本身改变,请不要对它做优化。// 将GPIOB_ODR的地址强制转换为指向32位整数的指针,并写入0x0001。(加载)这样的指令,将数据从通用寄存器搬运到GPIO寄存器对应的内存地址上。

2026-08-14 15:40:09 358

原创 PCL点云库学习(六)—— Recognition识别

具体来说,它解释了如何使用对应分组算法,将在3D描述子匹配阶段之后获得的点对点对应关系集合,聚类为当前场景中存在的模型实例。对于每个代表场景中可能模型实例的聚类,对应分组算法还会输出变换矩阵,以识别该模型在当前场景中的6自由度姿态估计。估计器,利用每个点的10个最近邻(这个参数对于许多数据集似乎都相当合适,而不仅仅是针对所提供的数据集)计算模型和场景点云中每个点的法线。向量的向量),代表聚类的输出,即该向量的每个元素本身是一组对应关系,代表与场景中特定模型实例相关联的对应关系。

2026-08-12 14:48:27 437

原创 PCL点云库学习(五)—— 深度图像

你可以把它理解为一个"虚拟传感器",它模拟了传感器(如激光雷达)的扫描过程,将三维空间中的点投影到一个球面或平面上,从而生成深度图。它就像一张"距离地图",每个点的亮度(或数值)表示该方向上的物体离传感器有多远。:用于实现人像背景虚化、增强现实(AR)中的场景理解和虚拟物体的正确遮挡。:帮助机器人获取物体的精确位置和表面朝向,实现精准抓取和操作。:进行像素级测距和3D目标检测,检测路面上的各种障碍物。:利用多张深度图进行配准,从而重建出物体的完整三维模型。

2026-08-11 15:52:28 525

原创 PCL点云库学习(四)—— Octree

使用八叉树实现来检测多个无组织点云之间的空间变化,这些点云可能在大小、分辨率、密度和点顺序上有所不同。此外,我们还解释了如何使用PCL八叉树的“双缓冲”技术,以便随时间高效处理多个点云。它将一个立方体空间均匀地分成8个子立方体,然后对每个子立方体递归地进行同样的划分,直到达到预设的深度或满足特定条件。因为两个点云的点位置不可能完全一样(即使位置很近),所以代码比较的是。// 在3D空间里随机生成128个点,范围0-64。- 第4层:512个更小的方块(8×8×8)- 第2层:8个中等方块(2×2×2)

2026-08-10 17:29:56 161

原创 PCL点云库学习(三)—— KdTree

k-d树,或称k维树,是计算机科学中用于在k维空间中组织若干点的一种数据结构。它是一种带有额外约束的二叉搜索树。k-d树在范围搜索和最近邻搜索中非常有用。就我们的目的而言,我们通常只处理三维点云,因此我们所有的k-d树都是三维的。k-d树的每一层都使用垂直于相应轴的超平面,沿特定维度划分所有子节点。在树的根节点,所有子节点将根据第一个维度进行划分(即,如果第一个维度的坐标小于根节点,则它将位于左子树中;如果大于根节点,则显然位于右子树中)。

2026-08-07 15:27:39 268

原创 PCL点云库学习(二)—— keypoints关键点

对象和距离图像,并设置支撑大小(即点周围球体的大小,该球体包含用于确定兴趣值的点)。接下来,我们创建一个用于保存所确定关键点索引的对象,并计算它们。运行结果如下,生成了如右上角的深度图,不同颜色表示不同距离,点云中用绿色点,表示提取到的关键点,分别分布在物体的四个角落。在开始时,我们进行命令行解析,从磁盘读取点云(如果未提供则创建它),创建距离图像并对其进行可视化。我们从磁盘加载点云(如果未提供,则创建它),提取其上的兴趣点,并在图像和3D查看器中可视化结果。对象,这是提取兴趣点所必需的。

2026-08-07 14:21:25 593

原创 STM32学习(二)—— 离线工程模板搭建

8. 点击按钮编译。9. 编译出错,因为拷贝的中断源文件中,添加了多余代码,作以下修改10. 成功编译通过,可以往里面添加模块功能。

2026-08-06 22:45:07 325

原创 PCL点云库学习(一)—— 点云滤波

然后实例化分割器对象 seg,并对其核心算法参数进行设置:开启系数优化以提升精度,指定模型类型为平面,选择方法为经典 RANSAC,设定最大迭代次数为 1000 次以保证较高的成功概率,并设置距离阈值为 0.01 米(1cm)作为判定点是否属于平面的标准。运行结果如下,如果参数为-r则执行半径滤波,半径 0.8 内至少 2 个邻居点才会被保留,滤除半径如果参数为-c则执行条件滤波,条件滤波为滤除z轴在0-0.8范围外的点。它的核心功能是:在指定维度(X/Y/Z)上,保留位于某个范围内的点,剔除范围外的点。

2026-08-06 18:35:12 421

原创 C++ STL学习之string(二)

上述代码中实现了string的构造函数和析构函数等功能,在调用string s1("hello");时没有自己写拷贝构造函数,因此代码使用了默认的浅拷贝构造,浅拷贝构造导致了s1和s2在内存空间中指向了同一个地址,使得string类在调用析构函数时,对同一个地址进行了两次析构,导致代码报错。详细理解如图所示:要修改代码则需要自己写一个深拷贝构造函数,

2026-07-24 08:22:02 393

原创 C++ STL学习之string(一)

输出。

2026-07-23 14:41:50 320

原创 QT中哈希表QHash的用法

定义一个哈希表QHash<QString, int> countMap;初初始化数组validResults = ["PASS", "ok", "PASS"] QH类似于C++ STL的 std::unordered_map<std::string, int>或 Python的dict。初始为空哈希表 {}。遍历并统计。

2026-07-23 10:27:25 427

空空如也

空空如也

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

TA关注的人

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