自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (1)
  • 收藏
  • 关注

原创 三步安装Vmvare tools

网上有一大堆的Vmvare tools 安装教程,特别是Vmvare自带的,在虚拟机内部通过解压工具安装的方式,但有时候会出现各种奇怪的问题,我这次就出现解压的时候表示空间不足,但我的虚拟机明明还有很多空间。本次安装环境基于Ubuntu 22.04.5 LTS。

2025-03-19 09:25:09 203

原创 Ubuntu开启FTP与SSH服务

在配置开发环境时,这两个配置感觉是最有用的,开启FTP服务可以将远程linux上的文件映射到Windows上,不管是使用虚拟机还是嵌入式linux设备,特别在开发写代码的时候,映射到Windows上使用VS code打开编写比在linux上编写舒服太多了,而开启SSH服务可以直接输入命令,便于程序运行。

2024-11-04 17:12:10 987

原创 linux Ubuntu系统关闭开机密码

特别注意,一定是用管理员权限打开,不要使用chmod修改文件权限,这个文件是sudo命令的依赖文件,修改后只能进入管理员权限才能改回来,但无法使用sudo命令就没法进入管理员权限。虽然可以通过recover的方式进入root,但我的是嵌入式系统,没法进入,手贱修改了权限,只能再次刷机了。2. 将所有的 ALL=(ALL:ALL) ALL改为ALL=(ALL:ALL) NOPASSWD:ALL。由于使用的嵌入式系统,最好上电直接开机可以运行程序,不要再输入开机密码,所以取消开机密码是必要的。

2024-11-02 09:00:00 1214

原创 Ubuntu最简单安装OpenCV

当然,这个只能安装这个发行的版本,如果是需要特定版本要求,那还是老老实实下代码安装吧。

2024-11-01 09:43:56 263

原创 ubuntu使用ifconfig出现lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536

【代码】ubuntu使用ifconfig出现lo: flags=73 mtu 65536。

2024-10-31 09:43:00 384

原创 linux安装cmake报错

不是直接在后面添加–ckassic,需要更改命令为:sudo snap install cmake --classic。在安装OpenCV环境的时候需要使用cmake编译,

2024-10-18 09:46:12 481

原创 6N137S1取反电路图

在硬件电路设计中需要用到隔离电路,但此引脚输出为WS2812的信号,频率有840khz,所以需要使用逻辑光耦,选用6N137S1光耦,速率能达到10Mhz,能满足电路要求。特点速度:10Mbit/sec 5 V CMOS 低压交流和直流可以直接应用于输出和输入,其性能将根据两种电流的温度进行测量。自带5mA电流工作 输出始终处于逻辑状态,高电平和低电平。6N137 是 CMR 的选择,具有高共模瞬态抗扰度。可用于 DIP 和SMD 等多种封装,可以与任何电路一起使用。

2024-10-11 09:37:53 789

原创 ESP32驱动WS2812

WS2812是一种可编程的LED灯,使用RGB三个通道,可以显示2^24种颜色,而且自带控制芯片,便于控制。数据从DIN进入第一个灯珠时,第一个灯珠会锁存第一个24位数据,然后剩下的数据会从灯珠DOUT引脚输出到下一个灯珠的输入端,依此类推,可达到单总线控制多个灯珠的目的。

2024-10-10 10:33:11 1900

原创 Harmony鸿蒙OS中系统SYS_BEGIN与SYS_END定义

指针能够指向函数的开始与结束地址,归功于函数在内存中的地址特性,结合外部全局变量的定义,使得对一组初始化函数的管理和调用变得有效。在C语言中,函数和数组的名称都可以被视为常量指针,这意味着它们可以被用作指向它们在内存中起始地址的指针。函数的存储:在编译过程中,函数的代码被加载到内存中,编译器会为每个函数分配一个特定的内存地址。这段代码是用来定义两个宏 SYS_BEGIN 和 SYS_END,它们用于获取系统初始化调用的开始和结束位置。##name##_end 的全局变量的地址,表示初始化调用的结束位置。

