- 博客(69)
- 资源 (4)
- 收藏
- 关注
原创 YOLO系列入门:1、YOLO V11环境搭建
YOLO支持CLI操作,不需要写python代码,就可以直接使用命令行指挥YOLO进行识别。图片如下:810*1080。可以看到,这里使用的模型yolov8n.pt是预训练好的模型,YOLO会去github仓库上下载该模型。在实际项目中,我们不会通过CLI调用YOLO,而是会通过python脚本调用YOLO,原理相同。然后在conda中用命令行切换到该文件夹。将图片路径传给YOLO,执行命令。首先,我们新建一个空白文件夹,将我们要识别的图片放进去。最终识别结果如下,说明我们成功配置好了YOLO环境。
2024-10-18 21:16:12 1537
原创 算法:1、动态规划算法DP(Dynamic Programming)
- 动态规划(Dynamic Programming,DP),通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。它的关键思想是对于最终结果依赖前序步骤的问题,将结果定义为状态值dp,然后推导出后续步骤由前序步骤表达的状态转移方程,进而逐步计算求得最终结果。
2024-10-09 16:49:38 502
原创 快速幂算法
- 计算幂指数时,如计算 $2^{10}$ ,可以2乘以10次,这样的话复杂度高。- 也可以先计算 $2^2$,然后中间结果再平方 $2^{2^{2}}$ ,即先算2次方,然后再直接算4次方,然后算8次方,每次直接翻倍。这样的话复杂度降低了很多。这种方法叫做快速幂指数算法。- 在计算 $2^{100}$ 时,普通算法需要计算100次乘法,而快速幂指数计算6次就到了64次方,一共也只需要计算9次。
2024-09-11 15:03:37 1105
原创 C++虚函数继承原理和用法及示例:一文带你完全掌握
从上述例子可以看出:1、对于子类中的新函数,基类指针无法得知更无法访问。2、对于非虚函数的覆盖,基类指针只能执行基类中的函数,无法实现动态绑定,哪怕通过域说明符也是只执行基类中的函数。答:此时发生了普通函数的覆盖(override),基类函数被隐藏。但由于不是虚函数覆盖,不存在动态绑定,因此此时的覆盖无法实现多态性。答:纯虚函数是指在基类中声明了虚函数,但是基类没给出实现,子类必须重写该虚函数。可以看出,普通函数的覆盖不能实现多态,而虚函数的覆盖可以实现多态。说明该函数是覆盖基类的虚函数的。
2024-08-27 11:29:35 1225
原创 ARM-Cortex-M架构:1、STM32函数参数传递
如果函数的参数超过 4 个,或者参数很大(如结构体或数组等),无法完全放入寄存器中,那么超过部分的参数会被压入堆栈。堆栈传递参数时,参数按照从右到左的顺序压入堆栈。在调用子函数时,ARM Cortex-M3 处理器可以使用 寄存器 和 堆栈 来传递参数。这是因为使用寄存器传递参数比使用堆栈更快,访问寄存器的速度比访问内存(堆栈)要快。如果参数的数量小于或等于 4,那么这些参数都会通过 R0 到 R3 传递。如果参数的数量大于 4,则超过的参数将通过堆栈传递。
2024-08-27 01:25:59 1082
原创 CMSIS OS版本V1和V2区别
- CMSIS-OS(Common Microcontroller Software Interface Standard - Operating System)是一种通用的嵌入式操作系统接口标准。它旨在简化微控制器软件开发,为开发人员提供一致且高效的接口。- 其版本有V1和V2的区别,如果使用的函数是cmsis_os.h,就是v1版本。如果是cmsis_os2.h,就是v2版本。
2024-07-29 16:01:44 669
原创 工业控制:CANOpen(控制器局域网络)协议快速学习
- 目前很多CANOpen介绍的文章比较繁琐,讲很多历史由来,虽然更方便读者了解原委,但对于快速上手是不合适的。- 本文介绍了为什么CAN通信需要终端负载电阻。- 本文简单直接,默认大家都熟悉CAN协议,在此基础上快速对CANOpen协议进行学习。
2024-07-17 20:51:25 1660 1
原创 STM32开发:1、使用VSCode + CMake + Ninja + CubeMX编译代码
- 传统STM32开发常用keil,keil同时集成了代码编辑、文件编译、调试的功能,用起来方便快捷。- 但是,keil为付费软件,在版权要求较为严格的场景中不适用。且Keil不可以跨平台使用,还存在代码提示不完善、界面功能老旧的问题。- 因此,本文将和读者一起了解STM32代码编译的原理,使我们更深刻得理解STM32从c文件代码到hex烧录文件背后的原理,拓宽自己的技术栈。
2024-07-08 17:12:26 2358
原创 FreeRTOS:1、任务通知vTaskNotifyGiveFromISR保证实时性
- 这里我们讲了FreeRTOS中任务通知vTaskNotifyGiveFromISR的用法。- 由于FreeRTOS是高实时性的系统,因此我们可以看到,在中断退出时,为了保证被通知的任务及时运行,因此需要检查是否需要立即进行任务切换。如果被通知的任务没有更高的优先级,那么在退出中断后不会立即进行任务切换。FreeRTOS 设计的一个关键点就是只在有必要的时候进行任务切换,以保持系统的效率和响应性。- portYIELD_FROM_ISR的作用是从ISR中请求一次上下文切换。具体来说,如果中断服务例程导
2024-06-20 23:46:59 754
原创 ESP32:FreeRTOS节拍配置(vTaskDelay延时10ms改为1ms)
- 在FreeRTOS的默认配置中,任务调度的频率默认是100HZ,因此默认vTaskDelay默认延时是10ms。 FreeRTOS 的系统时钟节拍可以在配置文件 FreeRTOSConfig.h 里面设置: - #define configTICK_RATE_HZ ( ( TickType_t ) 1000 ) - 如上所示的宏定义配置表示系统时钟节拍是 1KHz,即 1ms. - 在ESP IDF框架中,没有 FreeRTOSConfig.h 文件,因此配置时需要改ESP IDF框架内的
2024-06-06 17:19:38 949
原创 Linux脚本:将.sh文件输出映射到日志文件并添加时间戳
- 在linux系统中,当调用.sh脚本时,脚本中的标准输出原本是打印到控制台的,我们可以将其打印到某个文件,并添加上时间戳,方便问题溯源。- 有时我们运行的脚本是.py脚本,也需要将输出映射到日志文件。
2024-06-06 13:03:12 934
原创 嵌入式linux:1、Debian12虚拟机安装及linux下SSH基本配置
嵌入式需要掌握linux系统,比起买板子,最方便的是虚拟机,不仅性能比买的板子强悍很多,还更加方便。本文使用vmware workstation 17,安装debian12系统,并在主机上使用mobaxterm通过SSH连接到debian,进行命令行的基本配置及SSH免密登录。
2024-01-11 16:22:49 3791 1
原创 知识管理平台Confluence:win10安装confluence
Confluence是由澳大利亚软件公司Atlassian开发的企业协作平台。它提供了一个集成的团队协作环境,使团队成员能够共享文档、协作编辑、创建项目计划、记录会议笔记和进行信息共享。
2023-11-29 18:12:08 2163
原创 FPGA系列:1、FPGA/verilog源代码保护:基于Quartus13.1平台保护verilog源码发给第三方但不泄露源码
有时需要将源码交付给第三方,但是源码中部分模块涉及到的核心代码无法暴漏给第三方。因此,我们需要一种能够让第三方拿到源码对部分参数进行修改、但同时又无法触及到核心代码的代码保护方法。本文结合部分资料,给出了如何将```quartus```工程中核心```module```的```verilog```文件导出为网表文件的具体步骤
2023-11-20 15:20:47 657
原创 STM32 HAL库串口使用printf
在我们使用CubeMX生成好STM32 HAL库工程之后,我们想使用printf函数来打印一些信息,配置如下:
2023-10-23 14:27:57 1025 2
原创 最新版ESP32 IDF环境搭建教程:基于CLION安装ESP32开发环境IDF(含同时安装多个IDF教程)
如果我们要安装多个不同版本的IDF,我们就需要把这个环境变量删掉,将其添加在我们新建的IDFV445.bat里面。新版本的IDF有时安装之后,目录下没有activate.bat文件,可以自己建一个该文件,内容如下:把其中的。多个版本的IDF难点是在环境变量的冲突,我们上面通过将环境变量删掉,添加在bat文件里,即可添加不同版本的IDF。配置好工具链之后,我们点击右边状态栏的cmake,选择到我们的ESP32V445工具链:如下配置。这里的v445标志着不同的版本,我们电脑上可以同时安装多个所需的版本。
2023-09-14 12:14:47 3014 6
原创 ESP32开发:Clion配置IDF
可以通过安装包进行安装,如下图:下载链接如下:https://dl.espressif.cn/dl/esp-idf/?idf=4.4安装好后,IDF会添加环境变量IDF_TOOLS_PATH,如果要安装多个IDF,为了防止冲突,可以将该环境变量移至init.bat中,如下图:同样的,配置Clion时,还需要在C:\Users\WCC\IDF441\frameworks\esp-idf-v4.4.4\export.bat最上面添加该语句。
2023-09-11 14:48:18 401
原创 计算机/嵌入式入门教材资料
自学计算机,首先我们要找到好的教材、教程,可以事半功倍。目前,互联网上计算机资源较多,难的不再是寻找资源,而是筛选出质量比较高的资源。基于笔者经验,推荐以下资源。
2023-09-01 14:24:06 340
原创 单片机UART一对多:同时读取多个传感器基于modbus协议
modbus介绍可以参考如下:https://cloud.tencent.com/developer/article/1540241简而言之,在串口中使用modbus协议,主机需要先发送要读取的设备编号,相应设备编号的设备回传主机要读取的数据,而不符合该设备编号的设备保持静默状态。
2023-08-24 16:28:54 4734 10
原创 ESP32 LVGL:无法显示过大的GIF图片(修改VLGL RAM缓存大小)
在ESP32中,在总线上分为了数据内存总线(DRAM、DROM)和指令内存总线(IRAM、IROM),指令存储器是可执行的,只能通过4字节对齐的字来读写。数据内存是不可执行的,可以通过单个字节操作访问。其默认为48K,因此对于120*120的GIF,就无法进行解码,也就无法显示了。使用LVGL可显示64 * 64的GIF,但是却无法显示120*120的GIF。一般来说,DRAM用来存储可读可写的数据,IRAM用来存储只读数据。按理来说,ESP32的RAM空间有512KB,是足够解码器使用的。
2023-08-03 19:03:10 3632 7
原创 ESP32 LVGL:使用menuconfig配置LVGL会导致全部文件重新编译问题解决
在使用ESP32 IDF LVGL时,我们可以通过idf.py menuconfig来对LVGL进行配置,但是每次使用idf.py menuconfig配置完LVGL后,由于修改了工程的sdkconfig文件,因此所有的文件都需要重新编译。需要编译几千个文件。因此,我们使用lv_conf文件替代idf.py menuconfig文件。
2023-07-26 18:07:28 579
原创 LVGL开发:配置模拟器学习LVGL V8.3
像按钮、标签、滑块、图表等图形元素都派生于widget,LVGL有屏幕的概念,各Widget组件在创建时,需要指定父对象,子对象只在父对象区域内可见,随着父对象移动而移动、删除而删除。可以为一个对象分配一个或多个回调函数,当对象被点击、释放、拖动、删除等操作时,这些回调函数将被调用。在WINDOWS下面,大家最常使用的是VS2019,为了和大家保持一致,这里也使用VS2019进行配置。除了每个Widget对象都有的基本属性之外,对于每个控件特有的属性,可以通过函数。创建Widget对象,
2023-07-14 21:42:36 2264 6
原创 ESP32 LVGL:使用图标解决图片过大存不下的问题
在LVGL中,用将图片转为C语言数组的方式储存的时候,图片转换的数组过大,当图片过多时会出现存不下的问题。因此,可以使用字库图标解决该问题。
2023-07-14 16:27:25 1984
原创 ESP32开发:IDFV4.4配置LVGL8.3
ESP32 IDF V4.4.4配置LVGL V8.3.8,基于官网教程步骤实现。介绍了LVGL可视化开发工具Sqrareline Studio
2023-07-11 20:09:16 1722
原创 ESP32开发:1、环境搭建(基于vscode+ESP-IDF)
ESP-IDF提供操作ESP32芯片的API函数,供用户编写的用户程序调用。当用户程序编写好后,ESP-IDF需要借助一系列编译工具才能将用户程序+API函数编译成能运行在ESP32上的二进制文件。如上图所示这个1个G左右大的压缩包就是ESP-IDF。如果电脑上已经存在了这个文件,就可以不用下载直接用。
2023-07-04 08:50:37 2234 1
原创 低功耗RC启动电路时间常数计算
在下图中的软开关电路,如果将开关改为短接,即通过电阻R8给电容C4充电来使得电路打开:由于Q4开启电压为0.6V,则C4上端为0.6V时会打开。
2023-06-23 18:19:22 275
原创 国产FPGA:替代ATLERAEP4CE10E22的AG10KL144
AG10K用于PIN TO PIN替代ATLERA EP4CE10E22、EP3C10E144的FPGA,其资源介绍如下:引脚对应如下:FPGA使用Quartus II开发,开发的整体流程如下:新建工程时选用Cyclone III或者Cyclone IV库,如下图:新建工程后添加verilog文件,一定要记得顶层verilog文件名称一定要和工程名称保持一致,否则会报下面的错误:我们添加verilog文件并写测试代码如下:module名一定要和文件名保持一致这里我们就完成了设计输出代码。下面
2023-06-13 23:17:56 2724
原创 单片机按键软开关:1个引脚实现单片机低电量自己控制给自己断电
类似于手机的开机按键,我们希望在单片机电路上也能实现类似的低电量自动关机、通过按键而不是自锁开关来上电开机。
2023-06-08 15:21:33 2692 1
原创 ESP32学习:DSP之FFT
在STM32中,官方有DSP库用于数据处理。STM32的DSP库充分利用了单片机的FPU(浮点数计算单元),加速了数据处理的速度。虽然有一些不依赖特定平台的DSP算法库,但他们相比于专门对MCU进行优化过的DSP库来说,运算效率较低。
2023-06-03 11:33:31 3440 4
原创 STM32与ESP32下载器设计
我们常用的单片机主要有STM32和ESP32,其中STM32下载要求SWD下载接口,ESP32下载要求串口,但需要控制ESP32 IO0和EN口高低电平的时序。对于STM32,一般我们电路板上不会集成下载器。对于ESP32,我们电路板上也不会集成USB转TTL。因此,如果有一种下载器,与电路板上进行接线进行下载和调试,我们使用时就会很方便。
2023-05-26 11:53:47 5476
原创 VLC可见光通信:2、高速LED驱动电路
在VLC可见光通信中,需要高速的控制LED的通断,因此需要高速LED驱动电路。文中出现的低压是指24V电压以下,中压是指24V~60V电压,高压是指60V ~ 160V。低速是指500KHZ以下,高速是指2MHZ。小功率是指20W以下,大功率指20W~100W。
2023-05-17 18:05:36 1417 1
物联网MQTT在ESP32上实现连接的工程代码
2022-03-17
基于ZigBee自组网技术的红外相机系统在野外动物调查研究中的应用.zip
2021-11-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人