自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (2)
  • 收藏
  • 关注

原创 WSL(Ubuntu)、PC物理机,linux开发板三个设备通讯,镜像模式

最近在使用Linux开发板的环境下,由于使用的WSL的子系统,并不是虚拟机,导致网络传输这方面不是很方便,由于WSL只有一个网卡,也就是说要么net要么桥接,如果作为桥接到开发板,那么WSL就不能上网了,如果作为net那么就不能个开发板通讯了,一般情况下都是需要三个设备能相互ping。这样才不会在开发的过程中出现问题。在Windows11 23 H2 版本,Windows11更新了 WSL 的网络连接方法:镜像模式什么是镜像模式?

2024-04-19 01:41:40 844

原创 Windows ESP32S3的JTAG调试

最近有小伙伴使用的是windows开发的esp32,在开发过程中,在使用esp32-s3仿真调试的时候,由于环境问题,一直打开openocd错误,导致没有办法使用,这里记录一下过程。

2024-04-19 01:11:54 766

原创 WSL(ubuntu)安装串口工具vofa+,软件中文乱码

最近在使用WSL开发ESP32的时候,经常会使用到串口,但是每次都是在WSL(ubuntu)里面编译代码,下载代码,又要把USB设备切到WINDWOS很麻烦。所以就找了一个解决方案,在Ubuntu里面安装串口工具(Vofa+)已经中途遇到的问题。

2024-04-16 16:32:25 635

原创 ESP32S3在wsl环境的JTAG、openocd仿真调试

保存退出、注销并登录,然后重启电路板的电源以使更改生效。:修改成ESP-IDF的安装目录。在最后一行添加环境变量。启动成功、图标会变绿色。

2024-04-16 16:20:42 379

原创 ESP-IDF移植lvgl 驱动 ST7789

本教程开始学习LVGL的,开始之前要把环境配置好,首先就需要移植lvgl,使用的是esp32环境,使用的 LCD驱动IC是ST7789,没有使用到触摸屏。

2024-04-14 04:21:23 1133

原创 2024激活最新版本Typora

实测可用日期为:2024-02-11目前最新版本 1.8.10.0 也是可以实现激活的。

2024-04-14 04:18:50 935

原创 Vscode函数注释、文件注释格式化文档

使用VScode进行ESP32编程的时候,发现函数注释,文件注释。这些比较麻烦,作为一个软件工程师,你的代码里面必须有比较重要的注释,所以需要使用一些方法来解决这个问题。

2024-03-28 14:43:14 796

原创 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 1056

原创 WSL2 Ubuntu装ESP-IDF以及USB使用

小编一开始是使用开发ESP的芯片,但是espidf在环境下的编译速度是真的慢,想使用的环境,又不想使用装虚拟机,觉得虚拟机太麻烦了。就想到了WSL微软的子系统,介绍一下怎么在事先需要准备,可以看看小编前面的几篇文章又详细的说到。

2024-03-26 00:14:52 719

原创 WSL2 设置桥接模式

​ 使用wsl的过程中,会出现WSL的IP地址找不到,或者无法和计算机通讯,搞嵌入式的话,还需要外界的开发板本机WSL的Ubuntu系统需要在同一个网段进行通讯,很多同学用的都是VM虚拟机,但是这个虚拟机很不方便,特别是对于文件管理。所以经过我一个星期的研究,找到了一个比较好的方法,把WSL的网卡桥接到自己的物理网卡当中,并且当中遇到了很多问题,还有对应的解决方案!网上看了很多方法,综合整理一下自己认为比较优比较简便的方法。

2024-03-26 00:08:24 1130 2

原创 VS code配置Markdown以及预览

