- 博客(35)
- 收藏
- 关注
原创 STM32F407/429软件I2C驱动AHT20
本文分享了在STM32平台上使用软件I2C驱动AHT20温湿度传感器的实践经验。针对F407/F429主频差异导致的时序问题,通过调整延时确保时序精度;将GPIO配置为开漏上拉模式以满足I2C总线要求;优化了信号处理流程,确保数据读取正确性。文章详细解析了I2C协议特性,包括"线与"架构原理,并提供了完整的驱动代码实现,包括初始化、起始/停止信号、字节收发等关键操作。通过规范初始化流程和严格时序控制,最终实现了稳定的传感器通信和数据采集。
2026-04-24 11:12:38
520
原创 开源:STM32F429IGT6 LVGL专用RGB驱动核心板
本项目开发了一款专为LVGL优化的STM32F429IGT6核心驱动板,采用6层PCB设计,集成SDRAM显存和硬件加速功能。核心特点包括:精简架构仅保留显示驱动相关功能,支持RGB565/888接口;硬件开启DMA2D加速和LTDC直驱,确保LVGL8/9流畅运行;适配FreeRTOS系统实现多任务稳定运行;6层板设计保障高速信号完整性。提供完整开源硬件方案(含PCB设计)和驱动代码,适用于嵌入式GUI开发、HMI中控等场景,支持学习/商用。
2026-04-04 13:16:04
243
原创 STM32F407 + LVGL 图形界面开源开发板
本项目推出一款基于STM32F407VET6的开源嵌入式开发板,专为LVGUI图形界面、物联网和嵌入式学习设计。硬件采用2层板设计,集成2.8寸触摸屏、WiFi(ESP8266)、2.4G无线(NRF24L01)、16MB FLASH存储等功能模块,支持Type-C供电和串口下载。软件完全开源,提供LVGL+RTOS运行环境,适用于嵌入式开发入门、物联网应用、电子竞赛和毕业设计等场景。开发板配备丰富的扩展接口和稳定电源系统,具有上手快、功能全的特点,硬件参数包括168MHz主频、768KB Flash、19
2026-03-30 09:58:21
281
1
原创 Linux系统编程之System-V消息队列
本文详细介绍了Linux System-V消息队列的实现原理与使用方法。作为经典的进程间通信机制,System-V消息队列通过内核持久化存储消息,支持无亲缘关系进程间的异步通信。文章系统阐述了其核心操作流程:通过ftok生成唯一键值、msgget创建/打开队列、自定义消息结构体、msgsnd/msgrcv进行消息收发以及msgctl控制队列。通过完整的发送端和接收端示例代码,展示了如何使用相同的IPC键值实现进程间通信,包括消息发送、接收和队列删除等关键操作。尽管存在接口老旧等缺点,System-V消息队列
2026-03-12 15:25:22
533
原创 Linux系统编程之Signal_Kill_Raise函数
本文介绍了Linux系统编程中三个核心信号处理函数:signal、kill和raise。signal用于注册信号处理函数,通过自定义函数响应特定信号;kill允许向指定进程或进程组发送信号,实现进程间控制;raise则用于进程向自身发送信号。文章详细说明了各函数的原型、参数、返回值,并提供了示例代码演示其用法。通过signal函数实现Ctrl+C信号捕获,使用kill和raise完成父子进程间的信号控制,展示了Linux信号机制在进程管理中的应用。这些函数构成了Linux异步事件处理的基础,是系统编程和驱动
2026-03-08 14:17:25
522
原创 Linux驱动开发之无名管道
Linux无名管道实现父子进程通信示例 摘要:本文演示了使用Linux无名管道实现父子进程间通信的方法。通过pipe()函数创建管道,fork()创建子进程后,父进程关闭读端并向管道写入数据,子进程关闭写端并从管道读取数据。关键点包括:1)管道是半双工通信机制;2)需正确关闭不使用的管道端;3)wait()函数可获取子进程退出状态。示例代码支持通过命令行参数传递自定义消息,实现了父子进程间的单向数据传输,适用于简单的进程间协作场景。
2026-03-07 14:55:46
604
原创 Linux驱动开发之守护进程
本文介绍了Linux驱动开发中守护进程的基本概念与实现方法。守护进程作为后台运行的特殊进程,独立于终端控制,适用于持续监控硬件等场景。文章详细阐述了创建守护进程的五个关键步骤:1)通过fork()创建子进程并退出父进程;2)使用setsid()创建新会话;3)切换工作目录到根目录;4)重设文件权限掩码;5)关闭不必要的文件描述符。最后提供了一个完整的守护进程示例代码,展示了如何实现日志记录和定时任务功能,并包含详细的代码注释说明各步骤的实现原理。
2026-03-03 13:27:28
387
原创 Linux驱动开发之进程
本文介绍了Linux驱动开发中的进程管理基础知识,重点讲解了fork()和execl()两个关键函数。fork()用于创建子进程,返回不同的值区分父子进程;execl()用于替换子进程的执行程序。文章还对比了exit()和_exit()的区别:exit()会刷新缓冲区并清理资源,而_exit()直接终止进程。通过示例代码展示了这些函数的实际应用场景,帮助开发者理解Linux多进程编程的基本原理。
2026-03-02 13:22:37
875
原创 Linux驱动开发之Lseek和Sync函数
摘要:本文介绍了Linux驱动开发中两个关键函数lseek和sync的用法。lseek用于调整文件读写位置,支持从文件头、当前位置或文件尾进行偏移;sync则强制将缓冲区数据写入磁盘以确保数据安全。通过示例代码展示了如何创建文件、写入数据、移动文件指针并同步数据,完整演示了这两个函数在实际开发中的应用场景和操作流程。这些基础接口对Linux设备驱动开发具有重要意义。
2026-02-26 11:25:47
381
原创 Linux驱动开发之Read_Write函数
本文介绍了Linux字符设备驱动开发中read和write函数的基本用法。read函数用于从设备读取数据,write函数用于向设备写入数据,两者都需要引用unistd.h头文件。文章详细说明了这两个函数的参数含义和返回值情况,并通过一个文件复制示例程序演示了如何使用这两个系统调用。示例中包含了文件打开、读写操作以及命令行参数处理等内容,重点解释了main函数参数argc和argv的作用,强调了使用命令行参数可以使程序更具通用性和动态性。最后总结了系统调用的基本使用流程和注意事项。
2026-02-25 14:07:36
808
原创 STM32-FreeRTOS操作系统-软件定时器
软件定时器是 FreeRTOS 提供的一种功能模块,它允许用户在指定的时间间隔后执行特定的回调函数。与任务不同,软件定时器不具有独立的执行上下文,也不占用系统资源来维持运行状态。任务是 FreeRTOS 的核心调度单元,具有独立的栈空间和优先级,可以主动运行和被调度。而软件定时器仅在设定的时间点触发回调,依赖任务或其他机制来执行实际操作,更适合用于简单的定时需求,如周期性检查或延迟操作,相比任务更加轻量级。简单来说软件定时器就是一个简单的定时任务,而且不需要占用大量内存。
2026-02-23 13:53:47
930
原创 Linux驱动开发之Makefile
Makefile 是一种用于自动化编译和构建项目的工具配置文件。它通过定义目标文件、依赖关系和生成目标的命令,帮助开发者高效地管理项目构建过程。当项目文件发生变化时,Makefile 能自动识别并仅重新编译受影响的部分,节省时间和精力。Makefile三要素包括目标,依赖和命令。我是这么理解的,目标,就是我们需要实现的功能;依赖就是我们实现功能中所依赖的东西;命令自然就是为实现功能而执行的命令。
2026-02-11 15:23:48
1159
原创 STM32-FreeRTOS操作系统-事件
在 FreeRTOS 中,事件组中的每个事件位通常是一个二进制位,可以表示一个特定的事件。事件位通常通过宏定义来表示,以便于代码的可读性和维护性。通俗的讲,事件的核心就是设置事件标志位,然后读取该标志位状态,进而执行要执行的逻辑。类似按键检测一样,不断检测按键有没有被按下,如果被按下则执行按下逻辑。本文仅是个人观点,不代表最终解释,如有不足,欢迎指出。
2025-12-18 12:39:17
780
原创 STM32-FreeRTOS操作系统-互斥量
互斥量(Mutex)是FreeRTOS中一种重要的同步原语,用于在多任务环境中保护共享资源的访问。当一个任务获取互斥量后,其他任务必须等待,直到该任务释放互斥量。互斥量不仅防止多个任务同时访问共享资源,还能确保任务以正确的优先级顺序获取资源,避免优先级反转问题。它为嵌入式系统中的资源管理提供了高效且可靠的解决方案。
2025-10-22 13:50:25
1124
原创 STM32-FreeRTOS操作系统-二值信号量与计数信号量
二值信号量是一种同步机制,用于在多任务环境中协调任务的执行。它本质上是一个只能取两个值(通常是0和1)的变量,类似于一个开关。当信号量的值为1时,表示资源可用;当值为0时,表示资源已被占用。在FreeRTOS中,二值信号量主要用于任务间的同步,而不是用于互斥。它的工作原理如下:当一个任务需要资源时,它会尝试获取信号量。如果信号量的值为1,任务会将其值减1并继续执行;如果信号量的值为0,任务会进入阻塞状态,等待信号量变为1。当另一个任务释放资源时,它会将信号量的值加1,从而唤醒等待的任务。
2025-09-12 15:03:18
1463
1
原创 STM32-FreeRTOS操作系统-消息队列
消息队列是一种在 FreeRTOS 中用于任务间通信的机制。它允许任务将消息发送到队列中,其他任务可以从队列中接收这些消息。消息队列可以存储多种类型的数据,如整数、指针或结构体等。通过消息队列,任务之间可以实现解耦,提高系统的可维护性和可扩展性。在 STM32 系统中,合理使用消息队列可以有效协调多个任务的运行,优化资源分配,确保系统的高效稳定运行。
2025-09-11 14:42:21
784
1
原创 STM32-FreeRTOS操作系统-任务管理
在嵌入式系统中,任务管理是确保系统高效、稳定运行的关键环节。随着系统功能的日益复杂,多个任务需要同时运行,且每个任务都有其优先级和资源需求。任务管理通过合理分配处理器时间、优化任务调度、确保任务间通信顺畅,使系统能够高效处理多任务,避免任务冲突和资源浪费。它还能提高系统的响应速度和可靠性,确保关键任务优先执行,从而提升用户体验和系统性能。任务挂起是任务管理中的一个重要机制,其主要目的是为了更合理地分配系统资源和优化任务调度。当一个任务暂时不需要运行时,将其挂起可以释放处理器时间,让其他更重要的任务得以执行,
2025-09-02 13:14:39
715
原创 STM32-FreeRTOS操作系统-任务创建
本文简单介绍了在STM32微控制器上使用FreeRTOS操作系统创建任务的方法,包括任务函数定义、任务创建函数调用及任务优先级设置等内容,帮助开发者快速掌握STM32下FreeRTOS任务创建的关键步骤。
2025-09-01 10:59:51
1063
原创 STM32F4系列单片机如何修改主频
我首先想到最大的区别就是主频不同,什么是主频,我的理解就是CPU运行的频率,频率越大,性能肯定越强,F1系列单片机的主频大多数都是72Mhz,而F4系列单片机的主频却来到了惊人的168Mhz,什么概念?比F1的2倍还有多。所以刚刚从F1转到F4的朋友肯定会这么想,不就是主频提高了吗,把F1系列的代码移植管理不就行了吗。刚开始我也是这样想,也确实,除了配置方式不同意外,其它都大差不差。但当用上通信协议(软件模拟iic)的时候就发现,照搬F1系列的代码到F4系列上根本就行不通。其原因就在于F1与F4系列的主频不
2025-08-29 18:01:45
946
原创 STM32-BKP备份寄存器与RTC实时时钟
STM32的BKP备份寄存器是一种特殊的存储单元,它位于备份区域,即使在系统复位或电源关闭时,也能通过电池备份保持数据不丢失。它通常包含多个寄存器,用于存储关键数据,如配置信息、状态标志等。这些寄存器通过低功耗设计和独立的备份电源,确保数据在主电源失效时仍能安全保存,为系统恢复和数据完整性提供可靠保障。
2025-08-22 13:18:58
1241
1
原创 STM32单片机-SysTick滴答定时器
时间管理是嵌入式系统的关键,而STM32单片机的SysTick定时器就是实现这一功能的核心工具。本文将介绍SysTick定时器的基本原理、配置方法及实际应用案例。SysTick定时器是STM32单片机内核自带的一个系统定时器,主要用于提供系统滴答时钟,为操作系统或任务调度提供时间基准。它是一个24位的倒计数定时器,具有简单易用,高精度,应用广泛特点。在实际应用中,SysTick定时器经常用于操作系统的时间管理,任务调度,时间测量的场景。
2025-08-20 13:05:33
1386
原创 STM32F103系列之GPIO引脚的重映射
前段时间在做一个项目的时候遇到一个问题,使用GPIO引脚的PB3和PB4的时候,发现不能正常使用,后来无论怎么改怎么配置都用不了,后来才想起来GPIO引脚还有一个叫。下面是USART1的示例参考代码,本代码是将USART1的TXD引脚从PA9重映射到PB6上,同时保留PA10(RXD)引脚。通过重映射,可以灵活地调整外设引脚的连接方式,以满足不同的硬件设计需求,提高引脚资源的利用率。简单来说,GPIO引脚重映射就是把STM32芯片上原本连接某个功能的引脚,换到别的引脚上。
2025-08-13 12:07:51
1401
原创 STM32F103系列基于HAL库的串口通信(串口,串口中断,串口DMA)
本文章讲述的是STM32F103系列基于HAL库开发的串口通信,包含普通串口串口中断以及串口DMA,感兴趣的可以好好看看。本次实验用到的模块有:STM32C8T6系统板,0.96寸OLED屏幕以及HC-08蓝牙模块普通串口接收(HAL_UART_Receive)简单介绍:`HAL_UART_Receive`是 STM32 HAL 库中用于 UART 数据接收的阻塞函数。它接收指定数量的字节,并将数据存储到指定的缓冲区中。该函数会一直等待,直到数据接收完成或超时,因此会阻塞程序的执行。
2025-07-03 16:49:59
1672
原创 51单片机之流水灯(左移和右移)
利用51单片机,通过对CPU相关(特殊)寄存器的改写,说白了就是通过改变单片机的P2端口的高低电平进行改写,从而实现LED灯闪烁及流水灯的实现。本次实验的目的是LED灯的点亮及实现流水灯左移和右移。实验对象:一块普中51开发板各个模块的原理图LED灯模块:引脚从上到下依次是:P2.0~P7一共8个LED灯,LED灯洋阳极接电源电压VCC(+5V),阴极接的是上拉电阻,起到的是限流的作用,即电阻带着了部分电流,防止LED灯因通过的电流过大而烧坏。
2025-03-31 14:43:37
1488
原创 利用EDA嘉立创制作NE5532(放大器)元器件
首先如果我们是以个人账号登录嘉立创的话,我们就得新建立一个元器件库,如图:接着再新建器件(在上图元件库的右边)如图:这里我们再点击管理分类,然后点击一级分类什么的绿色再然后再根据需要命名,最后要先点击应用再点击确认,如图然后再按照NE5532手册上的实物图绘制, 绘制完第一个部分后,如图:鼠标点击左下角的芯片,选择新建部件然后就会跳转到新的一页,然后继续绘制我们的第二部分。
2025-01-12 14:57:09
2696
原创 74LS192芯片实现任意进制的设计(复位法与预置法)
74LS192是一款经典的同步十进制可逆计数器芯片,属于TTL(晶体管-晶体管逻辑)系列。它具有以下主要特点和功能:主要特点• 同步操作:所有触发器在同一时刻响应时钟脉冲的变化,确保数据的一致性和准确性。• 双向计数能力:可以执行向上(增)或向下(减)的计数操作。• 双时钟输入:具有两个时钟输入端,分别用于加计数(CPU)和减计数(CPD)。• 清零与预置功能:提供异步清除端口(MR)以及并行加载输入端(PL),用于设置初始状态或强制回到特定数值。
2025-01-07 20:46:27
3510
原创 简易函数信号发生器的设计于制作(方波与三角波)
制作简易函数发生器的实训是一项实践性很强的活动,它不仅加深了我对函数理论知识的理解,还锻炼了我的动手能力和问题解决能力。通过这次实训,我学会了如何将抽象的数学函数转化为具体的电子信号,这个过程让我对信号与系统有了更直观的认识。在实际操作中,我遇到了一些挑战,比如参数调整和信号稳定性的问题,但通过不断尝和调整,我逐渐掌握了技巧,也学会了如何查阅资料和求助于同伴。这次实训让我意识到,理论知识与实践操作之间存在着密切的联系,只有将两者结合起来,才能真正掌握知识。
2024-12-31 18:34:40
2280
原创 如何在Altium designer中去除飞线(AD9)
在我们布线的时候,难免会因为杂乱无章的飞线而感到头大,本文来给大家分享一下如何去除PCB板中的飞线,以便与我们前期的布局。正文1. 快捷键N:在PCB界面按下快捷键N,会弹出一个菜单,选择“Hide Connections”然后选择“All”可以隐藏所有飞线;如果想显示飞线,选择“Show Connections”然后选择“All”即可显示所有飞线。2. 菜单栏操作。
2024-11-01 22:32:20
4618
原创 51单片机之如何更改芯片的焊盘及孔径大小
本文章给大家分享的是如何更改51单片机之如何更改芯片的上焊盘及孔径大小(注:这里指的是芯片上所有的焊盘统一更改)。废话不多说,直接上操作!正文我们把原理图的器件导到PCB板上,只留下芯片,其它器件全部删掉,如图:点击芯片上的任意一个焊盘,然后点击右键,选择查找相似对象,找到孔径及焊盘大小,选择same,最后先点击应用再点击确定,如图:然后我们再根据需要更改,最后关闭窗口即可,如图:这样我们就更改好啦,最后再回到原理图把之前删掉的器件重新导过来就行。
2024-10-24 21:43:15
795
原创 51单片机PCB板布线走线布局及附铜封装
大家好,本文章要给大家分享的是51单片机PCB板布线走线布局及附铜封装。在制作51单片机布线及附铜封装时,首先需要了解单片机的工作原理和电路设计基础。布线是电路设计中的关键步骤,它关系到电路的性能和可靠性。附铜封装则是为了提高电路板的机械强度和散热性能。在设计过程中,要确保信号完整性,避免电磁干扰,并合理布局电源和地线。通过精心的布线和封装设计,可以显著提升51单片机的性能和稳定性。
2024-10-19 23:15:11
2809
原创 51单片机中PCB板元器件的制作和封装
大家好,今天要给大家分享的是 51单片机中PCB板的元器件的制作和封装,内容可能会有点多,但很详细,请大家耐心阅读。废话不多说,我们直奔主题!元器件的制作和封装是电子工业中的关键环节。在制作阶段,根据设计需求,选择合适的材料和技术生产出电阻器、电容器、二极管、三极管等元件,以及集成电路等器件。封装则是将这些元器件安装在特定的外壳或基板上,以保护其免受外界环境影响,同时便于安装和连接。封装形式多种多样,包括直插式、表面贴装式等,不同封装形式适用于不同的应用场景和要求。
2024-10-16 09:44:07
2216
原创 Adiuno 跑马灯(利用电压控制流水速度,点阵模拟电压档位)
总的来说, Arduino跑马灯项目通过控制多个LED灯的亮灭顺序,实现了灯光流动的视觉效果。此项目不仅锻炼了编程和电路搭建能力,还展示了Arduino在物联网和嵌入式系统中的基本应用,是一个简单而有趣的入门项目,适合初学者学习和实践。
2024-10-13 20:57:50
1011
1
原创 ALtium Designer 怎么换成中文
Altium Designer 是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统,主要运行在Windows操作系统。这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。现在就跟大家分享一下Altium Designer怎么由英文转成中文。
2024-10-13 14:39:37
8388
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