自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 迪文屏C51开发

使用的屏幕型号:DMG64480T057尺寸:115.2mm86.4mm分辨率:640480实物图:迪文屏开发方式简介:1)串口屏常规方式:DGUS上位机配置好UI后,设备的mcu串口与串口屏的串口连接,通过串口指令(配合预先设置的控件和图片)在设备的mcu端通过串口交互实现业务设计;//这种方式修改起来可能不够灵活,不好迭代;2)3)一种不常见的用法本次使用方法2:通过改迪文屏C51代码实现业务逻辑;开发步骤如下:1)找迪文技术支持获取资料包。

2026-10-13 18:20:25 278

原创 stm32f103c8t6 OTA / IAP

stm32f103 bootloader实现OTA

2026-06-15 16:14:15 38

原创 ULN2003驱动 5线4相步进电机28BYJ-48

28BYJ-48 是一种常见的小型 永磁式单极步进电机,因为价格低廉、易于驱动、扭矩适中,经常作为入门学习电机控制和单片机实践的首选。而28BYJ-48是单极性的电机,不能通过改电流实现完整的260度连续变化的旋转磁场。(2)使用ULN2003控制28BYJ-48步进电机支持哪些控制方式?:该系列中的具体型号编号,表示四拍和八拍都可以运行。常见的双极性步进电机,如42步进电机,可以支持细分;细分的原理是控制线圈上的电流大小和方向实现旋转磁场,振动大(步距角大,5.625°):表示永磁单极步进电机系列;

2026-04-28 11:22:31 222

原创 串口空闲中断+DMA接收+环形缓冲区 && 串口DMA发送+环形缓冲区

实测,串口3,PB10 = TX,PB11 = RX,115200波特率,每包12字节,一万多包回显测试没有丢包。

2026-04-13 08:38:43 147

原创 2.4寸 TFT LCD 240*320屏幕点亮

LCD刷屏最近翻出一块吃灰的LCD,想来可以作为图传或热成像仪的屏幕。在假期点亮一下;工作流程评估:1)阅读参考程序和手册,确认引脚配置2)使用stm32f407vet6 硬件SPI点亮屏幕3)封装画点函数4)利用画点函数实现图片/文字/字符/数字的显示5)SPI改为SPI+DMA优化刷新速度6)封装完LCD的SPI_DMA和画点函数和单元测试7)上自定义UI框架 或 LVGL8)对接传感器(红外或摄像头)

2026-04-05 15:32:47 602

原创 TMC2208控制步进电机

之前开发/维护过一些步进电机的项目,现在想要从0到1实现一个步进电机控制器项目。1-主控:stm32f103c8t62-电机驱动器:TMC22083-PCB:4层板4-控制对象 两相四线步进电机(42步进电机)5-控制要求:1)模式3:串口指令模式开环控制(要求:速度快+静音)2)模式1:dir+step模式,配合磁编码器或光栅尺实现闭环控制(256微步,51200脉冲/圈,配合结构实现um级控制,静音+尽可能快的速度)//闭环模式目前不考虑开源。

2026-03-17 11:59:55 220

原创 stm32单线串口(空闲中断+DMA接收+阻塞式发送)模式控制舵机

单线+上拉+开漏输出【STM32的TTL逻辑电平是3.3V,因此拉高到3.3V】单线串口是一种采用单根数据线(有时会共用一根地线)进行半双工异步串行通信的接口。它的核心工作原理是在一根线(原先TX/RX中的TX引脚承担收发功能上分时复用发送和接收数据,并通过特定的时序协议来协调通信,从而节省硬件引脚资源。硬件基础 单线通信:仅使用一根信号线(如DATA)传输数据。通常需要一根公共的参考地线(GND)。开漏输出:总线上通常采用开漏输出结构,需要外接一个上拉电阻。

2026-03-13 09:57:05 493

原创 单串口舵机XL330-M288-T的驱动

把注释的代码替换到数组里,就可以得到是能扭矩和控制速度的指令。2)电机有ID号,默认为1(可查询,可改动)1)默认波特率57600(可查询/可改动)以ping包和使能扭矩、设置速度为例。本质上是用串口通信协议控制;3)移动到指定脉冲的位置。

