自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 基于多架构 flash 设计 的ftl接口

网上的fatfs文件系统很多,但是细细说明的很少。自己基于flash做了一个ftl 对接 fatfs文件系统,目前为止,基于nor flash实现了一些功能。日后准备进一步对接 nand flash以及以及作用单片机的1扇区管理(ftl)。基于目前的设计做了一个框架,就是笔记而已。- 512字节扇区适配、FTL接口转换。- SPI通信、Flash基本操作。- 虚拟地址、磨损均衡、垃圾回收。- 多设备管理、骨架函数实现。- 坏块处理,实现底层超映射。- 用户程序调用文件API。- 实现FAT文件系统。

2025-12-09 17:20:41 121

原创 单片机外设管理新思路:基于“外设总线 + 设备总线”的两层静态链表架构设计

该架构分为两层:外设总线层和设备总线层,二者职责分明,协同工作。外设总线层负责管理单片机中所有物理硬件外设,按外设类型进行分类组织。例如,所有使用 DMA 模式通信的 SPI 外设(如 SPI1、SPI2)被统一管理在一条“SPI 外设总线”中;所有标准模式的 I2C 外设(如 I2C1、I2C2)被组织在一条“I2C 外设总线”中。每条外设总线是一个静态链表,链表中的每个节点代表一个具体的硬件外设实例。设备总线层负责管理挂载在某个具体外设上的功能设备。它不是按类型组织,而是按外设实例组织。

2025-10-09 17:28:37 628

原创 stm32h743 生成hrtim 生成中心对齐模式(任意波形)的PWM波

当比较计数器cmp1溢出,PWM波输出低电平,当比较计数器cmp2溢出时,恢复高电平,当定时器计数器溢出时重新开始一轮循环。请注意,这里只用了两个比较计数器(cmp)。这是一个高低高的中心对齐模式pwm波,如果我们想要一个低高低的中心对齐模式的pwm波,只需要把设置反过来就行了。在上一篇文章中,已经介绍了通hrtim生成pwm波方法,但在常见的电机控制或者逆变器控制基本都会用中心对齐模式的pwm波。2.在逆变器的控制中,更贴近应用场景的说法,在电机foc算法控制中svpwm波需要用中心对齐模式的pwm波。

2025-08-08 16:24:00 909

原创 stm32h743的hrtim使用生成pwm波

HRTIM(High-Resolution Timer)是一种高精度定时器,其时钟频率可直接与CPU主频同步,达到480MHz。相比之下,其他传统定时器需挂载在APB总线上,受总线频率限制,最高仅支持240MHz。这种直接时钟同步机制显著提升了定时器的分辨率和精度。

2025-08-06 16:26:47 1257

原创 (x)Qt+opencv 通过CMake构建编译

我用的qt比较老旧,使用的编译器还是MinGW32,现在的主流编译器都是64位。通过CMake编译的时候遇到一些奇奇怪怪的问题,不知道是环境导致的还是其他的什么原因,在此做一个比较完整的记录了。就可以通过MinGw32-make指令编译,编译过程中我是使用的单线程编译,多线程编译好像会导致线程竞争出问题无法编译通过。安装CMake,Opencv的配置过于复杂,通过命令行已经无法满足了,必须借助CMake的ui实现。取消protobuf,这个查询了以下是python的库,用不到,而且还要求c++17的特性。

2025-06-04 10:07:40 226

原创 (三)低版本qt开发统一至CMake-以入口软件(boot0)为例

为目标添加预处理器宏定义。这里定义了几个关键的默认参数。是项目的根目录,使用表示当前目录;是构建目录的默认名称;是输出目录的默认名称;是 Qt 的安装路径,用于后续 CMake 配置时指定 Qt 的位置;是编译时使用的线程数,默认为 8。这些参数都是可以修改。REM 定义默认参数。

2025-05-07 17:12:57 964

原创 stm32h743 以太网模块调试日志