2024-10-09 09:10:18 922

原创 STM8S003F读写内存数据

本次使用STM8S003F芯片,编译环境为IAR,至于新建工程什么的教程很多,这里就不多叙述了。本次需要往内存存储数据,STM8S003F有128bytes EEPROM存储数据。

2024-10-08 09:26:06 543

原创 STM8S003F定时器延时

本次使用STM8S003F芯片,编译环境为IAR,至于新建工程什么的教程很多,这里就不多叙述了。其实官方例程里是有定时器延时的,使用定时器4固定频率,在中断里运行,就可以像系统一样按毫秒延时。

2024-09-30 17:09:28 392

原创 STM8S003F串口发送接收

本次使用STM8S003F芯片,编译环境为IAR,至于新建工程什么的教程很多,这里就不多叙述了。

2024-09-30 16:49:23 695

原创 关于ESP32下载的几个小问题

在使用esp32的时候,下载遇到了这么几个小问题,写一下解决方法。

2024-05-08 16:10:32 2474

原创 VS code ESP-IDF 提示“loading ‘build.ninja‘: 系统找不到指定的文件” 的解决方案

那这样的话,我直接先清除下编译是不是也能行呢,意思就是文件的编译是之前的编译环境,自然找不到那个文件了,也就是ninja这个文件,但我查看我的安装里面是有这个程序的,那就是编译环境不一样,说干就干,果然清除完一次编译后直接就可以再次编译了。在网上找到一种方法就是将文件拷贝到之前新建的文件里面,确实是可以编译了。左边是不能编译的文件,右边是复制到新建的里面可以编译的文件,很明显的区别是多了一个编译的文件夹,但到底是什么不一样呢,我就使用对比软件对比了一下,

2024-05-07 15:05:46 7073 3

原创 Component ‘mscomm32.ocx‘ or one of its dependencies not correctlyregistered: a file is missing缺少DLL

在安装某个软件的时候,安装也是正常的,但是打开软件的时候会出现Component ‘mscomm32.ocx’ or one of its dependencies not correctlyregistered: a file is missing or invalid,从内容上看,是缺少某个文件导致的,也就是mscomm32.ocx,错误信息表明 mscomm32.ocx 组件或其依赖项没有正确注册,因为有一个文件缺失或不有效。确保下载的是正确的版本(32位或64位),并与您的操作系统兼容。

2024-05-06 14:53:25 2310 1

原创 杂谈-关于VS code Markdown插件不能显示视图

在其功能的激活事件里,突然看到只有当编程语言是Markdown时才会激活这个插件,于是注意到打开的默认语言是gcc-md,将编程语言改为Markdown即可。但是本来应该在右上角有预览页面的,却始终不能找到,重启重装都无法解决,网上也未查找到原因,特此记录。

2024-04-20 15:32:06 446

原创 雷龙NAND flash测试

大概样子就是上面这样,使用LGA-8封装,实际上驱动也是通用SD卡的驱动,相比与SD卡可以直接贴片到嵌入式设备中,并且体积更小,数据存储和SD卡存储一样。我使用的型号是CSNP1GCR01-AOW,不用写驱动程序自带坏块管理的NAND Flash(贴片式TF卡),尺寸小巧,简单易用,兼容性强,稳定可靠,固件可定制,LGA-8封装,标准SDIO接口,兼容SPI/SD接口,兼容各大MCU平台,可替代普通TF卡/SD卡,尺寸6x8mm毫米,内置SLC晶圆擦写寿命10万次,

2024-02-27 09:51:26 999 1

原创 正点原子高速无线下载器下载bin文件

有时候需要帮忙调试,直接下载写好代码的bin文件比较快,所以找到这个方式,关于keil如何生成bin文件可以看。关于正点原子的高速无线下载器可以去下载官方资料,里面有讲解,这里只是做个简单教程防止遗忘。

2023-12-12 14:15:43 1558

原创 keil生成bin文件(通用型)

