- 博客(56)
- 资源 (2)
- 收藏
- 关注
原创 esp32 JTAG 串口 bootload升级
如果使用JTAG 串口结合Ymodem 协议实现 ESP32 的固件升级,整体逻辑将围绕通过串口传输固件文件并将其烧录到指定的 Flash 分区。以下是完整的实现步骤和代码说明。
2024-11-23 13:27:42 383
原创 Ymodem文件传输协议
YMODEM是一种经典的文件传输协议,由在XMODEM的基础上改进而来。它广泛用于嵌入式系统中的固件升级、文件传输等场景。相比XMODEMYMODEM支持更大的数据块、批量文件传输以及额外的元数据信息。在本文中,我们将深入分析YMODEM协议的工作原理,并分享一个简要实现的思路。基于帧的数据传输:YMODEM 使用数据帧进行通信,每帧包含头部、数据块和校验码。支持大数据块:每帧可传输 128 或 1024 字节的数据,传输效率比 XMODEM 更高。批量文件传输。
2024-11-23 13:25:31 2091 1
原创 香橙派OrangePi AI Pro测评部署车牌号识别项目
随着智能交通系统的不断发展,车牌号识别技术在交通管理和车辆监控中发挥着越来越重要的作用。香橙派 AIpro开发板作为一款高性能嵌入式AI平台,以其强大的计算能力和丰富的接口,成为了车牌号识别项目的理想选择。在本篇测评中,我们将详细介绍如何使用香橙派 AIpro 开发板进行车牌号识别,并探讨其在实际应用中的表现。香橙派 AIpro 开发板搭载了高效的处理器和AI加速单元,能够快速处理图像数据识别车牌号信息。其紧凑设计和低功耗特性使其非常适合部署在实际交通监控系统中。通过这次测评,我们希望展示。
2024-07-14 03:36:40 1186
原创 STM32Cubemx配置生成 Keil AC6支持代码
使用keil的时候,编译一个大项目,所花的时间太长了,如果是小项目那就没有什么差别。的编译速度会比AC5快5倍以上。现在记录一下所配置的过程。
2024-07-09 16:15:10 1552 1
原创 keil mdk注释插件合集格式、时间、日期注释
在软件开发过程中,注释起着至关重要的作用。良好的注释不仅能提高代码的可读性和维护性,还能促进团队协作和知识传递。通过清晰、简洁的注释,开发者能够更容易地理解代码的逻辑、目的和实现细节,从而减少沟通成本和错误的发生。本篇文章将深入探讨注释的最佳实践,包括如何编写高质量的注释、常见的注释类型以及注释工具的使用,以帮助开发者更好地管理和维护代码。
2024-07-09 16:04:57 1601 1
原创 CodeBlocks官方主题颜色更换及方法
Codeblocks 默认的主题编写代码,很费劲,记录一下重新设置更换主题的方法。官网的主题进去太慢,好久都刷新不出来。国内下载地址在文章尾部。
2024-06-05 11:16:00 2021
原创 Source Insight 4.0安装和使用
Source Insight 4.0 是每个软件工程师应该都有的软件,在这里记录一下的安装过程和新建工程的方法。
2024-06-05 10:36:52 1667
原创 U8G2移植到STM32,SSD13XXXOLED(硬件SPI DMA通讯)
在嵌入式开发中,显示屏是常见的外设之一。OLED屏幕因其高对比度和低功耗,被广泛应用于各种嵌入式系统中。本文将详细介绍如何在STM32平台上使用SPI DMA方式移植U8G2库到屏幕。
2024-05-28 13:18:39 1888
原创 移植按键框架(MultiButton )到STM32 并使用
MultiButton,一个小巧简单易用的事件驱动型按键驱动模块,作者 0x1abin,目前收获 222 个star,遵循 MIT 开源许可。这个项目非常精简,只有两个文件,可无限量扩展按键,按键事件的回调异步处理方式可以简化程序结构,去除冗余的按键处理硬编码,让你的按键业务逻辑更清晰。
2024-05-28 13:12:37 1829
原创 17、FreeRTOS 资源管理(Resource Management)
在前面讲解互斥量时,引入过临界资源的概念。在前面课程里,已经实现了临界资源的互斥访问。本章节的内容比较少,只是引入两个功能:屏蔽/使能中断、暂停/恢复调度器。如果有别的任务来跟你竞争临界资源,你可以把中断关掉:这当然可以禁止别的任务运行,但是这代价 太大了。它会影响到中断的处理。如果只是禁止别的任务来跟你竞争,不需要关中断,暂停调度器就可以了:在这期间,中断还是可以发 生、处理。的,它的内部会记录嵌套的 深度,只有嵌套深度变为。的,它的内部会记 录嵌套的深度,只有嵌套深度变为。
2024-05-14 18:42:16 648
原创 16、FreeRTOS 中断管理(Interrupt Management)
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
2024-05-14 18:41:28 926
原创 11、FreeRTOS 队列、队列集,邮箱的使用
这也意味着,如果队列中没有数据,那么"偷看"时会导致阻塞;既然写队列的任务个数没有限制,那么当多个任务写"满队列"时,这些任务都会进入阻塞状态:有多个。可以把数据写到队列头部,也可以写到尾部,这些函数有两个版本:在任务中使用、在ISR中使用。某个任务读队列时,如果队列没有数据,则该任务可以进入阻塞状态:还可以指定阻塞的时间。既然读取队列的任务个数没有限制,那么当多个任务读取空队列时,这些任务都会进入阻塞状态:有多。跟读队列类似,一个任务要写队列时,如果队列满了,该任务也可以进入阻塞状态:还可以指定阻塞的。
2024-05-13 15:53:06 2770
原创 10、FreeRTOS 同步和互斥
经理B必须等同事A完 成报表,AB之间有依赖,B必须放慢脚步,被称为同步。在团队活动中,同事A已经使用会议室了,经 理B也想使用,即使经理B是领导,他也得等着,这就叫互斥。如果A、B同时使用串口,那么打印出来的信息就是A、B混杂,无法分辨。所以使用串口时, 应该是这样:A用完,B再用;B慢了一步,于是就眯一会;在这个过程中,A、B是互斥地访问“厕所”,“厕所”被称之为临界资源。就是:哎哎哎,我正在用厕所,你不能进来。一句话理解同步与互斥:我等你用完厕所,我再用厕所。就是:哎哎哎,我正在用厕所,你等会。
2024-05-13 15:43:54 907
原创 9、FreeRTOS 配置调度算法
调度算法的行为主要体现在两方面:高优先级的任务先运行、同优先级的就绪态任务如何被选中。调度 算法要确保同优先级的就绪态任务,能"轮流"运行,策略是。,它是一个高级选项,用于关闭Tick中断来实现省电, 后续单独讲解。轮 转调度并不保证任务的运行时间是公平分配的,我们还可以细化时间的分配方法。所谓调度算法,就是怎么确定哪个就绪态的任务可以切换为运行状态。),高优先级的就绪任务马上执行,下面再细化。不可以:不能抢就只能协商了,被称作"可以:被称作"可抢占调度"(,先不使用这个功能。
2024-05-13 15:39:07 240
原创 15、FreeRTOS 软件定时器
简单可以理解为闹钟,到达指定一段时间后,就会响铃。STM32芯片自带硬件定时器,精度较高,达到定时时间后会触发中断,也可以生成PWM 、输入捕获、输出 比较,等等,功能强大,但是由于硬件的限制,个数有限。软件定时器也可以实现定时功能,达到定时时间后可调用回调函数,可以在回调函数里处理信息。你可以设置闹钟在30分钟后让你起床工作每隔1小时让你例行检查机器运行情况软件定时器也可以完成两类事情在"未来"某个时间点,运行函数周期性地运行函数日常生活中我们可以定无数个"闹钟",这无数的"闹钟"
2024-05-13 14:05:36 793
原创 14、FreeRTOS 任务通知
FreeRTOS 从版本 V8.2.0 开始提供任务通知这个功能,每个任务都有一个 32 位的通知值。按照 FreeRTOS 官方的说法,使用消息通知比通过二进制信号量方式解除阻塞任务快 45%, 并且更加省内存(无需创建队 列)。在大多数情况下,任务通知可以替代二值信号量、计数信号量、事件标志组,可以替代长度为 1 的队列(可 以保存一个 32 位整数或指针值),并且任务通知速度更快、使用的RAM更少!
2024-05-13 13:57:44 850
原创 13、FreeRTOS 事件标志组
事件标志位:表明某个事件是否发生,联想:全局变量 flag。通常按位表示,每一个位表示一个事件(高8位 不算)事件标志组是一组事件标志位的集合, 可以简单的理解事件标志组,就是一个整数。事件标志组本质是一个16 位或32 位无符号的数据类型,由决定。虽然使用了32位无符号的数据类型变量来存储事件标志,但其中的高8位用作存储事件标志组的控制信息, 低 24 位用作存储事件标志 ,所以说一个事件组最多可以存储 24 个事件标志!
2024-05-11 16:45:14 718
原创 12、FreeRTOS信号量(semaphore)
信号量(Semaphore),是在多任务环境下使用的一种机制,是可以用来保证两个或多个关键代码段不被并发调用。信号量这个名字,我们可以把它拆分来看,信号可以起到通知信号的作用,然后我们的量还可以用来表示资源的数量,当我们的量只有0和1的时候,它就可以被称作二值信号量,只有两个状态,当我们的那个量没有限制的时候,它就可以被称作为计数型信号量。信号量也是队列的一种二值信号量其实就是一个长度为1,大小为零的队列,只有0和1两种状态,通常情况下,我们用它来进行互斥访问或任务同步。互斥访问。
2024-05-11 16:41:44 1292
原创 WSL(Ubuntu)、PC物理机,linux开发板三个设备通讯,镜像模式
最近在使用Linux开发板的环境下,由于使用的WSL的子系统,并不是虚拟机,导致网络传输这方面不是很方便,由于WSL只有一个网卡,也就是说要么net要么桥接,如果作为桥接到开发板,那么WSL就不能上网了,如果作为net那么就不能个开发板通讯了,一般情况下都是需要三个设备能相互ping。这样才不会在开发的过程中出现问题。在Windows11 23 H2 版本,Windows11更新了 WSL 的网络连接方法:镜像模式什么是镜像模式?
2024-04-19 01:41:40 1702
原创 Windows ESP32S3的JTAG调试
最近有小伙伴使用的是windows开发的esp32,在开发过程中,在使用esp32-s3仿真调试的时候,由于环境问题,一直打开openocd错误,导致没有办法使用,这里记录一下过程。
2024-04-19 01:11:54 3021 4
原创 WSL(ubuntu)安装串口工具vofa+,软件中文乱码
最近在使用WSL开发ESP32的时候,经常会使用到串口,但是每次都是在WSL(ubuntu)里面编译代码,下载代码,又要把USB设备切到WINDWOS很麻烦。所以就找了一个解决方案,在Ubuntu里面安装串口工具(Vofa+)已经中途遇到的问题。
2024-04-16 16:32:25 1491
原创 ESP32S3在wsl环境的JTAG、openocd仿真调试
保存退出、注销并登录,然后重启电路板的电源以使更改生效。:修改成ESP-IDF的安装目录。在最后一行添加环境变量。启动成功、图标会变绿色。
2024-04-16 16:20:42 1373
原创 ESP-IDF移植lvgl 驱动 ST7789
本教程开始学习LVGL的,开始之前要把环境配置好,首先就需要移植lvgl,使用的是esp32环境,使用的 LCD驱动IC是ST7789,没有使用到触摸屏。
2024-04-14 04:21:23 2896 2
原创 Vscode函数注释、文件注释格式化文档
使用VScode进行ESP32编程的时候,发现函数注释,文件注释。这些比较麻烦,作为一个软件工程师,你的代码里面必须有比较重要的注释,所以需要使用一些方法来解决这个问题。
2024-03-28 14:43:14 2703
原创 FlashDB移植到STM32F103内部flash,FatFs、FlashDB 、EasyFlash的不同
最近项目用到了,Flash的存储,早就听过armink 大神开源的EsayFlash,于是乎就决定移植到新的项目上,发现 EasyFlash 升级到了 5.0.0 版本后因 API 接口与之前不完全兼容,故重新命名为 FlashDB,有很多种框架,FatFsFlashDBEasyFlash等等。最终这个项目选择了FLASHDB,因为FlashDB的查询比EasyFlash快FatFs是针对大文件系统的那种项目。下面简单说一下FlashDB的移植。还有这三个的区别和使用环境。
2024-03-28 14:21:55 5495
原创 WSL2 Ubuntu装ESP-IDF以及USB使用
小编一开始是使用开发ESP的芯片,但是espidf在环境下的编译速度是真的慢,想使用的环境,又不想使用装虚拟机,觉得虚拟机太麻烦了。就想到了WSL微软的子系统,介绍一下怎么在事先需要准备,可以看看小编前面的几篇文章又详细的说到。
2024-03-26 00:14:52 1173
原创 WSL2 设置桥接模式
使用wsl的过程中,会出现WSL的IP地址找不到,或者无法和计算机通讯,搞嵌入式的话,还需要外界的开发板本机WSL的Ubuntu系统需要在同一个网段进行通讯,很多同学用的都是VM虚拟机,但是这个虚拟机很不方便,特别是对于文件管理。所以经过我一个星期的研究,找到了一个比较好的方法,把WSL的网卡桥接到自己的物理网卡当中,并且当中遇到了很多问题,还有对应的解决方案!网上看了很多方法,综合整理一下自己认为比较优比较简便的方法。
2024-03-26 00:08:24 7649 11
原创 VS code配置Markdown以及预览
如果尚未安装,请先下载并安装它。您可以从官方网站(https://code.visualstudio.com/)下载适用于您的操作系统的版本。
2024-03-25 09:46:24 3315
原创 Typora简单环境配置,修改图片路径
我们在本地使用Typora时,插入图片路径往往默认为自身本地路径(含本身电脑根目录),而将.md文件发给其他人时,在其他电脑打开,由于绝对路径问题,无法加载图片,同时在转换word文件有丢图现象。。 故应该进行相应的设置。
2024-03-25 09:44:35 3133
原创 windows10装windows11的CMD(Terminal)终端
我装了WSL的LINUX系统,在windows10系统下面不方便启动linux,但是Windows11在cmd里面就可以打开,所以找了这个方法。
2024-03-21 13:00:15 1740
原创 WSL2安装Ubuntu迁移到其他盘或者其他电脑
网络上很多教程都说了WSL的迁移和安装 ,但是在使用过程中,我会用到其他的电脑,在其他电脑的时候,很多方法都不使用,后面自己就在这里研究了这个方法。可以在其他的电脑同样可以适用。
2024-03-21 12:57:56 5221 4
原创 群晖Docker安装GitLab
external_url ‘http://lanweixia.synology.me’ 这种情况访问页面的时候加上端口没问题,但是会导致http的克隆地址没有端口。external_url ‘http://lanweixia.synology.me:8000’ 加端口的话,又会导致页面访问不了,Gitlab也一直处于启动状态。 完成以后修改docke—>gitlab—>config---->gitlab.rb。就是上面改的端口(docker的端口)首次进入,会设置密码,这个密码就是用户名。
2024-01-26 19:48:20 6517
原创 8、FreeRTOS 回调函数和钩子函数的区别
形式上确实可以认为钩子函数也是一种回调函数,不过这样没有什么意义,但是你发现没有,钩子函数的运行指针或者运行函数不是你定义的。钩子函数和回调函数都是编程中常用的概念,它们在实现某些特定功能时都非常有用,但它们的用途和作用方式是不同的。在freertos里面的钩子函数,里面的钩子函数是在系统到达一个条件过程中调用。是在某个程序执行过程中自动调用的函数,通常是在某个特定事件发生时执行。还是要从函数的功能上区分,回调函数更多的是。是在特定条件下由程序员自己调用的函数,通常是在异步编程中使用。
2024-01-18 22:49:47 1041
原创 嵌入式软件分层的思想
如果系统规模较大、复杂度高、需要高可维护性和可扩展性,分层架构是一个不错的选择;但如果系统规模较小、复杂度低、对性能要求较高,可能会更适合采用非分层架。,表示在设计和开发软件系统时,应该使模块之间的关系更加紧密,同时避免模块之间的依赖性过于紧密,以便更好地实现系统的可维护性,可扩展性和可重用性。我需要获取一个ds18B20的数据然后上传到阿里云,使用的是。如果需要响应度很快的话,那么最少有三层。因此,在选择是否采用嵌入式分层架构时,这样的话,系统的开销就小了。
2024-01-18 15:59:42 1515
原创 int 和 long int ,long long的区别
在C语言和C++中,int 和 long 的大小是由编译器和操作系统的组合决定的,而不是直接取决于操作系统的位数。在通常的情况下,int 表示整数,而 long 表示较大的整数。在32位系统上,int 通常是32位,而 long 通常也是32位。在64位系统上,int 通常是32位,而 long 通常是64位。
2024-01-17 09:41:50 5895
原创 嵌入式C/C++命名规范
函数声明和定义的返回类型和函数名在同一行;函数参数列表超出行宽时要换行并合理对齐在声明和定义函数的时候,函数的返回值类型应该和函数名在同一行;如果行宽度允许,函数参数也应该放在一行;否则,函数参数应该换行,并进行合理对齐。参数列表的左圆括号总是和函数名在同一行,不要单独一行;右圆括号总是跟随最后一个参数。ReturnType FunctionName(ArgType paramName1, ArgType paramName2) // Good:全在同一行...
2024-01-17 09:40:33 1402
原创 嵌入式十一种常用滤波算法
滤波(Filtering)是信号处理和图像处理中常用的一种技术,用于去除信号中的噪声、平滑信号或突出信号中的某些特征。滤波算法可以应用于多个领域,包括信号处理、图像处理、音频处理等。
2024-01-15 13:52:02 2155
原创 嵌入式C语言使用低通滤波、高通滤波、互补滤波算法
一般的互补公式用在六轴传感器的数据融合,其他的行业和领域现在还没有涉及到,这里只说六轴传感器的融合。以后遇到融合的话,可以直接用。
2024-01-15 12:01:10 10829 7
keil tools 注释工具包 含脚本
2024-07-09
移植按键框架(MultiButton )到STM32 并使用
2024-05-28
u8g2移植到STM32单片机上,使用硬件SPI,DMA传输 刷新率加快
2024-05-27
Stm32FlashDb.zip
2024-03-28
这个我WSL Ubuntu20.04的启动文件
2024-03-21
hal库 FreeRTOS移植模板Hal库不需要另外加定时器维护,使用systemTick,里面有基于操作系统的us级延时
2022-07-31
串口Freertos移植过程
2022-07-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人