
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
本文仅分享自己在项目中所用到的一些opencv的基础用法。实际上opencv还有很多用法,建议在做项目时用到再进行学习。
接下来CPU开始按照PC计数器上的地址顺序读取flash上的指令,这个过程叫做取指,这在CM3上是通过Icode总线去读取的。以后,先进行预处理展开宏定义、去掉注释等生成.i文件,接下来这个i文件会被编译器转换为汇编代码生成S文件,然后把汇编代码转换成目标文件也就是o文件,最后是链接,也就是将多个o文件和库文件链接起来,第二点就是至于跳转到操作系统的入口地址还是用户程序的入口地址,就要看你是跑操作

在stm32中,一般采用的是通过数组来接收串口信息,但是由于受到数组大小的限制,易出现数据覆盖或者数据溢出问题。针对上述问题,采用循环队列的方式来接收串口信息,循环队列可以动态管理缓冲区并且当队列满时,能灵活选择覆盖旧数据或者丢弃新数据,从而避免了数据混乱问题。

以上就是利用vscode进行gdb图形化调试的讲解,在博主的工作中而言,对于嵌入式Linux,百分之90采用的是打印日志调试,剩下百分之10使用gdb调试,建议大家两种调试方法都要会。本次分享就到这里,后边笔者的嵌入式Linux项目预计7月初会上线,有需要的粉丝朋友可以联系笔者。
当多个任务共享一个互斥量时,如果高优先级任务试图获取已被低优先级任务持有的互斥量,高优先级任务将进入阻塞状态。若此时有一个中等优先级的任务就绪,它会抢占CPU,导致低优先级任务无法释放互斥量,从而间接阻塞高优先级任务,形成优先级反转。临时提升互斥量持有者的优先级,使其尽快运行并释放资源,之后恢复其原始优先级。uxPriority:任务当前优先级(可能因继承而提升):任务原始优先级(未继承时的值):
一个完整的 STM32 嵌入式项目,指的是从功能定义、硬件选型、软件架构设计、编码实现、调试测试,到最终交付文档的全过程。它不同于单纯的外设例程,更强调系统性、稳定性和可维护性。整体流程通常分为五大阶段:- 需求分析与可行性评估- 硬件选型与原理图确认- 软件架构与工程搭建- 模块化编码与集成- 调试、测试与文档归档下面逐一拆解。---一个完整的嵌入式项目,本质是系统化思维 + 扎实的执行力。
QT是一个跨平台的C++开发库,主要用于开发图形界面程序。简而言之,就是用来做UI界面的。下边笔者将介绍QT的基础用法,包括信号与槽机制、常用控件以及多线程。建议大家在学习QT时,先掌握QT的用法即可,不用深究原理。信号(signal)指的是在特定情况下被发射的事件。比如说你在QT窗口里创建了一个按钮,点击这个按钮就会发送一个信号,然后界面窗口会对你所发送的信号进行响应。槽(slot)就是对信号响
众所周知,代码会经过预处理、编译、汇编及链接四个阶段,最终被编译成可执行文件(二进制机器码)。根据启动方式的不同,决定了代码从哪块内存进行读取。一般而言,代码下载后都存储在Flash闪存中,即最终编译后的可执行文件是存储在Flash中,但flash中的代码是怎么被CPU读取并执行的呢?本文将从int a=0;a+=1;这两行代码如何在基于CM3内核的STM32F103处理器中运行来进行分析。

编码器是一种能将直线位移、角位移数据转换为脉冲信号、二进制编码的设备。它本质上就是一个传感器,可以把角位移或直线位移转换成电信号,并反馈给控制器,使控制 器知道当前机械运动的位置、角度等信息。编码器常用的有磁电增量式、光电增量式以及光电绝对式三种,本篇文章主要讲解磁电增量式编码器,其原理是:利用霍尔效应,将位移转换成计数脉冲,用脉冲个数计算位移和速度。如下图所示:由图可见,磁电增量式编码器的结构包
电机控制是嵌入式领域中一个前景广阔的专业方向。然而,面对繁杂的理论与实践,许多初学者常常感到无从下手。因此本篇文章将以STM32的标准库驱动直流有刷电机为例,分享一些电机控制的基础知识,希望可以给大家做一个参考。