如果尚未安装,请先下载并安装它。您可以从官方网站(https://code.visualstudio.com/)下载适用于您的操作系统的版本。

2024-03-25 09:46:24 827

原创 Typora简单环境配置,修改图片路径

​ 我们在本地使用Typora时,插入图片路径往往默认为自身本地路径(含本身电脑根目录),而将.md文件发给其他人时,在其他电脑打开,由于绝对路径问题,无法加载图片,同时在转换word文件有丢图现象。。​ 故应该进行相应的设置。

2024-03-25 09:44:35 450

原创 windows10装windows11的CMD(Terminal)终端

我装了WSL的LINUX系统,在windows10系统下面不方便启动linux,但是Windows11在cmd里面就可以打开,所以找了这个方法。

2024-03-21 13:00:15 339

原创 WSL2安装Ubuntu迁移到其他盘或者其他电脑

网络上很多教程都说了WSL的迁移和安装 ,但是在使用过程中,我会用到其他的电脑,在其他电脑的时候,很多方法都不使用,后面自己就在这里研究了这个方法。可以在其他的电脑同样可以适用。

2024-03-21 12:57:56 1336

原创 Git的使用

所有的git管理工具都是一样的操作方式,这里以GitLab作为演示。

2024-01-26 19:53:35 313

原创 群晖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 1656

原创 回调函数和钩子函数的区别

形式上确实可以认为钩子函数也是一种回调函数,不过这样没有什么意义,但是你发现没有,钩子函数的运行指针或者运行函数不是你定义的。钩子函数和回调函数都是编程中常用的概念,它们在实现某些特定功能时都非常有用,但它们的用途和作用方式是不同的。在freertos里面的钩子函数,里面的钩子函数是在系统到达一个条件过程中调用。是在某个程序执行过程中自动调用的函数,通常是在某个特定事件发生时执行。还是要从函数的功能上区分,回调函数更多的是。是在特定条件下由程序员自己调用的函数,通常是在异步编程中使用。

2024-01-18 22:49:47 526

原创 嵌入式软件分层的思想

如果系统规模较大、复杂度高、需要高可维护性和可扩展性,分层架构是一个不错的选择;但如果系统规模较小、复杂度低、对性能要求较高,可能会更适合采用非分层架。,表示在设计和开发软件系统时,应该使模块之间的关系更加紧密,同时避免模块之间的依赖性过于紧密,以便更好地实现系统的可维护性,可扩展性和可重用性。我需要获取一个ds18B20的数据然后上传到阿里云,使用的是。如果需要响应度很快的话,那么最少有三层。因此,在选择是否采用嵌入式分层架构时,这样的话,系统的开销就小了。

2024-01-18 15:59:42 972

原创 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 533

原创 嵌入式C/C++命名规范

函数声明和定义的返回类型和函数名在同一行;函数参数列表超出行宽时要换行并合理对齐在声明和定义函数的时候,函数的返回值类型应该和函数名在同一行;如果行宽度允许,函数参数也应该放在一行;否则,函数参数应该换行,并进行合理对齐。参数列表的左圆括号总是和函数名在同一行,不要单独一行;右圆括号总是跟随最后一个参数。ReturnType FunctionName(ArgType paramName1, ArgType paramName2) // Good:全在同一行...

2024-01-17 09:40:33 846

原创 嵌入式十一种常用滤波算法

滤波(Filtering)是信号处理和图像处理中常用的一种技术,用于去除信号中的噪声、平滑信号或突出信号中的某些特征。滤波算法可以应用于多个领域,包括信号处理、图像处理、音频处理等。

2024-01-15 13:52:02 1245

原创 嵌入式C语言使用低通滤波、高通滤波、互补滤波算法

一般的互补公式用在六轴传感器的数据融合,其他的行业和领域现在还没有涉及到,这里只说六轴传感器的融合。以后遇到融合的话,可以直接用。

2024-01-15 12:01:10 2544

原创 PID算法(2) PID算法的应用

PID,就是比例(proportional)、积分(integral)、微分(derivative),是一种很常见的控制算法,常见的PID算法有位置PID、增量PID、串级PID等待。

2024-01-04 11:04:38 765 1

原创 PID算法(1) PID算法的原理推导

误差的微分就是误差的变化速率,误差变化越快,其微分绝对值越大。控制器输出量的微分部分与误差的微分成正比,反映了被控量变化的趋势。如果我们的采样时间是固定的话,$K_i d_t$ 可以整合在一起,$K_i \frac{1}{dt}$也可以整合在一起,可以整合成以下公式。红色线为上述例子中从初始位置到目标位置的偏差变化,两者为互补的关系;这里都是连续的表达式,我们要转成离散的表达式,离散的方式方便代码的实现。微分:偏差的变化率,反馈当前的变化速率的控制。

2024-01-04 10:29:27 1265

原创 PID算法(1) PID算法的原理推导1

误差的微分就是误差的变化速率,误差变化越快,其微分绝对值越大。控制器输出量的微分部分与误差的微分成正比,反映了被控量变化的趋势。PID 控制器以各种形式使用超过了 1 世纪,广泛应用在机械设备、气动设备 和电子设备.在工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法。这里都是连续的表达式,我们要转成离散的表达式,离散的方式方便代码的实现。代表控制积分时间常数,用于控制积分项的响应速度,影响着积分项对系统误差的累积速度。微分:偏差的变化率,反馈当前的变化速率的控制。

2023-12-26 12:00:44 1477 2

原创 7、vTaskDelay()和vTaskDelayUntil()

FreeRTOS提供了两个系统延时函数:相对延时函数vTaskDelay()和绝对延时vTaskDelayUntil()。这两个延时函数和自己实现的延时函数不同,这两个延时函数一旦被调用,当前任务会立马进入阻塞状态,而自己写的延时函数(以for循环等形式实现的软件延时)会被当做有效任务而一直执行。相对延时是指每次延时都是从任务执行函数vTaskDelay()开始,延时指定的时间结束;绝对延时是指每隔指定的时间,执行一次调用vTaskDelayUntil()函数的任务。换句话说:任务以固定的频率执行。...

2022-08-29 22:09:23 1929 1

原创 6、FreeRTOS任务状态

Suspended: 挂起态Ready: 就绪态Blocked: 阻塞态runnnig: 运行态。

2022-08-29 06:05:52 383

原创 5、FreeRTOS任务的创建和删除

可以看出这两个函数很简单,用户定义静态的任务堆栈和任务控制块内存,然后将这些内存传递给函数参数。最后创建空闲任务和定时器服务任务的 API 函数会调用vApplicationGetIdleTaskMemory()和 vApplicationGetTimerTaskMemory()来获取这些内存。此函数也是用来创建任务的, 只不过此函数要求 所使用的 MCU有 MPU(内存保护单元 内存保护单元 ), 用此函数创建的任务会受到 MPU的保护。创建任务1:任务1的大循环里,创建任务2,然后休眠一段时间。....

2022-08-05 16:49:18 2914

原创 4、认识一下堆和栈

因为FreeRTOS对堆和栈的理解很重要,所以学习Freertos,先简单了解一下内存的存储方式,堆和栈是最重要的们主要是那个返回地址!!!!

2022-08-02 01:25:27 292

原创 3、FreeRTOS移植模板优化测试 System作为hal库维护时钟,us延时

我在移植FreeRTOS操作系统的时候,hal库的维护需要一个定时器,如果需要us级的定时器,那么又需要一个定时器,一共就需要三个定时器,这样很浪费单片机的资源,原子哥的方法很实用,一个Systick就解决了!上节,已经移植了成功了一个简单的模板,那么今天来优化一下,那么我们重新移植一下,同样使用原子哥的串口例程。............

2022-07-31 18:00:21 1238

原创 2、FreeRTOS移植

本文是基于FreeRTOS操作系统的移植,使用到的芯片是平台上,移植环境使用的是MDK5.32版本,首先要准备一个裸机工程源码,我这里随便选择了一个正点原子探索者的串口例程,选择的是hal库,其实标准库也是一样的。为什么我一定要手动移植呢,如果用生成的话,达不到学习的效果,里面什么都配置好了,对学习的帮助很少,所以才会复习的时候选择自己手动移植。.........

2022-07-27 17:33:31 1194

原创 1、FreeRTOS认识

FreeRTOS是用C和汇编来写的,其中绝大部分都是用C语言编写的,只有极少数的与处理器密切相关的部分代码才是用汇编写的,FreeRTOS结构简洁,可读性很强!​在实时操作系统中,我们可以把要实现的功能划分为多个任务,每个任务负责实现其中的一部分,每个任务都是一个很简单的程序,通常是一个死循环。就是轮询系统的pro版本,在程序的大循环(轮询方式)中加入了中断,而中断就是前台,主程序中的循环就是后台。当任务正在运行,此时的状态被称为运行态,即CPU的使用权被这个任务占用;...

2022-07-27 17:24:52 671

原创 Typora+阿里云OSS实现图片自动上传(不需要安装软件)

​在做笔记的时间,用typora复制、插入图片的时间,在其他电脑就看不到了。说实话真的是一个硬伤,比不上其他的笔记软件,不过其他软件对md格式的文档兼容性都不高。各有各的好把,下面进入主题。......

2022-07-21 14:18:00 767 3

原创 WS2 安装ubuntu +迁移+vscode

microsoftstore下载windowsterminal(win11需要先卸载再安装,原因是自带的版本太低,设置界面直接没了)控制面板>程序>启用或关闭Windows功能>适用于Linux的Windows子系统。从开始菜单找到并打开设置,打开开发者模式。在解压目录打开PowerShell。...

2022-07-21 01:06:37 729

原创 51单片机使用sprintf和printf

srpintf()函数的功能非常强大:效率比一些字符串操作函数要高;而且更具灵活性;可以将想要的结果输出到指定的字符串中,也可作为缓冲区,而printf只能输出到命令行上~头文件:stdio.h函数功能:格式化字符串,将格式化的数据写入字符串中。函数原型:int sprintf(char *buffer, const char *format, [argument]…)函数返回值:buffer指向的字符串的长度;注意:这里一定要强转为int类型原因:可能是8位的系统和32位的系统存储方式不一样,

2022-06-06 23:25:33 49393 3

原创 六轴传感器+卡尔曼滤波+一阶低通滤波

  直立控制是通过角度与角速度反馈来进行的,所以角度与角速度的测量至关重要。本系统使用 MPU6050 作为姿态传感器,集成一个加速度传感器和一个陀螺仪,可以输出三轴的加速度与角速度。角速度的获取可以通过陀螺仪来直接读取,角度的获取可以有两种方法来测量:一是通过加速度计的加速度分量来计算,二是通过陀螺仪输出的角速度进行积分获得。  MPU6050 的坐标系定义如图1-1 。             当仅绕Y 轴旋转时也是同样的原理。当绕Z 轴旋转时,因为重力加速度固定为Z 轴方向,故在X 与Y 轴无加

2022-06-04 00:40:27 52450 10

原创 速度环+直立环+转向环

  车模平衡控制也是通过负反馈来实现的,与上面保持木棒直立比较则相对简单。因为车模有两个轮子着地,车体只会在轮子滚动的方向上发生倾斜。控制轮子转动,抵消在一个维度上倾斜的趋势便可以保持车体平衡了 分析:  Mechanical_balance一般取0,因为想要小车平衡,期望值的角度就是0°,用小车的俯仰角来作为反馈,让小车保持在0°周围。角速度的积分等于角度、那么角度的微分就是角速度 使用PD调节E(k)            =      Bias(E(k) - E(k-1))     

2022-06-03 19:31:11 58044 17

原创 PID算法详解

PID算法是一种具有预见性的控制算法,其核心思想是:1>. PID算法不但考虑控制对象的当前状态值(现在状态),而且还考虑控制对象过去一段时间的状态值(历史状态)和最近一段时间的状态值变化(预期),由这3方面共同决定当前的输出控制信号;2>.PID控制算法的运算结果是一个数,利用这个数来控制被控对象在多种工作状态(比如加热器的多种功率,阀门的多种开度等)工作,一般输出形式为PWM,基本上满足了按需输出控制信号,根据情况随时改变输出的目的。比例控制是一种最简单的控制方式。其控制器的输出与输入误差信号成比例

2022-06-02 23:10:37 56305

Stm32FlashDb.zip

基于STM32F103VET6移植的FLashDB文件框架,教程:https://blog.csdn.net/mayuxin1314/article/details/137110576

2024-03-28

WSL2 Ubuntu装ESP-IDF以及USB使用

WSL usb连接工具

2024-03-26

这个我WSL Ubuntu20.04的启动文件

资源教程是在 https://blog.csdn.net/mayuxin1314/article/details/136905130

2024-03-21

hal库 FreeRTOS移植模板Hal库不需要另外加定时器维护,使用systemTick,里面有基于操作系统的us级延时

一个定时器实现 FreeRTOS时钟,us函数,HAL库维护 教程 https://blog.csdn.net/mayuxin1314/article/details/126088521

2022-07-31

串口Freertos移植过程

Freertos移植过程 教程 https://blog.csdn.net/mayuxin1314/article/details/126019667

2022-07-27

空空如也

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

TA关注的人

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