2026-03-06 11:29:35 214 1

原创 第三章 低功耗蓝牙ble入门(三)-----蓝牙的广播

从底层信道到上层数据格式,从硬件参数到软件策略,描述ble的广播。描述广播基础信道–>怎么发送广播—>发送什么内容、谁在发送—>优化策略1-ble通道介绍(信道)2-ble广播的类型3-ble广播的模式4-ble广播的间隔5-ble广播的时长6-ble广播的功率7-ble广播的地址8-ble广播的标志位9-ble广播的设备名称10-ble广播的服务UUID11-ble广播的制造商特定数据12-ble广播的数据13-ble广播的过滤策略​。

2026-03-05 16:44:10 615

原创 第一章低功耗蓝牙ble入门(一)-----蓝牙框架和常见概念

为了学习ble开发。

2026-03-02 16:32:02 1041 2

原创 迪文串口屏开发

学习使用迪文串口屏【处理完这9个需求,基本就可以实现我要的功能了】;

2026-01-23 16:54:39 1991

原创 使用A4950制作的步进电机驱动器&&mcu软件细分

待续。

2025-12-10 17:50:52 640

原创 STM32F103通过L298N驱动两相4线步进电机【42步进电机】

二、准备阶段(stm32单片机,L298N模块,42步进电机,螺丝刀,杜邦线,串口工具)1)主控:stm32f103c8t6。L298N驱动42步进电机。2)驱动器 : L298N。3)电机:42步进电机。4)驱动方式:4拍驱动。

2025-12-10 13:34:11 662

原创 freertos---多任务竞争同一资源导致死机----问题定位(串口DMA资源被竞争导致的奔溃)

简单的说,在执行AT24C02_TEST()函数时调用了USART2_printf【实际上使用了DMA资源】,在此期间如果TICK钩子函数触发1S打印一次的条件时页使用DMA资源,但是用户没有对USART2_printf的DMA资源进行保护,由于TICK钩子函数的优先级高,​​Tick钩子​​属于中断上下文(高优先级),​​EEPROM操作​​属于任务上下文(低优先级),两者直接操作同一串口硬件,且无同步机制,形成冲突。不可能为了省事直接调用HAL_UART_Transmit这种阻塞接口,

2025-10-11 14:30:31 469

原创 为at24c02做地址映射

2048bit256字节每页16字节,一共128页。地址映射:每4字节划分为1个区域,即1个变量占4字节存入eeprom;

2025-10-11 09:59:50 395

原创 为嵌入式项目增加多级调试信息-----显示等级,文件名,行号,函数名,和调试信息

如果配合自定义的串口助手,效果更好,这个串口助手可以识别包头里的[DEBUG],[INFO],[ERROR]等,根据不同的等级打印不同的颜色;

2025-10-11 09:02:02 324

原创 freertos-软件模拟IIC读写at24c02

【代码】freertos-软件模拟IIC读写at24c02。

2025-10-10 13:53:19 340

原创 freertos专题---消息队列

本篇用于描述freertos里【消息队列的使用原因】,【消息队列的使用场景】,【消息队列的API介绍】,【消息队列使用方法(配合实际代码)】,和【消息队列的底层机制】参数:UBaseType_t uxQueueLength:设置消息队列长度;UBaseType_t uxItemSize:设置消息队列中单个消息的大小;函数说明创建函数,实际上使用还是调用函数 xQueueGenericCreate()完成消息队列创建工作。当消息队列创建成功时,返回一个消息队列的控制句柄。

2025-09-30 14:37:06 1087

原创 freertos专题---信号量

略。

2025-09-30 10:17:11 418

原创 freertos专题----任务

略。

2025-09-30 10:16:32 133

原创 freertos专题----堆栈

略。

2025-09-30 10:15:43 118

原创 freertos专题1--freertos启动流程

