- 博客(247)
- 资源 (55)
- 收藏
- 关注
原创 CODESYS runtime:与应用处理相关的事件
CODESYS runtime定义了15种与应用处理相关的事件(Event Id 7-25),用于在特定操作前后通知已注册的组件。这些事件包括在线更改准备/完成(7-8)、下载准备/完成(9-10)、引导项目创建/加载/启动(16-22)、操作拒绝(18,20,23-24)以及引导项目全部加载完成(25)。当这些事件发生时,runtime会发送信号通知相关组件执行相应处理工作。
2025-10-26 16:33:50
300
原创 GDB Server使用方法(基于vscode的可视化调试)
本文介绍了GDB Server的配置和使用方法。GDB Server是连接目标机和主机的调试桥梁程序。配置步骤包括:1)获取开发板和Linux平台的GDB工具;2)编辑launch.json文件设置调试参数;3)修改CMake生成可调试的可执行文件;4)在开发板上运行gdbserver。调试时,在VSCode中添加断点后启动调试,程序会停在断点处,支持单步执行、继续运行等调试功能。文中详细说明了各步骤的具体操作方法和参数配置要点。
2025-10-26 16:10:27
560
原创 在不插网线的情况下实现宿主机和VMware虚拟机的双向通信(如使用vscode通过ssh进行远程开发)
本文介绍使用VMware的“仅主机”虚拟网卡实现拔掉网线依然可以进行双向通信的方法(如使用vscode通过ssh进行远程开发)。
2025-09-27 14:11:24
716
原创 STM32硬件SPI配置为全双工模式下不要单独使用HAL_SPI_Transmit API及HAL_SPI_TransmitReceive改造方法
STM32 HAL库中SPI全双工模式使用问题总结:当配置为全双工模式时,单独使用HAL_SPI_Transmit会导致后续接收数据异常,原因是该API未处理接收数据。改造HAL_SPI_TransmitReceive使其支持单纯的发送/接收模式:当pTxData为NULL时只关心接收数据,pRxData为NULL时只关心发送数据,但仍会保持全双工通信。建议在全双工模式下统一使用改造后的HAL_SPI_TransmitReceive函数。
2025-08-16 18:55:11
708
原创 软件SPI实现(2):SPI协议实现
本文介绍了软件SPI的具体实现,包括SPI引脚初始化,SPI4种通信模式下的软件SPI发送并接收1字节数据、软件SPI发送并接收n字节数据、软件SPI发送n字节数据、软件SPI接收n字节数据实现。
2025-08-16 17:30:10
162
原创 软件SPI实现(1):SPI协议介绍
本文介绍了SPI协议,包括硬件结构、起始和停止信号、 数据传输顺序、4种通信模式,为后面软件实现SPI奠定了基础。
2025-08-16 17:18:20
77
原创 软件I2C实现(2):I2C协议实现
软件I2C协议实现,包括SCL/SDA引脚初始化、起始条件/停止条件、应答信号的接收与发送、读/写1字节数据、读/写n字节数据的实现。
2025-08-16 14:39:06
276
原创 软件I2C实现(1):I2C协议介绍
本文介绍了I2C总线的协议组成部分,包括起始条件和停止条件、时序、地址、传输格式,为后面实现软件I2C奠定基础。
2025-08-16 14:13:50
66
原创 GPDMA循环链表+双环形buffer实现高速串口接收不丢包(理论支持任意高波特率)
本文提出了一种基于STM32H503RBT6平台的高速串口接收方案,通过GPDMA循环链表和双环形缓冲区实现任意高波特率下的数据不丢失接收。核心原理是开启1ms定时中断,在中断中计算DMA接收指针位置,直接拷贝数据而不关闭DMA,从而避免传统方法在关闭DMA时段丢失数据的问题。方案详细阐述了DMA缓冲区和目标缓冲区的指针计算与数据拷贝过程,并提供了关键代码实现,包括链表初始化、DMA配置等。测试表明,该方案在10Mbps波特率下可稳定工作,理论上支持任意高波特率,适用于高速串口通信场景。
2025-08-10 17:10:11
117
原创 基于STM32H5的循环GPDMA链表使用
STM32H503的GPDMA链表模式可实现灵活的数据传输。相比传统DMA直接编程方式,链表模式通过配置多个节点实现分散数据传输,支持循环链表功能。示例展示了如何使用GPDMA链表实现UART1循环发送数据:配置两个DMA节点分别指向不同发送缓冲区,构建循环链表并绑定到DMA通道。关键点包括:清空链表结构体、正确设置循环模式、检查节点配置。此方法提高了DMA使用的灵活性,适用于需要交替传输多段数据的场景。
2025-08-09 19:58:43
162
原创 基于STM32H5的非循环GPDMA链表使用
本文介绍了STM32H503的GPDMA链表功能及其应用。GPDMA支持直接编程和链表两种方式,链表模式能实现更灵活的DMA传输。文章详细解析了GPDMA链表的数据结构,包括节点配置和寄存器说明。通过UART1发送数据的示例,展示了非循环GPDMA链表的实现方法,包括STM32CubeMX配置和HAL库驱动代码。重点强调了构建新链表时需用memset清空链表,避免形成循环链表。最后还解释了链表节点中各寄存器的含义及对应关系。
2025-08-09 19:27:37
3351
原创 STM32H503不同GPIO速度配置(HAL库)对应的最高速度
本文探讨了STM32H503芯片中GPIO速度配置对高速总线性能的影响。在SPI、FSMC等高速总线应用中,GPIO速度设置过低会导致通讯速率受限,但并非速度越高越好——高速配置会带来更大的噪声和EMC问题。文章建议选择略高于通讯需求的速度档位。STM32H503提供四种GPIO速度模式:低速(16MHz)、中速(60MHz)、高速(133MHz)和超高速(200MHz),这些数据是在典型负载电容10pF、供电电压2.7-3.6V条件下测得的。合理选择GPIO速度是平衡性能和EMC的关键。
2025-08-09 11:28:31
204
原创 vscode提示“无法使用 compilerPath 解析配置”解决办法
在使用VSCode的Remote-SSH插件连接Windows10虚拟机进行远程开发时,出现编译器路径错误提示,导致C库头文件无法识别。
2025-08-03 13:41:37
1709
原创 STM32CubeIDE工程提示“has no explicit encoding set”解决办法
STM32CubeIDE工程导入后出现黄色感叹号提示"has no explicit encoding set",原因是工程未指定文件编码格式。解决方法:右键工程→Properties→Resource,在Text file encoding选项中选择"Other"并指定编码格式(如UTF-8),点击Apply and Close后警告消失。重新编译后工程可正常使用,无错误和警告。该问题通过明确设置文件编码格式即可解决。
2025-08-03 13:11:32
384
原创 vscode的Remote-SSH插件配置SSH主机方法
本文详细介绍了如何在VSCode中配置使用Remote-SSH插件连接远程主机:首先安装插件后,点击左下角远程窗口图标,配置SSH主机信息(主机别名、IP和用户名);之后选择目标主机并输入密码连接,等待初始化完成后即可远程操作文件夹。整个过程包括5个主要步骤:安装插件、配置主机、连接验证、选择系统和文件夹授权,最终实现远程开发环境的搭建。
2025-08-03 11:10:06
822
原创 使用STM32CubeMX生成的STM32CubeIDE工程在更改工程名后编译失败问题解决
摘要:使用STM32CubeMX生成STM32CubeIDE工程后更名编译报错,原因是未勾选"Generate Under Root"选项导致部分文件未包含在工程目录内。解决方法是在STM32CubeMX中勾选该选项,使生成的所有文件位于工程根目录下,确保更名后IDE能正确更新引用关系。修改后重新生成工程,更名时自动重建所有文件索引,编译通过无错误。该问题源于文件路径引用不完整,通过调整生成配置可彻底解决。
2025-08-02 17:25:03
413
原创 BYPASS Clock Source(旁路时钟源)、DIGBYPASS Clock Source(数字旁路时钟源)、Crystal/Ceramic Resonator(晶振/陶瓷谐振器)的区别
MCU/SoC时钟源选择主要有三种方式:1)旁路时钟源(BYPASS),外部有源时钟信号直接输入芯片,绕过内部振荡器;2)数字旁路时钟源(DIGBYPASS),通过专用数字接口输入,抗干扰能力强,适合高频场景;3)晶振/陶瓷谐振器,需配合外部无源晶体和内部振荡电路工作。三种方式在电路连接、成本、精度和适用场景上各有特点,设计时需根据具体需求进行选择。
2025-08-02 12:16:31
402
原创 使用交叉编译工具提示stubs-32.h:7:11: fatal error: gnu/stubs-soft.h: 没有那个文件或目录的解决办法
在使用ST官方SDK交叉编译工具时出现"gnu/stubs-soft.h"缺失错误,修改编译选项无效。经检查发现cmake虽然使用了SDK工具链,但C/C++编译器路径不正确。解决方案是删除build文件夹重新生成Makefile,确保使用正确的编译器路径后成功编译。问题根源在于cmake缓存了旧配置而非SDK指定的工具路径。
2025-05-31 17:57:55
441
原创 linux下编写shell脚本一键编译源码
本文介绍了一种简化Linux应用层编程中源码编译和文件拷贝操作的方法,通过编写一个简单的shell脚本实现一键编译。脚本首先设置交叉编译工具的环境,然后修改源文件权限,使用交叉编译工具链编译源文件为可执行文件,并将生成的文件拷贝到指定目录。用户只需输入脚本名称和源文件名,即可自动完成编译和拷贝过程。通过这种方法,可以显著提高开发效率,减少手动操作中的错误。
2025-05-19 00:09:06
622
原创 开发板无法挂载Ubuntu 18.04的NFS服务器文件系统解决方法
在Ubuntu 18.04上配置NFS服务器时,开发板无法正常挂载根文件系统,原因是Ubuntu 18.04默认支持NFS版本3和4,而开发板的uboot默认使用NFS版本2。解决方法是通过修改/etc/default/nfs-kernel-server文件,将NFS服务器配置为支持NFS版本2、3和4。具体操作为在文件中添加或修改RPCNFSDCOUNT、RPCMOUNTDOPTS和RPCNFSDOPTS参数,然后重启NFS服务器。修改后,开发板能够成功挂载根文件系统。
2025-05-18 22:09:49
344
原创 Ubuntu搭建NFS服务器的方法
在Ubuntu 18.04上搭建NFS服务器的步骤包括:首先安装nfs-kernel-server和rpcbind,然后创建一个文件夹作为NFS服务器目录并设置权限。接着,通过编辑/etc/exports文件来配置NFS共享目录,并指定访问权限。最后,重启NFS服务器以应用更改。这一过程使得开发板等设备能够通过网络访问Ubuntu上的文件系统,便于调试和文件共享。
2025-05-18 19:12:21
831
原创 Ubuntu 18.04设置静态IP的方法(图形化操作)
本文介绍了在Ubuntu 18.04系统中设置静态IP的方法,以解决虚拟机在桥接模式下因DHCP功能导致的IP地址不固定问题。具体步骤包括关闭网络、进入网络设置、配置IPv4地址(包括IP、子网掩码、DNS服务器等),并重新启用网络。设置完成后,通过ping命令测试与网关、局域网内其他主机以及公网的连接,确保网络配置正确。该方法适用于需要固定IP地址的场景,如开发板加载镜像时的主机IP配置。
2025-05-18 18:48:00
700
原创 Ubuntu搭建TFTP服务器的方法
在Ubuntu 18.04系统中搭建TFTP服务器的步骤包括:首先安装tftp-hpa(客户端)和tftpd-hpa(服务器)以及xinetd(网络服务管理工具)。接着,创建一个具有最高权限的TFTP文件夹,并配置相关文件(如/etc/xinetd.d/tftp和/etc/default/tftpd-hpa)以设置服务器参数。启动TFTP服务器后,通过创建测试文件并验证其MD5值,确保服务器正常运行。最终,使用tftpd32.exe工具成功下载测试文件,验证了TFTP服务器的正确配置和功能。
2025-05-18 17:35:51
714
原创 Ubuntu16.04升级gcc/g++版本方法
本文介绍了在Ubuntu 16.04系统中升级gcc和g++版本的方法。由于默认的gcc 5.4.0版本无法满足某些交叉编译工具链对GLIBC_2.27的需求,因此需要升级到gcc 6.2以上版本。具体步骤包括:添加编译链、更新软件、安装gcc-9和g++-9、修改gcc和g++的默认配置,并通过update-alternatives命令设置优先级和切换版本。最后,通过gcc -v和g++ -v命令验证版本升级是否成功。
2025-05-18 14:35:41
956
原创 Linux下载国外软件镜像的加速方法(以下载Python-3.8.0.tgz为例)
本文介绍了一种加速从国外服务器下载软件镜像的方法,特别是针对下载速度较慢的情况。以Python-3.8.0.tgz为例,通过对比直接下载和使用迅雷下载的速度,展示了迅雷在加速下载方面的显著效果。迅雷利用其P2P技术,通过缓存资源或附近用户的共享,大幅提升了下载速度。这种方法适用于需要快速获取国外软件镜像的用户,有效解决了下载速度慢的问题。
2025-05-18 12:39:48
563
原创 实时时钟(RTC)/日历芯片PCF8563的I2C读写驱动(5):基于软件I2C实现读写接口
实时时钟(RTC)/日历芯片PCF8563的I2C读写驱动(5):基于软件I2C实现读写接口。
2025-03-15 08:44:26
240
原创 实时时钟(RTC)/日历芯片PCF8563的I2C读写驱动(6):上层应用软硬件I2C接口编写
实时时钟(RTC)/日历芯片PCF8563的I2C读写驱动(6):上层应用软硬件I2C接口编写。
2025-03-15 08:44:07
99
原创 实时时钟(RTC)/日历芯片PCF8563的I2C读写驱动(4):基于HAL库实现硬件I2C读写接口
实时时钟(RTC)/日历芯片PCF8563的I2C读写驱动(4):基于HAL库实现硬件I2C读写接口。
2025-03-15 08:43:39
334
原创 实时时钟(RTC)/日历芯片PCF8563的I2C读写驱动(7):上层应用API编写
实时时钟(RTC)/日历芯片PCF8563的I2C读写驱动(7):上层应用API编写。
2025-03-15 08:43:06
414
原创 实时时钟(RTC)/日历芯片PCF8563的I2C读写驱动(8):功能测试
实时时钟(RTC)/日历芯片PCF8563的I2C读写驱动(8):功能测试。
2025-03-15 08:42:28
160
基于巴法云物联网云平台实现可视化网页控制LED亮灭源码
2024-04-06
16x16尺寸LED点阵电路原理图
2024-04-03
GPIO模拟SMI(MDIO)协议软件实现,可以快速移植到任意MCU/SOC,实现软件SMI功能,SMI读写稳定可靠
2024-01-22
基于stm32单片机的智能恒温足浴器的设计与实现
2023-06-04
基于stm32单片机的作息时间控制器的设计与实现
2023-06-04
基于51单片机的密码存储器的设计与实现
2023-06-04
火灾报警及消防联动设计
2023-06-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