按照上面的图,第一步点到user配置,在第二步的地方添加编译后动作:fromelf --bin!L --output rtthread.bin,其中这个rtthread.bin就是生成的文件,由于没有路径,所以会生成到和工程目录同一路径,名字可以自己修改。有些时候需要在keil里面生成bin文件,但找到的各种方式五花八门,特别是要填写文件路径等没有通用性,搞个不同的工程就得改下,找到这个跟路径无关的代码,进行记录下。第三步就是在运行前面勾上,完成后点击OK,重新编译即可。

2023-12-12 14:06:47 1326

原创 stm32f103使用hal库函数读写内部flash

在写数据的逻辑上是比较简单的,因为hal库将底层已经进行了封装,步骤就是解锁flash->擦除要写入的扇区->清除CR寄存器的PER位(这个本来应该在擦除里面的,基础库就是这样做的,但HAL库里面没写)->写入数据->上锁flash。

2023-12-07 17:32:39 4055 1

原创 GIT GUI使用

左上角为更改内容的展示列表,右上角是文件预览区域,可以看到更改了哪些内容,-就是去掉,+就是增加的代码。左下角位已提交的缓存的文件列表,表示还未push,右下角为提交日志,这个必填,不然无法提交。在点击commit前要填写提交信息,点击后就相当于保存到本地了,最后点击push推送到云端。sign off是在提交信息上添加自己的账户邮箱,这个不是必要操作,在空白处右键,找到GIT GUI here,上面填写仓库地址,下面填写本地地址。

2023-12-06 17:59:55 1150

原创 RT-Thread Studio文件消失不见或被排除构建

不得不说RT-Thread Studio里面配置真多,今天我同事的电脑发现根本没有被画斜杠的文件夹,导致我想移植f1的写内部flash这个(可以看上一个文章)时候不能直接点击属性排除构建,然后在网上查找的时候也没怎么找到说法,所以那我就自己写个说明吧。在RT-Thread Studio里面是有过滤器这个东西的,就是会把没用的文件或者文件夹给过滤掉,默认我也不确定是不是开启的。如果找不到文件夹了,或者按理说在外面的文件夹里添加的文件会被自动更新到这个软件的,没有的话那就改下这个设置吧。

2023-12-05 21:41:12 1434

原创 stm32f103使用RT-Thread组件fal读写内部flash

本次使用RT-Thread studio编写,使用为5.02完整版,目的是将内部flash进行分区,可以直接在内部flash存储数据。

2023-12-05 10:57:20 1947

原创 rt-thread studio中新建5.02版本报错

先吐槽一下,rt-thread studio出现BUG真多,好多时间都是在找BUG,但里面用好多控件还是挺好用的,真是又爱又恨,所以一般使用功能不多的话还是用keil多一点。创建5.02版本工程之后直接进行编译,直接会报下面这个错误:资源 路径 位置 类型 expected '=', ',', ';', 'asm' or '__attribute__' before 'void' board.c /rt1035.02/driver

2023-12-04 11:35:37 856

原创 rt-thread studio中新建5.0不能用

在使用RT-Thread studio创建新工程5.0版本的时候,结果发现新建完成之后程序不能正常运行,但是创建4.10版本的时候却能运行,那肯定是新版本出现了BUG。

2023-12-04 11:18:16 682

原创 stm32一种步进电机查表法驱动

对于stm32芯片来说,步进电机的驱动由于要在中断中不断计算下一次脉冲的时间而极其消耗算力,使用计算的方法对于芯片的算法消耗更高,特别是在f1这种算力比较低的芯片上,这时候使用查表法是一种比较靠谱的方式,这里只给出部分代码思路。当然使用查表法的缺点就是在算力够用的情况下相比计算会没有那么平滑,但是在使用更多电机的时候查表法表现更好,计算会由于算力不足出现卡顿的情况。

2023-12-01 15:54:17 1047

原创 STM32f407掉电检测PVD功能

最近在做一个项目需要用到掉电检测,然后保存数据,发现stm自带有PVD功能,就拿来用一下做个记录吧。本文测试基于stm32f407板子。

