自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

刻[苦] 的 blog

开源中国的markdown 是s-h-i-t

  • 博客(120)
  • 资源 (3)
  • 问答 (3)
  • 收藏
  • 关注

原创 用EXCEL 将单色屏幕的Bitmap 字模数据还原回图形

本文介绍了一种利用Excel将OLED屏幕的二进制显示数据还原为图像的方法。通过将16进制数据转换为二进制字符串,再分解为单个像素值(1表示点亮),在8x8网格中用单元格代表像素,配合条件格式实现可视化。该方法无需图形界面编程,操作简便,支持调整像素排列顺序(MSB/LSB)。文中提供了Excel模板下载链接,包含预设公式和格式,用户只需输入16进制列数据即可查看对应图像。

2025-11-24 11:00:04 287

原创 用CMake 实现U8g2 的 SDL2 模拟环境

本文介绍了在Windows环境下使用CMake构建U8G2库的SDL2模拟器项目。作者详细说明了项目结构,包括SDL2和U8G2库的配置,以及如何通过CMake进行编译。针对编译过程中遇到的常见问题,如头文件缺失和标准兼容性问题,提供了具体解决方案。项目实现了Arduino风格的程序结构,通过模拟OLED屏幕显示效果来测试U8G2图形功能。文章还简要分析了代码实现,包括Arduino兼容接口和SDL事件循环处理,为开发者提供了完整的本地模拟开发方案。

2025-10-17 15:54:28 1114

原创 STM32 单片机ADC 使用内部电压基准

摘要:文章介绍了STM32 ADC测量中的电压基准选择与精度优化方法。默认使用3.3V电源作为基准时,测量精度受限于电源精度(1-5%)。内置1.2V基准(精度1%)可提高精度,通过实测VREFINT通道值计算转换系数K。进一步利用芯片出厂校准值(存储在VREFINT_CAL_ADDR)可提升精度,但实际改善可能有限。文章还详细讨论了整数运算时的精度保持技巧,建议采用μV单位避免整数除法误差,并对比了不同计算方法的优劣。 (146字)

2025-10-13 11:14:24 1021

原创 PC817 光耦隔离串口传输频率

本文测试了使用PC817光耦传输串口信号时的最高波特率性能。通过调整输入端电阻R1和输出端上拉电阻R2,发现当R1=200-300Ω、R2=100Ω时,可实现最高160kbps的波特率,满足常用串口通信需求。文中详细记录了不同电阻配置下的性能测试数据,并分析了电路损耗与响应时间的关系。该方案的优点是成本极低(单通道约0.2元),适合隔离485收发器的DE信号等低频应用;缺点是稳定性易受器件参数影响,功耗和PCB面积较大。实验证明PC817能可靠工作在100kHz以下频率,适合PWM等低频信号隔离场景。

2025-09-18 01:55:09 1177

原创 单片机实现分页显示环形更新的历史数据

本文介绍了一种在EEPROM/FLASH中使用环形缓冲区存储历史数据的方法。当数据超过容量时,新数据会覆盖旧数据。数据显示采用分页机制,最新数据优先显示,并支持环形回绕读取。文章提供了验证算法的C++实现代码,展示如何从缓冲区按页读取数据,处理缓冲区回绕边界情况,确保数据按从新到旧顺序正确分页显示。

2025-09-04 23:32:40 356

原创 C++ 翻转一字节的位序

摘要:比较了两种反转字节位顺序的算法。移位交换法通过多次移位和与操作实现位反转;查表法使用16字节预存表,分别处理高低4位后拼接。两种方法计算结果相同,效率相当,但实现方式不同。查表法采用小表节省空间,而移位法无需存储空间但计算步骤较多。两种方案各有优劣,可根据具体场景选择。

2025-08-22 01:55:07 228

原创 STM32F030、F103、F4 的引脚兼容性

