自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux基础学习之标准I/O

读取配置/固件-> "rb"(Read Binary, 文件必须存在)保存新配置/保存截图-> "wb"(Write Binary, 慎用!会覆盖旧文件)写运行日志 (Log)-> "a"或 "ab"(Append, 永远写在最后,不丢旧数据)修改现有配置的某几个字节-> "rb+"(Read/Write Binary, 修改模式,文件必须先存在)库函数fread()ptrfread()将读取到的数据存放在参数ptr指向的缓冲区中;sizefread()从文件读取nmemb。

2025-12-25 23:40:27 685

原创 stm32串口dma空闲中断短间隔收大量数据后无法接收数据问题解决方案

排查代码时发现问题为我的代码是在中断中使用任务通知,在任务中接收到任务通知才去执行取出数据和重新开启dma等操作非常耗时,可能会导致一帧没有处理完成,dma没有重开,但第二帧已经到达的问题,此时可能已经触发ORE溢出错误。我在错误回调函数中重开dma为什么失败,看了看hal库,开头就是如果huart->RxState == HAL_UART_STATE_READY,才能继续往下走,当 HAL 库检测到错误并调用。或者保持在 HAL_UART_STATE_BUSY_RX,所以这样的处理有问题。

2025-12-23 23:30:59 206

原创 linux基础学习之文件i/o

本文节选自正点原子嵌入式linuxC应用编程指南前两章,在总结后作笔记使用。

2025-12-22 23:03:51 864

原创 记录两个stm32单片机lwip通信时能连接但是数据收发不通的坑

摘要:调试发现两个LWIP设备通信时,若MAC地址相同会导致TCP连接成功但数据无法传输。必须确保服务端和客户端的MAC地址不同才能正常通信。

2025-11-29 19:41:22 415

原创 记录一下最近开发

摘要:本文介绍了两个实用的调试和串口通信技巧:1.使用log_debug函数时可通过"%.*s"格式按指定长度len输出字符串data;2.使用串口DMA传输时,为避免数据丢失应使用全局或静态数组而非局部变量来存储发送数据。这些技巧有助于提高调试效率和确保通信可靠性。

2025-11-29 15:46:20 107

原创 freertos的定时器栈溢出问题

这个宏定义是freertos软件定时器的任务栈大小,单位是word。这个freertos检测栈溢出宏要先打开。这种情况就需要调大定时器任务栈。➡ 出现 HardFault。这个回调可以看到那个任务溢出。调用其他带深层栈调用的逻辑。➡ 定时器异常、不再执行。在这个函数中设置栈大小。

2025-11-24 17:39:11 132

原创 vTaskNotifyGiveFromISR和xTaskNotifyFromISR的对比

FreeRTOS任务通知机制提供两种ISR到任务的通信方式:vTaskNotifyGiveFromISR和xTaskNotifyFromISR。前者适用于简单计数信号量场景,通过ulTaskNotifyTake接收;后者功能更全面,支持事件标志、数值传递等多种模式,使用xTaskNotifyWait接收。性能方面两者差异微小,但都比传统同步机制更高效。实际应用中,简单计数场景推荐vTaskNotifyGiveFromISR,需要复杂通信时则选择xTaskNotifyFromISR。两种方式都能显著提升ISR

2025-11-20 17:46:19 568

原创 记录一下lwip不能ping大包的问题

在 LWIP/Target/lwipopts.h 里:

2025-11-19 18:03:22 122

原创 记录一下lan8720和lan8742的区别

如果在不拉低nINTSEL引脚时(默认),lan8742/lan8720的REF_CLK默认是不能自己产生50mhz的输出,只能通过mcu倍频产生50mhz的输出给到lan8742/lan8720。RMII_REF_CLK和mcu的rcc_mco输出连接,并将XTAL1/CLKIN连到RMII_REF_CLK。nINTSEL接地(默认拉低),那么REF_CLK就可以输出50mhz,此时不需要mcu输出50mhz了。他们三个脚短接到一起,共享一个mcu输出的50mhz时钟。

2025-10-22 17:15:08 218

原创 keil生成反汇编和bin

fromelf.exe --text -a -c -o "$L@L.dis" "#L"fromelf.exe --bin -o "$L@L.bin" "#L"

2025-09-10 17:16:07 127

原创 h7的片上flash模拟eeprom,并可以存储任意结构体

摘要:本文介绍了在STM32H743VIT6微控制器上使用片上Flash模拟EEPROM的实现方法,支持16位数据和任意结构体的读写操作。通过双页管理和磨损均衡算法,系统自动处理Flash擦除和编程操作,提供EE_WriteVariable()和EE_ReadVariable()接口进行16位数据存储,以及EE_WriteStruct()和EE_ReadStruct()接口实现结构体序列化存储。测试代码展示了传感器数据(UserInfo)和用户信息(SensorData)两种结构体的存储验证,以及16位数据

2025-09-06 18:28:32 189

原创 stm32h743vit6+lwip+freertos+lan8720/yt8521+sai+uart1、2、7+AC6编译