2023-11-25 09:35:59 1410

原创 RT_ASSERT断言中#号的作用

在嵌入式操作系统中经常会看到RT_ASSERT断言的存在,但在对这个断言分析的时候,遇到#EX这个符号,实在看不明白作用,于是只能上网找资料慢慢分析了。

2023-11-22 16:09:34 739

原创 FreeRTOS基础(四)动态任务创建

动态创建任务就是任务的任务控制块以及任务的栈空间所需的内存,均由 FreeRTOS 从 FreeRTOS 管理的堆中分配,我们将动态任务创建分为三步,第一就是将宏configSUPPORT_DYNAMIC_ALLOCATION 配置为 1 ,这个是动态创建线程的config配置,第二步是定义函数入口参数,第三步是编写任务函数。

2023-11-14 14:51:32 350

原创 FreeRTOS基础(三)FreeRTOSConfig.h文件详解

FreeRTOS 的配置基本是通过在 FreeRTOSConfig.h 中使用“#define”这样的语句来定义宏定义实现的。在 FreeRTOS 的官方 demo 中,每个工程都有一个 FreeRTOSConfig.h 文件,我们在使用的时候可以参考这个文件,甚至直接复制粘贴使用。在cubeMX生成的时候选择的配置其实也是更改FreeRTOSConfig.h文件。

2023-11-11 09:57:28 612

原创 FreeRTOS基础(二)cubeMX生成FreeRTOS

在cubeMX出现之前,移植操作系统一般都是手动移植的,但这个方法效率低,而且不容易查找错误,那么有了st公司的cubeMX之后,想要使用什么操作系统直接一键生成就好了,简单好用,所以一般情况均使用cubeMX直接生成操作系统。

2023-11-10 17:47:00 288

原创 FreeRTOS基础(一)FreeRTOS概念

实时操作系统全名为real time os,简称RTOS,强调的是实时性,其主要作用就是将单片机运行的时间分成一个一个的时间片,再根据调度器将时间片分成一个个任务,再将延时函数处理成将任务挂起,这样就不会占用单片机资源。

2023-11-09 17:17:26 373

原创 正点原子Linux点灯问题总结

进行LED点灯实验的时候按照教程写好程序,发现怎么也不亮,使用官方的例程也不会亮,最后发现是下载程序的位置应该是/dev/sdb1,不亮是下载到了/dev/sdb。

2023-10-17 09:27:53 311 3

原创 stm32 FOC从学习开发(九)FOC MATLAB仿真

在第七篇的时候在svpwm过程中计算出了三相的比较值,这个比较值最终是一个马鞍波形,但是最终到MOS管的是需要上管和下管相对的总共六相波形,当然在实际上有些驱动芯片是自带这个功能的,还有如果使用高级定时器生成六相波形的话也是可以自动生成的,但在MATLAB中还是需要处理一下的。

2023-09-07 17:25:58 2663

原创 stm32 FOC从学习开发(八)PID基础MATLAB仿真

PID算法是工业应用中最广泛算法之一,在闭环系统的控制中,可自动对控制系统进行准确且迅速的校正。PID算法已经有100多年历史,在四轴飞行器,平衡小车、汽车定速巡航、温度控制器等场景均有应用。PID算法:就是“比例(proportional)、积分(integral)、微分(derivative)”,是一种常见的“保持稳定”控制算法。

2023-09-07 15:26:06 1070

原创 stm32 FOC从学习开发(七)svpwm算法MATLAB仿真

本仿真模型基于之前所做的Clark变换与park变换,输入量是α、β、时间周期T和电压U,由于实际硬件中采用的定时器是168M,所要PWM频率为20Khz,所以这里时间周期T设置为了8400,也是为了容易算出CMP比较值,电压就使用了我经常用的24V,其实这两个参数随便改就可以了如果只是为了看仿真效果的话,仿真中使用的是常数模块,改成自己想要的值就可以了。

2023-09-05 09:41:18 1532