48pin和64pin LQFP封装芯片的兼容性分析:F030与F103基本兼容,但会损失PF4~PF7四个GPIO,且HSE晶振引脚改为PF0/PF1。F4系列与F103存在VCAP引脚差异,部分型号需外接电容。F400/F401/F402/F410虽改回部分电源引脚,但仍不完整兼容(如PB11改为VCAP)。F410的48pin封装需特别注意22/46/47脚定义变化。不同型号在HSE晶振引脚、电源配置等方面存在差异,直接替换可能导致功能缺失或短路风险。

2025-08-10 13:23:56 727

原创 读取了错误数据导致STM32 单片机Hard Fault

程序运行时突然进入Hard Fault,经调试发现是屏幕库显示字符串时崩溃。排查发现指针地址被误存到Flash中,重新编译后地址变化导致读取错误。建议避免直接存储指针,改用数组索引方式。对于已存储的结构体数组,提供了三种解决方案:版本号校验、CRC校验或烧录后清空数据。最终选择最简单的版本号方案,通过比较固件和Flash中的版本号来识别无效数据。该方案简单可靠,能有效避免因数据定义变更导致的程序崩溃问题。

2025-08-07 23:41:27 309

原创 Arduino 实现一种特别的滚动菜单绘制逻辑:让菜单光标停在中间

本文介绍了一种特殊的菜单滚动显示逻辑,其核心特点是光标位置和可见范围仅由当前选中项决定,与滚动方向无关。该算法:1) 根据屏幕行数和选中项位置固定光标位置;2) 当选中项接近顶部/底部时自动调整显示范围;3) 提供Python实现示例展示滚动效果。这种设计解耦了操作与显示,使菜单状态管理更简单,且能直观反映滚动边界情况。文章包含完整的算法说明和可运行的Python模拟代码,便于理解实现细节。

2025-07-16 11:29:55 394

原创 CA-IS3082W 隔离485 收发器芯片可能存在硬件BUG

摘要:作者在使用CA-IS3082W RS485隔离收发器时发现严重缺陷,该芯片在DE引脚拉高时(发送模式)会异常将RO引脚拉低,导致串口接收到虚假0x00数据。经测试发现,添加终端电阻和上下拉电阻均无法解决问题,而更换为NSI83085芯片后正常。推测停产的非X版本(CA-IS3082W)可能存在设计缺陷,建议购买时选择新版CA-IS3082WX。后续可能验证RE#引脚是否为高电平有效导致该问题。

2025-07-15 00:05:54 542

原创 Arduino 用简易的GUI 后台“线程” 实现实时按键响应

摘要:本文探讨了在Arduino上实现高响应性Modbus主机程序的方案设计。针对Modbus通信中长时间阻塞等待响应的问题,作者否定了RTOS和纯状态机方案,提出了一种在阻塞等待中嵌入轮询检测的创新方法。通过在主循环的每个阻塞点(如通信等待、延时)插入轮询函数调用,实现了类似多线程的实时响应效果。文章详细介绍了基本实现原理和伪代码,并扩展了支持多界面的面向对象方案。该方法兼顾了代码简洁性和实时响应需求,为资源受限的单片机系统提供了实用的高响应性程序设计思路。

2025-06-29 05:42:23 763

原创 用低通滤波优化串口或485 通信指示灯电路

摘要:针对高速串口通信时LED指示灯亮度不足的问题,提出一种改进电路方案。通过运放比较器实现低电平触发,配合电容滤波电路使LED在信号触发后保持10ms亮灯时间。电路采用二极管设置阈值电压,仿真显示可检测1us短脉冲并维持稳定点亮。该设计具有参数易调、成本低廉、小电容滤波不影响通信等优势。虽然存在高频通信时LED持续点亮的问题,但可通过调整RC参数优化保持时间。该方案特别适合MODBUS 等应答时通信场景的指示灯设计。

2025-06-28 17:21:13 788

原创 自定义裁剪U8G2 中文字体