按照网上的配置都没问题,九九八十一难,在以太网调试的过程中遇到的第一烂就是硬件问题。HAL库程序会会一直进入硬件错误,把人的搞郁闷了。究其根本,原因是stm32以太网模块的时钟引脚clk需要一个50M的时钟输入,这样才能正常工作。所以在设置以太网模块的时候,需要一个lan8720模块,上面的clk引脚可以输出一个50M时钟,这个clk连接到单片机上以太网模块的clk就行了。

2025-03-13 22:02:06 307

原创 用HAL库双重adc采样实现采样率翻倍——基于stm32f743

闲着没事,折腾stm32f7系列的芯片,f7系列的芯片已经支持最高480M的频率运行,从功能上说比f3系列的强大很多。其中adc外设支持16位的分辨率。写下笔记以供我后面参考。根据手册可以看到f7芯片在16位分辨率的情况下最多支持3.6M的采样率,如果用两个adc,乘着一个adc转换的时间另外一个adc采样,那么理论采样率可以达到7.2M。实现16位7.2M的采样率。F7开始的芯片已经很复杂了,用官方支持的cubemx+HAL库开发会简单很多,官方的HAL库持续更新会减少很多bug。

2025-03-03 17:19:56 1466

原创 (x)Windows平台Qt基于cpp调用C# dll库读取CPU、GPU温度等信息

背景:需要实现基于windows平台做一个读取电脑cpu、gpu温度的功能。好消息,有开源库OpenHardWareMonitorlib,坏消息这是C#的开源库。思路:1.通过Visual Studio平台整合开源库OpenHardWareMonitorlib。2.通过Visual Studio平台CLR工程写库,实现对整合后的开源库调用。3.通过qt调用CLR写的库间接开源库,实现qt对OpenHardWareMonitorlib开源库的调用。

2024-09-23 16:54:13 870

原创 (二)入口软件(boot0)

我们首先来说一下入口文件的事情,入口文件相当简单,只需要创建一个exe文件就好了。这个项目我命名位fridayapp。

2024-07-01 14:32:15 450

原创 (一)前言

通用模块文件:可能被多次使用的某个某功能,被写成插件的形式存在。入口文件:首先有一个什么都需要做的app,只负责软件入口,即exe文件,他的作用是调用插件,类似于单片机的boot0,其作用,就是提供软件启动的入口,后续软件有各种更新改动,基本不会动它,它在软件设计生命周期内是可以不被改动的。启动文件:有了boot0就有boot1,启动的作用则是加载各种功能,作为插件被入口文件调用,它在软件设计设计周期内是可以被改动的,通过直接替换插件(lib)文件,就可以达到更新软件的目的。

2024-07-01 11:46:21 210

原创 linux学习笔记——基于stm32mp157 uboot编译

买的开发板是野火的开发板,stm32mp157pro,说来野火是真的小气,核心板的原理图都没给。野火现在的linux镜像构建部分是基于mx6ull芯片的,有样学样,多少给改一些。变动的地方是的第二句命令,uboot的配置文件 stm32mp15_trusted_deconfig。下载野火留在gitee的uboot。下载完成后找到目标文件。

2024-01-04 09:18:17 648 1

原创 基于HAL库手写一个轻量化操作系统——参考ucos

用了很久的单片机操作系统,却不知道操作系统是怎么运行的,最近参考野火ucos方面的书,算是自己手写了一个操作系统。权当记录下学习的过程。

2023-01-10 17:30:48 672

原创 基于HAL库stm32f103系列 bootloader实现

1bootloader目录1bootloader1.1 什么是bootloader1.2为什么要在单片机上用bootloader1.3如何在单片机上实现bootloader2bootloader的实现2.1平台2.2flash2.3bootloader实现程序初始化2.3.1串口空闲中断DMA不定长度接收2.3.2Esp8266透传模式2.3.3地址规划2.3.4 YModem协议2.3.5 YModem协议flash写入2.3.4 程序跳...

2022-04-22 15:26:07 4689 3

空空如也

空空如也

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

TA关注的人

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