原创 stm32 FOC从学习开发(六)基于均值零序分量注入的载波SVPWM算法

在进行学习svpwm算法的时候,在MATLAB的foc例程上发现了一种更简单的算法,不用区分分区,也不用复杂的公式就可以计算出马鞍波,这种简明的方法我却一直找不到理论出处,直到看到均值零序信号的时候。首先本人学习的本职确实不是这方面的,理解起来还是有些困难,特别涉及到这些算法的时候,有时候总想对应到其物理意义,但大多时候只是一个算法,没有物理意义。

2023-09-04 16:43:50 2897 2

原创 stm32 FOC从学习开发(五)svpwm算法(2)

SVPWM算法的实现方式主要包括参考电压矢量的扇区判断各个扇区非零矢量和零矢量作用时间的计算以及各个扇区矢量切换点的确定,最后使用一定频率的三角载波信号与各个扇区矢量切换点进行比较,从而可以产生变换器所需的PWM脉冲信号。

2023-09-02 17:57:32 2786

原创 stm32 FOC从学习开发(四)svpwm算法(1)

SPWM的全称是(Sinusoidal Pulse Width Modulation),即正弦波脉冲宽度调制,是一种比较成熟的目前广泛使用的一种PWM方法,其原理就是采用控制理论中的一个重要结论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。

2023-09-02 16:34:08 3751

原创 stm32 FOC从学习开发(三)park变换与MATLAB仿真

在我们FOC控制的时候,经过了Clark变换我们成功让原来的120度坐标系变成了我们所熟悉的直角坐标系,并且减少了一维变量,但是新的变量还是非线性的,也就是正弦的,有没有办法把他们线性化呢?有,那就是park变换。

2023-08-31 11:32:53 1899

PID的MATLAB simulink仿真

自己搭建的简单PID的仿真,为了便于理解PID的作用方式,具体内容可以看我的博客,MATLAB版本为2018a,低于此版本的小伙伴们请谨慎下载

2023-09-07

基于PID的focMATLAB仿真模型

本模型基于FOC进行的MATLAB simulink仿真分析,使用版本为2018a,其中包含了Clark变换与反变换、park变换与反变换,svpwm等仿真模型,都是自己一点一点搭建的,但是由于最终输出受电机参数、仿真步长等许多因素,最后pid出来的速度波形还是有些振荡,自己对于电机参数的熟悉也不够,只是以此来熟悉这个算法,就到此为止了这部分。

2023-09-05

基于载波的svpwm与基于空间矢量的svpwm MATLAB仿真

自己练习时写的基于载波的svpwm与基于空间矢量的svpwm MATLAB仿真,包括了Clark变换与反变换和park变换和反变换,对于学习foc的小伙伴应该有一定用处,仿真环境为2018a simulink,低于此版本的小伙伴们请谨慎下载,关于算法详情请看我的博客

2023-08-31

MATLAB生成stm32程序st的支持包

这是MATLAB生成stm32程序st的支持包,具体使用可以看我的博客文章

2023-08-29

matlab硬件支持模拟器f4芯片支持安装包

做MATLAB生成stm32代码的时候所要用到的安装包,可以去官网下载,也可以在这里直接用,详情可以看我的博客

2023-08-29

Clarke与park变换与反变换MATLAB模拟

Clarke与park变换与反变换MATLAB模拟,自己写的MATLAB仿真,作为FOC工程的一部分,使用MATLAB版本为2018a

2023-08-09

matlab 转换将Excel数据导出的一个自己做的应用

matlab 转换将Excel数据导出的一个自己做的应用,可以将Excel导入到程序中,然后处理里面的程序,又写了一个导出到txt文档的程序

2023-03-29

adc实验,用于在LCD模块上面显示ADC转换值以及换算成电压后 的电压值。

本实验通过STM32内部ADC1读取通道5(PA5)上面的电压,在LCD模块上面显示ADC转换值以及换算成电压后 的电压值

2019-01-04

空空如也

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

TA关注的人

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