本文总结了STM32H7系列基于LWIP和YT8521/YT8512C以太网PHY芯片的开发经验,主要包括以下关键内容: 问题排查与优化 发现Ping响应延迟10ms的问题,定位为LWIP调试日志未关闭导致打印占用时间 正常Ping响应应控制在1ms以内 MPU配置关键点 内存区域划分与Cache策略直接影响系统稳定性 提供了详细的MPU配置方案,确保不出现Hardfault 强调SRAM3区域不能启用Cache访问 硬件驱动实现 提供了YT8512C/YT8521H PHY芯片的完整驱动代码 包括初始化、

2025-09-05 14:58:12 1400 3

原创 正点原子imx6ull网线连接ubantu并ping通

虚拟机的设置,这里我笔记本两张网卡,一个wifi的无线网卡,上图的ens33,使用dhcp不用管配置,自动获取你笔记本连接路由的ip的,192.168.8就是这个无线网卡,上网用的。一般这样配置完就能用开发板ping了,服务器ip设成192.168.188.128,不要用dhcp直连笔记本不能用dhcp,静态分一个188网段内没有的地址,我这里是103.然后先ping笔记本的网卡,188.101能通,再用笔记本ping 虚拟机ubantu的188.128,能通,用板子ping虚拟机的188.128能通。

2025-08-25 20:54:36 145

原创 配置sai为i2s从模式时,接收容易出错的地方,解决声音抖动的问题

我想半满中断触发一次,全满中断触发一次,一次中断接收40ms的语音,那就是40ms/0.125ms=320次,320次*4B=1280B,也就是40ms的语音是1280B。但重要的问题来了,使用sai的dma接收和发送时,半满中断触发时需要dma接收1280字节,我们应该把接收区设置成2560字节,也就是1280个样本大小,这里的接收函数中的Size应该为1280,而不是2560。这里的pData是接收缓冲区的地址,Size是采集多少个样本,样本就是这里的16bit一个样本。

2025-08-19 13:39:05 263

原创 开发esp32时遇到的一些问题

8.bash: /home/tato123/esp32/esp-idf/tools/idf.py: 参数列表过长。3.出现Error: could not find CMAKE_PROJECT_NAME in Cache。2.出现报错Cmake error :generator: Ninja。5.遇到这个问题,看后面一大串的最后几句,有表示重定义的问题,有。6.编译完看到下面这些表示能烧录,看到其他一般往上翻会发现问题。# 设置环境变量(如果尚未设置)4.重新选择esp32目标。# 完全清理构建目录。

2025-07-06 16:35:09 470

原创 QT生成的release文件中exe打开出现报错

E:\QT\6.9.1\msvc2022_64\bin\windeployqt.exe -- release +你生成的生成出来exe文件名,然后就会得到以上的一堆dll文件,之后就能正常运行exe文件了。在你生成后的文件中打开终端,输入以上路径,按你自己装qt时候的位置走,输我的路径没用。打开exe文件出现问题。

2025-06-18 11:32:06 287

原创 关于stm32g491ret6串口接收数据出现\0的问题

继续排查,用逻辑分析仪抓数据,仔细排查了半天,发现出现这个问题的情况是两条消息间隔太短,大概200us左右。而正常的消息是2ms以上收到,导致收到第一条数据可能没有被处理完成,第二条消息中断接收到消息后,缓冲区被清除,第一条消息就误被清除掉消息头的几个字节。问题描述:我在串口接收回调函数中使用了任务通知,接收到数据之后存到固定缓冲区后,在任务中阻塞等待任务通知处理。}在处理中打印,这回不会出现\0了,应该可以确定xTaskNotifyFromISR占用的时间较长导致的问题。头疼了一周的问题总算解决。

2025-06-16 18:45:03 663

原创 freertos传递结构体的复制导致程序崩溃,xEventGroupSetBits会增加任务堆栈开销

freertos程序崩溃

2025-06-07 18:00:05 266

原创 stm32的引脚事件中断不触发

记录一下引脚触发不了中断的问题,搞了两个小时,最后发现是迭代板子的时候引脚标号变了,但是光改了字母没改数字,忘记把输出的配置删了,直接增加了一个引脚中断的配置,结果就是引脚一直被拉低无法产生高低电平变化,进而无法触发中断。

2025-06-04 15:17:26 194

原创 使用qt6.9.0写蓝牙上位机时,遇到无法找到设备的问题

可用设备列表无法找到以下的这些设备,看原博主说用msvc编译可以找到,用mingw不可以,在qt升级配置中下载了msvc的相关文件后,选择了图片上的项目构建套件,成功显示出了以下可用设备蓝牙列表。

2025-06-02 19:05:49 246

原创 关于freertos走到configASSERT断言的问题

查找调用函数发现是任务没创建但调用了任务通知。

2025-05-29 16:49:19 211

原创 Undefined symbol __aeabi_assert 编译报错问题

按上述步骤,点击下方ok就可以解决

2024-10-30 09:48:47 582

原创 STM32HAL库配置lwip,程序卡死在MX_LWIP_Init函数解决办法

看到别人评论说是MCO1的时钟需要配置,追进去发现msp_init中并没有设置MCO1的时钟,增加了这行代码后成功跑通,目前还没有ping,一会试一下。此时查找了很多帖子都是说设置NRST,软件复位DMABMA寄存器,但是设置后发现还是跑不通,这个状态位还是HAL_ERROR,查找原因后发现这个状态为error导致进入错误。

2024-10-03 15:21:33 1755 6

空空如也

空空如也

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

TA关注的人

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