本文介绍了BDF和TTF字体格式的区别,重点讲解了如何为U8G2库生成自定义BDF字体。作者改进了现有的Python字体生成工具,增加了从文本文件读取字符、直接选择BDF源文件等功能。文章详细说明了工具的使用步骤,包括输入字符、设置字体名称、选择源文件、调整间距等操作,并提供了生成示例。此外,还对比了外挂字库芯片和传统取模方法,指出使用U8G2库是更便捷的选择。该工具简化了嵌入式系统中点阵字体的生成过程,特别适合需要少量汉字的项目。

2025-06-23 23:56:11 923 1

原创 ATmega 芯片不能烧程序,快用高压编程解锁熔丝位

针对淘宝购买的AVR芯片可能因熔丝位错误无法烧录的问题,作者设计了一款高压编程解锁工具。该工具基于开源项目改进,支持ATmega8/88/168/328主控,通过12V高压自动修复熔丝位。板载Type-C供电和升压电路,提供DIP-28、QFP-64、QFP-32三种接口,配有状态指示灯和串口输出功能。工具可自动检测芯片型号并重置熔丝,解决了常规编程器无法修复的问题。扩展接口支持其他封装的芯片解锁,为二手AVR芯片的修复提供了经济实用的解决方案。

2025-06-16 01:51:41 1233 3

原创 简单快速的浮点数转字符串算法,适合单片机环境

既然能复用显示整数的代码,那么最简单的思路就是把浮点的整数和小数部分分别转换成整数,打印的时候中间加个小数点就好了,只有一个小问题。比如,要把 3.03 转换成两个整数,整数部分 = 3,没问题;小数部分是 03,如果按整数打印,左侧的0 就没了,整体打印出来变成3.3。好在我的整数显示函数功能还比较齐全,可以设置数字右对齐,并且左侧补0。那么只需要在打印小数部分时,设置数字右对齐,且数字长度等于小数精度。比如,打印 3.03,保留两位小数;打印 03 的时候,数字长度设置为2,右对齐,小数部分3 会被

2025-05-04 03:12:07 774

原创 Python 打包兼容Win7 的Qt 程序

之前用PySide6 写了个上位机软件,在Win7 上不能运行,于是整了半天。搜到的回答都是说Python3.9 以后就不兼容Win7 了,所以得降版本到3.8。但是自己的代码降版本容易,库的版本要是降到3.8,新功能都用不了,还可能遇到旧版本的BUG 和性能问题。目前我用的一个核心库要求版本在3.10 以上,老版本不堪用,所以降版本代价挺大的。

2025-04-29 16:21:02 840

原创 Qt6 以后,QSettings 读取ini 文件固定使用utf-8 编码

Qt6 以前,QSettngs 对象有个`setIniCodec` 方法,可以设置编码,但是Qt6 以后就没了,现在ini 文件的读写编码固定为UTF-8。

2025-04-17 13:24:22 582

原创 HAL 库设置回调成员函数的一种方法

HAL 库都是拿C 写的,想注册回调函数的话,也只能是C 的函数,不能用成员函数作为回调。此外,放在外面的回调函数没办法直接引用到设备驱动对象,必须有个全局的指针变量,让它指向驱动对象,然后回调函数里再使用这个全局的指针去找对象。有了成员变量的地址,就可以根据成员变量在驱动对象中的偏移量,拿到驱动对象的地址。文件里,以后如果改了配置,只要把Cube 新生成的代码复制过来改一下就好了,我可不想在它生成的代码里照着它规定好的格式填空。所以我用的是另一种比较脏的方法,就是直接修改HAL 库的头文件,在。

2025-04-06 14:36:22 561

原创 PlatformIO 自定义脚本选择编译库源文件 - 设置只用于C++ 的编译选项

PlatformIO 只支持以文件夹为单位选择要编译的源文件,不像Keil 或者CMake,可以手动控制每一个源文件。而且默认只会将库的src文件夹下的源文件全部加入编译。PlaformIO 默认会将src文件夹下的所有源文件加入编译,并且将include文件夹加入包含路径,但是没有简单的方法把mem文件夹加入编译;要只选择mem里面的某一个文件编译,其他的排除,这就更复杂了。而FreeRTOS 就恰好是这样的结构,需要在五个heap_x.c文件里选择一个。src。