略。

2025-09-30 10:14:52 117

原创 freertos-----串口通信框架(初版,丢包率低)

freertos下实现串口高效处理,115200波特率不丢包;:测试回显709776字节,未丢包。

2025-09-24 10:46:33 687

原创 串口通信丢包率低的版本--115200波特率--1ms频率通信--几乎不丢包

2-串口DMA接收+空闲中断 用来判断1次数据包的接收。注意在中断服务函数里添加串口1的idle。如图:回显测试21万字节左右,无丢包。main死循环里添加业务逻辑。初始化的时候添加DMA接收。3-DMA发送+双缓冲区。

2025-08-19 09:34:47 193

原创 串口通信性能优化

2)在软件定时器里添加的任务里,串口解析是1ms1次,这个频率对于自定义的调度器来说压力比较大。2.5ms一次通信测试,但是关闭软件定时器,把串口解析放到main的死循环里,大多数指令不丢包,只有查表算法的相关指令丢包。在User_Creat_Task()里把,USART_RX_Monitor_Thread()注释掉;1.软件定时器的定时器中断,冲掉了串口中断【不确定是不是这个原因,但是肯定和中断或调度器有关】3)把实时性高的任务剥离出来,放到main函数的死循环,不放在调度器里。

2025-07-15 08:46:03 1226 1

原创 2相4线混合式步进电机---42步进电机简介

----------略----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2025-07-09 16:39:31 1938

原创 定时器PWM比较模式输出

芯片:STM32F103C8T6使用cubemx配置,代码:tim.c``main.c效果**

2025-07-02 14:33:34 460

原创 死机问题汇总

1-can接收中断回调函数里,调用了can发送。

2025-04-16 17:37:53 244

原创 设备调试--反思与总结

我写can通信滤波器的时候,可能是不过滤的;是接收所有的id报文,然后用业务逻辑过滤(比如在业务逻辑里判断id是否为符合要求的设备,再识别报文);这个时候会由于习惯(认为这个设备可以接收所有的id),推测这台设备可能坏了(波特率不对?假设工程师A是初始化时过滤id,然后我维护他的代码的时候,发现设备接收不到广播包(id:0);结果分析一通,最后才想起来“CAN初始化的时候做了过滤,只接收指定范围的id”,而有的工程师在写代码的时候,是直接在初始化的时候进行id过滤;花了更多的时间分析偏了;

2025-04-15 16:09:23 465

原创 CRC校验0x31标准

【代码】CRC校验0x31标准。

2025-04-10 08:43:11 334

原创 串口发送函数接口定义

仿照printf封装串口发送函数

2025-03-24 15:41:46 230

原创 can通信冲突

系统中,原先设计是所有设备的波特率都是250K,但是有1个被误配置为1000K,导致can通信失败(总线冲突)

2025-03-17 14:33:46 226

原创 stm32 jlink烧录时写保护

烧写失败,提示写保护了怎么办?JINk驱动安装之后,后有一个快捷方式打开它;点击确定我这颗芯片是f1的;就填2,回车显示ok就行了;接着就可以烧录了;

2025-03-03 13:43:57 2268

原创 使用pyqt5制作一个串口助手用于单片机IAP的调试

略。

2025-01-23 18:13:25 208

原创 基于寄存器配置实现的STM32F407VET6的flash操作

略。

2025-01-23 18:08:41 238

原创 基于寄存器配置实现的STM32F407VET6的硬件spi通信

略。

2025-01-23 18:03:46 259

原创 基于寄存器配置实现的STM32F407VET6的硬件iic通信

略。

2025-01-23 18:02:38 253

原创 基于寄存器配置实现的STM32F407VET6can通信

略。

2025-01-23 17:59:43 209

原创 基于寄存器配置实现的STM32F407VET6定时器中断

略。

2025-01-23 17:58:37 164

原创 基于寄存器配置实现的STM32F407VET6串口通信

略。

2025-01-23 17:55:05 211

空空如也

空空如也

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

TA关注的人

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