自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

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

待续。

2025-12-10 17:50:52 377

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

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

2025-12-10 13:34:11 222

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

原创 为at24c02做地址映射

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

2025-10-11 09:59:50 362

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

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

2025-10-11 09:02:02 265

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

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

2025-10-10 13:53:19 262

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

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

2025-09-30 14:37:06 960

原创 freertos专题---信号量

略。

2025-09-30 10:17:11 396

原创 freertos专题----任务

略。

2025-09-30 10:16:32 113

原创 freertos专题----堆栈

略。

2025-09-30 10:15:43 84

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

略。

2025-09-30 10:14:52 88

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

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

2025-09-24 10:46:33 573

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

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

2025-08-19 09:34:47 140

原创 串口通信性能优化

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

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

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

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

2025-07-09 16:39:31 1430

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

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

2025-07-02 14:33:34 424

原创 死机问题汇总

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

2025-04-16 17:37:53 198

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

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

2025-04-15 16:09:23 364

原创 CRC校验0x31标准

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

2025-04-10 08:43:11 290

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

仿照printf封装串口发送函数

2025-03-24 15:41:46 198

原创 can通信冲突

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

2025-03-17 14:33:46 197

原创 stm32 jlink烧录时写保护

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

2025-03-03 13:43:57 1702

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

略。

2025-01-23 18:13:25 177

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

略。

2025-01-23 18:08:41 194

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

略。

2025-01-23 18:03:46 228

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

略。

2025-01-23 18:02:38 224

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

略。

2025-01-23 17:59:43 187

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

略。

2025-01-23 17:58:37 145

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

略。

2025-01-23 17:55:05 173

原创 STM32F407寄存器点灯

背景描述:最近用32开发遇到问题不得不看寄存器了,就回顾了一下寄存器手册的查看方式和寄存器的使用方法;上一次这么细致的记录还是在刚学习STM32的时候,之前觉得看寄存器手册以及配置寄存器是有点难度的事情,现在回头看已经是轻舟已过万重山了。**言归正传:经常查看的是《STM32F407中文手册》,这个手册很重要!实验目的:GPIOA_pin6配置为“推挽输出模式+25MHZ”实现LED闪烁效果;业务流程:这是寄存器映射图这是GPIOA的基地址。

2024-12-18 15:14:44 1007

原创 STM32f407VET6 IAP固件升级,bootloader+双APP区

简单的IAP技术是:boot分区+1个APP区;在升级的过程中,boot程序会把原先的APP区擦除,再把新的bin文件拷贝到APP区,完成升级;风险:在升级过程中突然断电,会导致原先的APP被擦除,新的APP未成功写入,设备变砖,无法通过预留的通信接口升级程序,只能程序烧录。考虑到这种风险:现在将flash分区划为3分区:boot区+APP1区+APP2区;APP1存储老固件;APP2存储新固件;总结:上述操作的目的是:保证flash上在同一时刻至少有1份可使用的APP;

2024-12-12 11:23:33 1688 8

原创 STM32F407VET6单片机的IAP技术---APP部分

会跳转到APP的起始地址0x8010000,不会跳转到bootloader的起始地址。默认的NVIC地址是 VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET;如果在bootloader中跳转到的APP地址是0x8010000,那么我们只要把VECT_TAB_OFFSET的宏修改为0x10000就可以了;2)串口1回复boot V\r\n 或者不回复,因为用来测试的上位机是网上找的,不是我开发的。修改后的NVIC地址:0x8010000。3-业务逻辑中添加RESET功能。

2024-12-10 11:24:01 544

原创 cubemx配置ADC

添加:HAL_ADCEx_Calibration_Start(&hadc1);1)在main函数bsp初始化部分;

2024-09-27 17:00:53 547

原创 使用Jlink打印单片机的调试信息

除去RTT_Debug.h外的其他几个文件在jlink安装目录。5.打开jlink rtt viewer。RTT_Debug.h的内容如下。1.在工程中添加6个文件。

2024-09-24 15:20:30 1165

原创 stm32 IIC总线busy解决方法

3) 在HAL_I2C_Mem_Write()之前,先判断是否busy,如果busy就调用I2C_Busy_C();-------------->再调用HAL_I2C_Mem_Write();调用HAL_I2C_Mem_Write()之前,先判断是否busy,如果busy则重新初始化,初始化结束后,再HAL_I2C_Mem_Write();我根据参考的博客在 HAL_I2C_MspInit() 中添加了2行代码;3----在HAL_I2C_Mem_Write()时会busy,

2024-09-12 11:22:07 1963

原创 cubemx配置stm32f407vet6的can通信,can发送失败

想要实现发送,需要在MX_CAN1_Init添加。想要接收,需要在MX_CAN1_Init添加。MX_CAN1_Init函数不完全;一直提示can发送error;

2024-08-23 09:58:19 647 1

原创 stm32f407VET6驱动W25Q16

看数据手册分析W25Q16的驱动流程

2024-08-16 16:50:00 1192

原创 pycharm无法导入pyside2模块;“ModuleNotFoundError: No module named ‘PySide2“

出现报错““ModuleNotFoundError: No module named ‘PySide2’””后,看来很多博客,都不能解决,只有这篇博客提供了思路;2).ui转化为.py后,点击运行,报错““ModuleNotFoundError: No module named ‘PySide2’””https://blog.youkuaiyun.com/weixin_61891798/article/details/127097989。按照博客的指引,和命令行的提示,我找到了pyside2的包;

2024-08-01 16:56:32 1214

原创 f407_demo\f407_demo.axf: Error: L6218E: Undefined symbol assert_param (referred from softtimer.o).

解决方法:添加头文件。

2024-07-10 09:23:33 223

原创 外部晶振由12M变更为8M,怎么修改时钟配置

2024-07-08 16:07:46 271

空空如也

空空如也

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

TA关注的人

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