2025-04-05 16:51:24 1406

原创 MT9700 不能用作USB 口电流倒灌保护

RT,就是有外部供电的USB HUB,希望防止外部的+5V 供电倒灌到电脑的VBUS。MT9700 本身只是个USB 口过流保护,它的手册里也没说带倒灌保护,只是功能框图似乎画出来个反向电流检测功能模块,所以我就想试试看,结果是,果然没有这个隐藏功能。下面是MT9700 手册里的功能框图:注意到这个Reverse Voltage Comparator,也就是反向电压比较器。字面上理解,看起来就是如果存在反向电压,就会让MOS 管截止。而反向电压就是由倒灌的电流引起的。

2025-03-19 02:46:07 561

原创 AVR 单片机硬件供电处理

供电设计是任何硬件设计的关键一环,直接影响到系统的性能。在设计供电时,有两个重要的方面需要考虑:ESD 防护和噪声干扰。这些内容在 [应用笔记 AVR040](http://ww1.microchip.com/downloads/en/appnotes/atmel-1619-emc-design-considerations_applicationnote_avr040.pdf) 中有更详细的叙述,本文只提供简短的总结。

2025-03-02 20:00:23 678

原创 加入二极管的NE555 PWM 电路

R0 阻值等于R2,且远小于R1,所以占空比基本只取决于电位器R1 的位置。可见,这种PWM 电路,高电平对应电容的充电时间,低电平对应放电时间。电容的充电路径上串联了R1 和R2,而放电路径上只有R2,所以放电的时间不可能比充电长。加入二极管就能解决这个问题,用二极管把充电和放电路径分离开,两个路径上的电阻可以独立的调整,占空比也就能随意控制了。这种电路可以用电位器代替两个独立的电阻,使充电时间增加,放电时间就对应缩短,反之亦然,于是方波周期就基本不变,只改变占空比。

2025-03-02 05:29:29 2235

原创 PY32F002A 20PIN 引脚分配辅助表格

适用于20pin 封装的PY32F002A 单片机,比如TSSOP-20。表格里方便的显示出所有引脚的功能,标记出已经分配的引脚,避免冲突。标记功能全是用条件格式做的,兼容性比较好。下载连接:https://download.youkuaiyun.com/download/Etberzin/90403138,0 积分。压缩包里面包含ods 和xlsx 两种格式的表格。推荐用libre office 打开ods 格式的,excel 也能打开。xlsx 格式是从ods 转换的,丢失了条件格式。

2025-02-19 11:33:14 685

翻译 掌握FreeRTOS 实时内核 - Mastering the FreeRTOS Real Time Kernel(九至十三章)

十三章全文翻译自:《 Mastering-the-FreeRTOS-Real-Time-Kernel.v1.1.0.pdf 》;内核版本:FreeRTOS V10.6.2;原文 repo:FreeRTOS-Kernel-Book;部分复制粘贴自:Mastering-the-FreeRTOS-Real-Time-Kernel-CN; 本文开源协议:CC BY-SA 4.0;

2025-01-25 09:38:03 500

翻译 掌握FreeRTOS 实时内核 - Mastering the FreeRTOS Real Time Kernel(一至八章)

十三章全文翻译自:《 Mastering-the-FreeRTOS-Real-Time-Kernel.v1.1.0.pdf 》;内核版本:FreeRTOS V10.6.2;原文 repo:FreeRTOS-Kernel-Book;部分复制粘贴自:Mastering-the-FreeRTOS-Real-Time-Kernel-CN; 本文开源协议:CC BY-SA 4.0;

2025-01-25 09:16:54 1276 1

原创 CD4017 转换为二进制计数 - 将译码器输出反向转换实现8-3 编码器

3-8 译码器是把3 位二进制数映射成8 个独立输出,但有时又需要把独立输出转换回二进制数,这个功能可以用几个二极管和电阻搭的电路实现。

2025-01-12 05:16:14 736

原创 用CD4017 计数器实现单键开关电路

单键开关就是一个轻触按键按一下开、再按一下关,所以需要电路自身有记忆功能,或者说是可以锁存状态,然后每次按键时切换状态。CD4017 刚好就可以实现这种状态锁存、切换的功能。

2025-01-06 18:53:14 1717 4

原创 将单色像素值转换成灰阶屏的灰度序列的算法

就是想办法把单色OLED 屏幕的字库转换给灰阶屏用,并且代码中可以根据设置的灰度参数,用一种字体显示出多种深浅颜色。本来感觉会挺复杂的,想了想突然发现其实很简单。

2024-11-12 10:48:38 813

原创 STM32F1 LL 库和HAL 库在GPIO 上的区别

F0 和F4 系列GPIO 寄存器把输出模式、速度、上下拉之类的配置都用单独的寄存器实现,而F1 系列是全部塞进CRH 和CRL 寄存器里,各个模式之间相互耦合,某一个寄存器位的含义取决于其他寄存器位的值;STM32F1 的LL 库在GPIO_PIN 定义上用了特别的处理,和HAL 库不一样,不能按HAL 库或标准库的惯例处理。,和GPIO 里ODR,IDR 等寄存器的操作对应,而LL 库把pin mask 左移了八位,然后在低8 位和高8 位附加了其他信息

2024-11-08 04:26:43 913

原创 AD 单独设置电源焊盘直连铺铜

就是只让电源芯片的地焊盘直连铺铜,其他的地焊盘则默认用十字连接,从而给电源提供大电流通道和散热平面。

2024-11-06 00:16:31 2276

原创 自己动手给ESP8285 / ESP8266 1MB 编译新版AT 固件

适用于ESP8266 或ESP8285 的1MB 版本,其他容量版本也可以参考,步骤差不多。官网上说可以到github 下载临时编译的固件,但是过去找了就发现,文件都过期了,所以不得不自己编译。而且官方固件的串口引脚都换成了15、13,我的板子上线接在1、3 上,也得自己编译了改引脚。

2024-10-29 22:38:08 1943

原创 SysTick 校准寄存器-SKEW-TENMS

如果硬件上提供了精确的参考时钟,TENMS 的值对应SysTick 计时10ms 的重装值,如果TENMS 值为0,表示没这个功能。大概就是,有参考时钟的话,硬件可以自动跟参考时钟比较,计算出10ms 对应的重装值。就是“NO无 REF 参考时钟”,如果值是1,表示没有外部参考时钟,SysTick 只能用CPU 核心时钟,或者内部的其他时钟。通常NOREF 值是1,TENMS 是0,SKEW 是1,表示这些校准功能没完全没用。值为1,表示TENMS 寄存器的值不准。

2024-10-22 03:12:21 460

原创 Keil MDK 添加外部工具用clang-format 格式化代码

没办法一次性把全部代码文件格式化,它的命令行参数好像只能一个一个文件来,或者用另外一个文件先把所有要格式化的文件的路径放进去,作为列表文件,再把这个列表文件放在命令行参数里传进去,所以我用了个python 脚本来生成列表文件。是个专门用来格式化C/C++ 代码文件的程序,安装LLVM 或者CLANG 编译器的时候会带上,Keil 的armclang 编译器也带了这个,要加到PATH 里。上面显示了所有被过滤出来的文件,再按一下回车确认,就调用clang-format 执行格式化。,脚本执行完就自动删除。

2024-10-21 11:20:48 1488

原创 WS2812 可以用3.3V 电源驱动

实测过了,完全没问题

2024-10-18 23:34:23 2428 5

原创 戴尔 Latitude5290 平板上手笔记

想搞个Windows 平板平时带着方便,比安卓平板更泛用,戴尔这个二手九成新机器价格还不错,七百块咸鱼上捡回来个二手。虽然用7 代CPU 的5285 价格更便宜,但是我觉得还是上8 代i5 吧,因为还记得当年说8 代更新牙膏挤了挺多。

2024-09-05 13:35:08 5117

原创 Multisim 用LM358 运放模拟线性稳压器 - 运放输出饱和 - 前馈电容

就是拿运放搭一个可调的LDO 稳压器,类似下面这个功能框图里的感觉。本来应该非常简单,没什么好说的,没想到遇到了非轨到轨运放输出电压饱和的问题。

2024-08-11 00:57:45 2507

原创 Windows 下用MSYS2 环境为RP2040 编译MicroPython 固件

就是想试试看MSYS2 能兼容到什么地步。自己做了个RP2040 板子,用了4MB 的Flash,默认的Micropython 固件是2MB 的,所以只能自己编译固件。

2024-07-05 06:56:39 1573

原创 下载和安装AD19 - Altium Designer 19.1.9 Build 167

虽然有AD24 的安装资源,但是我比较喜欢19 这个数字[doge]

2024-05-26 04:27:04 4343 1

原创 Altium Designer 中键拖动,滚轮缩放,并修改缩放速度

首先用`#HotIf WinActive("ahk_exe x2.exe")` 检测AD 的窗口,按键映射只会对AD 生效。`MButton::RButton` 就是把鼠标中键映射成右键,从而可以用中键拖动图纸,不过这么一来,所有中键上的功能就都用不了了。下面的`WheelDown::` 和`WheelUp::` 用来加速缩放速度,AD 默认的滚轮缩放太慢了。这几句代码就是接收并拦截发给AD 的滚轮事件,然后,只要用户滚轮滚了一格,就给AD 连续发三次滚轮事件,让AD 认为鼠标已经滚了三格,缩放速度自然

2024-05-26 02:28:16 5880

原创 TM1650 并联在I2C 信号线的处理方法

目的是可以并联多个TM1650 在标准I2C 总线上,并且不影响其他标准I2C 器件。思路就是拿个额外的开关控制每一片TM1650 的使能,就像SPI 的CS 信号那样。

2024-05-13 03:20:31 1478 1

PY32F002A 20PIN 引脚分配辅助表格

用来辅助分配引脚功能的表格,单片机引脚的复用功能又多又乱,所以用表格汇总所有复用功能,并且设置了公式和条件格式,可以显示每个引脚的分配状态。里面包含ods 和xlsx 两种格式的表格。推荐用libre office 打开ods 格式的,excel 也能打开。xlsx 格式是从ods 转换的,丢失了条件格式。

2025-02-19

辉芒FMD FT60F011单片机C 语言例程、资料、应用笔记

包含FT60F011 单片机的数据手册、应用笔记、C 语言例程,应该也适用于FT60E011。本来还有更多应用笔记的PDF,忘记存,回头再找就发现完全搜不到,也记不起来我自己以前是从哪儿找的这些资料。 C 语言开发环境和编程器去立创社区找。 编程器原作者的项目:https://oshwhub.com/kktun/PICjian-rong-dan-pian-ji-xue-xi-; 我修改的硬件:https://oshwhub.com/etberzin/ft60-bian-cheng-qi; 行吧,想起来之前从哪儿下载的了,直接去辉芒官网下载就有,https://www.fremontmicro.com。

2025-02-13

8051单片机指令定义详解 - 来自STC 文档

RT,中英文对照8051 指令集详解,77页。

2022-02-11

HK32F030MF4P6 引脚分配辅助表格

包含两种格式的表格文件,XLSX 和ODS。用LibreOffice 的话推荐ODS 格式

2023-06-01

BPG 图片格式转换工具。

Romeolight Bpgconv 2.5 便携版 Description : Batch conversion tool for BPG images Version : 2.5 Website : http://www.romeolight.com/products/bpgconv License : BSD-2-Clause Binaries : BPGconv.exe

2022-08-31

Op Amps for Everyone 第5版,运放权威指南

运放指南 Op Amps for Everyone - 2018 fifth edition

2022-05-30

Circuit Wizard 2 教育版,电路仿真和设计软件

可以直接安装,Circuit Wizard 2 教育版,打开后里面会显示个教育版标签,不影响使用。比1.5 版本多了个单片机功能。

2022-05-27

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

TA关注的人

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