
STM32
文章平均质量分 92
千千道
千道千寻
展开
-
STM32 DMA 串口从机数据接收完成的判断方法
在STM32的开发过程中,使用DMA(直接内存访问)配合串口进行数据传输是一种高效的方式。然而,对于串口从机而言,准确判断一条数据接收完成是数据处理的关键缓解。本文将介绍几种常见的判断方法,帮助大家更好地理解和应用。总体来说,我更倾向于第三种方法,因为好多时候我们对接第三方协议不能够保证数据接收的长度以及对方提供结束符,IDLE中断的方式不管接收哪种数据都能接收完整,注意接收不要超出数组的长度就可以了。原创 2025-02-27 14:11:30 · 1449 阅读 · 1 评论 -
stm32 lwip tcp服务端频繁接收连接失效问题解决(tcp_recved)
tcp_recved 函数的主要作用是告知 lwIP 协议栈,应用程序已经成功处理了指定长度的数据,这样 lwIP 可以更新接收窗口的大小,允许发送方继续发送更多的数据。在 TCP 协议中,接收方会维护一个接收窗口,用于告知发送方自己当前能够接收的数据量。当应用程序处理完一部分数据后,需要调用 tcp_recved 函数来调整这个窗口大小,以保证数据的正常传输。原创 2025-02-13 17:34:00 · 1819 阅读 · 0 评论 -
信号量与互斥信号量的区别
信号量侧重于资源计数和任务同步。它可以用于多个任务对多个资源的访问控制,或者用于协调任务之间的执行顺序,不强调资源的互斥访问。互斥信号量主要用于实现对共享资源的互斥访问,确保同一时刻只有一个任务能够访问特定的共享资源,同时也关注优先级反转等问题。原创 2024-12-12 16:47:43 · 1333 阅读 · 0 评论 -
STM32输入捕获详解
STM32 的输入捕获功能是一个非常强大的工具,可以帮助我们准确地测量外部信号的参数。通过合理地配置定时器和相关寄存器,以及编写中断服务函数,我们可以轻松地实现输入捕获功能。在实际应用中,我们需要根据具体的需求选择合适的定时器和捕获通道,并注意处理定时器溢出等情况,以保证测量结果的准确性。希望本文对大家理解和使用 STM32 的输入捕获功能有所帮助。原创 2024-12-11 23:10:30 · 2604 阅读 · 0 评论 -
STM32 新手入门教程
STM32 微控制器以其强大的性能、丰富的外设和广泛的应用场景,成为了嵌入式开发领域的热门选择。对于新手来说,STM32 的学习可能会有一定的挑战,但只要掌握了正确的方法和步骤,就能够快速入门并开始自己的嵌入式开发之旅。本文将为新手提供一个全面的 STM32 入门教程,帮助大家快速上手。STM32 的学习需要一定的时间和耐心,但只要掌握了正确的方法和步骤,就能够快速入门并开始自己的嵌入式开发之旅。本文为新手提供了一个全面的 STM32 入门教程,希望能够帮助大家快速上手。原创 2024-12-09 15:47:26 · 2058 阅读 · 0 评论 -
lwip raw、netcoon、socket三种接口编程的区别
在嵌入式网络编程中,LWIP(Lightweight IP)是一个轻量级的 TCP/IP 协议栈,广泛应用于 STM32 等微控制器平台。LWIP 提供了多种编程接口,其中 RAW、NETCONN 和 Socket 是比较常用的三种。本文将详细介绍这三种接口编程的区别,帮助开发者更好地选择适合自己项目的编程方式。LWIP 是一个开源的轻量级 TCP/IP 协议栈,专门为嵌入式系统设计。它具有占用内存少、运行效率高、可移植性强等特点,非常适合在资源有限的微控制器上使用。原创 2024-12-03 16:32:36 · 2046 阅读 · 0 评论 -
STM32 中 FATFS 文件系统代码分析
FATFS 是一个开源的 FAT 文件系统模块,用 C 语言编写,可以移植到多种嵌入式系统中。小巧高效:代码量小,占用内存少,运行速度快。易于移植:完全用 C 语言编写,不依赖于特定的硬件平台,可以很容易地移植到不同的微控制器上。功能丰富:支持文件的创建、打开、读写、关闭、删除等操作,还支持目录的创建、删除、遍历等操作。兼容性好:与 Windows 系统的 FAT 文件系统兼容,可以在 Windows 系统上直接读取和写入 STM32 上的文件。原创 2024-12-02 10:35:46 · 1547 阅读 · 0 评论 -
LWIP和FATFS 实现 FTP 服务端
LWIP 是一个开源的轻量级 TCP/IP 协议栈,它具有占用内存少、可裁剪性强等特点,非常适合在嵌入式系统中使用。LWIP 支持多种网络接口,包括以太网、Wi-Fi 等,可以方便地与各种硬件平台进行集成。本文介绍了如何使用 LWIP 实现一个简单的 FTP 服务端。通过本文的介绍,你可以了解到 LWIP 和 FTP 的基本概念,以及如何使用 LWIP 实现 FTP 服务端的步骤。在实际应用中,你可以根据自己的需求对 FTP 服务端进行扩展和优化,以满足不同的应用场景。原创 2024-11-28 15:44:12 · 2039 阅读 · 1 评论 -
STM32 独立看门狗(IWDG)详解
STM32 的独立看门狗是一种非常重要的可靠性机制,可以在系统出现故障时自动复位系统,确保系统的正常运行。在使用独立看门狗时,需要注意喂狗时间、时钟源稳定性和中断处理等问题,以确保独立看门狗能够正常工作。希望本文对大家理解和使用 STM32 的独立看门狗有所帮助。原创 2024-11-14 09:16:22 · 2253 阅读 · 0 评论 -
FreeRTOS 低功耗 Tickless 模式深度解析
FreeRTOS 的低功耗 Tickless 模式为嵌入式系统提供了一种有效的功耗管理方法。通过合理地配置和使用 Tickless 模式,可以显著降低系统的功耗,提高响应速度,延长电池寿命。在实际应用中,开发者需要根据硬件平台的特性和应用场景的需求,进行适当的配置和编程,以充分发挥 Tickless 模式的优势。希望本文对读者理解和使用 FreeRTOS 的 Tickless 模式有所帮助。原创 2024-11-13 10:20:26 · 1060 阅读 · 0 评论 -
FreeRTOS 信号量的使用
信号量是一种用于任务间同步和资源管理的机制。它可以被看作是一个计数器,用于控制对共享资源的访问。当一个任务需要访问共享资源时,它可以尝试获取信号量。如果信号量的值大于零,任务可以成功获取信号量并访问资源;如果信号量的值为零,任务将被阻塞,直到信号量的值大于零。实现任务之间的同步、控制对共享资源的访问、防止资源竞争和死锁等问题。二进制信号量只有两种状态:可用(1)和不可用(0)。它通常用于实现任务之间的同步,例如一个任务等待另一个任务完成某个操作后再继续执行。原创 2024-11-11 10:04:02 · 1088 阅读 · 0 评论 -
FreeRTOS 队列详解
FreeRTOS 队列是一种非常强大和灵活的通信机制,它为任务与任务、任务与中断之间的通信提供了高效、可靠的方式。通过合理地使用队列,可以实现任务之间的解耦和协作,提高系统的资源利用率和任务的响应性。在实际应用中,开发者需要根据具体的需求和系统的资源状况,合理地设置队列的大小、阻塞时间等参数,注意数据的一致性和完整性,以及在中断中正确地使用队列操作函数。只有这样,才能充分发挥 FreeRTOS 队列的优势,开发出高效、稳定的嵌入式系统。原创 2024-11-05 16:37:42 · 1281 阅读 · 0 评论 -
FreeRTOS 中的列表与列表项详解
在 FreeRTOS 中,列表是一种数据结构,用于存储和管理多个列表项。它可以用于实现任务等待队列、消息队列、事件标志组等功能。列表提供了一种方便的方式来组织和管理多个相关的数据项,使得在不同的任务之间进行数据传递和同步变得更加容易。列表项是列表中的具体数据单元,它可以存储任何类型的数据。在 FreeRTOS 中,列表项通常用于表示任务控制块(TCB)、消息队列项、事件标志组项等。列表项的作用是将不同的数据项连接成一个列表,以便进行统一的管理和操作。原创 2024-11-04 10:01:29 · 1162 阅读 · 0 评论 -
FreeRTOS 任务调度详解
FreeRTOS 的任务调度是其核心功能之一,通过合理地设置任务优先级、选择合适的调度策略以及正确使用相关的 API,可以实现高效的多任务并发执行,提高嵌入式系统的性能和响应速度。在实际应用中,需要根据具体的系统需求和硬件资源来进行任务调度的优化和调整,以确保系统的稳定性和可靠性。希望本文对读者理解和应用 FreeRTOS 的任务调度功能有所帮助。原创 2024-10-29 09:17:19 · 1288 阅读 · 0 评论 -
移植FreeRTOS实时操作系统(基于STM32F429)
在嵌入式系统开发中,实时操作系统(RTOS)的使用可以极大地提高系统的可靠性、稳定性和开发效率。FreeRTOS 作为一款开源的、轻量级的实时操作系统,被广泛应用于各种嵌入式项目中。本文将详细介绍如何将 FreeRTOS 移植到 STM32F429 微控制器上,帮助开发者快速搭建一个高效的嵌入式实时系统。原创 2024-10-28 16:27:17 · 1418 阅读 · 0 评论 -
FreeRTOS 入门指南
在嵌入式系统开发中,实时操作系统(RTOS)起着至关重要的作用。FreeRTOS 作为一款流行的开源实时操作系统,具有小巧、灵活、高效等特点,被广泛应用于各种嵌入式项目中。本文将带领大家初步了解 FreeRTOS,包括其安装、基本概念、创建任务以及任务调度等方面的内容,帮助初学者快速入门。原创 2024-10-25 16:04:03 · 1648 阅读 · 0 评论 -
STM32 实现 TCP 服务器与多个设备通信
在嵌入式系统开发中,常常需要实现设备之间的网络通信。STM32 作为一款广泛应用的微控制器,结合网络通信功能可以实现与多个设备的交互。本文将介绍如何在 STM32 上实现 TCP 服务器端,以便与多个设备进行通讯。lwipopts.h。原创 2024-10-10 09:22:30 · 3376 阅读 · 11 评论 -
STM32 实现 UDP 广播通信
在嵌入式系统开发中,经常需要实现设备之间的网络通信。UDP(User Datagram Protocol)是一种无连接的传输层协议,具有高效、快速的特点。而 UDP 广播则可以让一个设备向同一网络中的所有设备发送消息,非常适合用于设备发现、状态更新等场景。本文将介绍如何在 STM32 微控制器上使用 LWIP(Lightweight IP)协议栈实现 UDP 广播通信。原创 2024-09-30 17:10:27 · 2957 阅读 · 0 评论 -
STM32 的 SDIO 接口(基于STM32F429HAL库)
STM32F429 的 SDIO 接口结合 HAL 库提供了一种方便、高效的数据存储解决方案。通过正确配置和使用 SDIO 接口,可以实现嵌入式系统与 SD 卡等存储设备的快速数据传输。在实际应用中,需要注意电源供应、时钟频率设置、卡的兼容性等问题,并进行充分的错误处理,以确保系统的稳定性和可靠性。希望本文对大家在使用 STM32F429 的 SDIO 接口时有所帮助。原创 2024-09-23 10:05:49 · 1988 阅读 · 0 评论 -
STM32 的 RTC(实时时钟)详解
STM32 的 RTC 模块为嵌入式系统提供了可靠的时间基准。通过了解 RTC 的工作原理、配置方法和应用场景,开发者可以充分利用 RTC 的功能,为系统添加时间记录、定时任务等功能,提高系统的实用性和可靠性。在使用 RTC 时,需要注意时钟源的选择、时间的初始化和校准以及备份寄存器的使用等问题,以确保 RTC 的正常运行和数据的安全性。希望本文对大家在使用 STM32 的 RTC 模块时有所帮助。原创 2024-09-14 09:27:49 · 6767 阅读 · 0 评论 -
STM32 如何生成随机数
STM32 的随机数发生器是基于硬件的真随机数生成器,它利用了物理随机源来产生随机数。这个物理随机源通常是一个基于热噪声或其他物理现象的电路,能够产生高度随机的数字序列。原创 2024-09-13 09:11:29 · 3619 阅读 · 0 评论 -
STM32的寄存器深度解析
寄存器是 CPU 内部用来存放数据的小型存储区域,具有高速存储的特点。在 STM32 中,寄存器可以暂存指令、数据和地址,为微控制器的高效运行提供了关键支持。例如,通过对特定寄存器的操作,可以实现对 GPIO(通用输入输出)端口的配置,控制外设的输入输出状态。在实际的嵌入式开发中,了解和掌握 STM32 寄存器的使用方法至关重要。它不仅可以帮助开发者实现对硬件的精确控制,还能提高程序的性能和可移植性。无论是直接操作寄存器,还是使用高级的库函数,都需要对寄存器的原理有深入的理解。原创 2024-09-11 10:00:42 · 4943 阅读 · 0 评论 -
STM32 的 CAN 通讯全攻略
CAN 协议经过 ISO 标准化后有两个标准:ISO11898 标准和 ISO11519 - 2 标准。其中 ISO11898 是针对通信速率为 125Kbps - 1Mbps 的高速通信标准,而 ISO11519 - 2 是针对通信速率为 125Kbps 以下的低速通信标准。STM32 的 CAN 控制器支持 CAN 2.0A 和 CAN 2.0B Active 版本协议。CAN 2.0A 只能处理标准数据帧,扩展帧的内容会识别为错误;CAN 2.0B Active 可以处理标准数据帧和扩展数据帧。原创 2024-09-10 11:09:28 · 3332 阅读 · 0 评论 -
STM32 之 SDRAM 详解
SDRAM 是一种同步动态随机存取存储器,它具有容量大、速度快、价格相对较低等优点。SDRAM 需要外部时钟信号进行同步操作,并且可以进行高速的数据读写。在嵌入式系统中,SDRAM 通常被用作程序运行空间、数据存储区或者图形缓冲区等。STM32 与 SDRAM 的连接和使用可以为嵌入式系统提供更大的存储容量和更高的运行速度。在使用 SDRAM 时,需要注意硬件连接、时钟配置、初始化、读写操作和刷新操作等方面的问题。通过合理地使用 SDRAM,可以提高嵌入式系统的性能和功能。原创 2024-09-09 09:36:52 · 3151 阅读 · 0 评论 -
STM32 PWM 详解(基于 STM32F429 HAL 库)
PWM 是一种数字信号调制技术,它通过在固定的周期内改变高电平和低电平的时间比例来实现对模拟信号的模拟。在 STM32 中,PWM 可以用于控制电机速度、LED 亮度、音频输出等。本文详细介绍了如何在 STM32F429 上使用 HAL 库实现 PWM 输出。通过配置定时器和通道,我们可以产生不同频率和占空比的 PWM 信号,用于控制各种外设。在实际应用中,可以根据具体需求调整参数,以满足不同的应用场景。希望本文对大家在使用 STM32F429 的 PWM 功能时有所帮助。原创 2024-09-08 09:33:01 · 2438 阅读 · 0 评论 -
STM32的窗口看门狗详解及案例(基于HAL库)
STM32 窗口看门狗是一种非常有效的保障系统稳定性和可靠性的手段。通过合理配置窗口看门狗,可以在系统出现故障时及时复位系统,避免系统出现严重故障。在实际应用中,需要根据系统的实际情况合理设置时间窗口和喂狗操作的时机,以确保窗口看门狗能够正常工作。同时,还需要注意早期唤醒中断的处理,以避免影响系统的正常运行。原创 2024-09-04 14:23:43 · 2254 阅读 · 0 评论 -
二进制基础和STM32的常用位运算
在计算机科学中,二进制和位运算是非常基础且重要的概念。它们在底层编程、优化算法、数据压缩等方面都有着广泛的应用。本文将深入介绍二进制基础和STM32的常用位运算。原创 2024-09-02 10:49:46 · 1607 阅读 · 0 评论 -
深入理解 UCOSIII 软件定时器
UCOSIII 软件定时器是一种非常实用的定时工具,它为嵌入式系统开发提供了强大的支持。通过本文的介绍,相信你已经对 UCOSIII 软件定时器的工作原理、使用方法以及实际应用有了更深入的了解。在实际开发中,合理地使用软件定时器可以提高系统的可靠性和实时性,为你的项目带来更好的性能表现。原创 2024-08-27 08:59:17 · 1128 阅读 · 0 评论 -
UCOSIII 中的优先级反转与互斥信号量详解
在嵌入式实时操作系统中,μC/OS-III(以下简称 UCOSIII)以其高可靠性和可裁剪性被广泛应用。在使用 UCOSIII 进行多任务开发时,优先级反转和互斥信号量是两个需要深入理解的重要概念。优先级反转是指在实时系统中,高优先级任务被低优先级任务阻塞,而导致高优先级任务的执行时间被延迟的现象。这种情况通常发生在多个任务共享资源时,低优先级任务持有资源而高优先级任务等待该资源的情况下。优先级反转是实时系统中一个需要解决的重要问题。原创 2024-08-21 09:05:05 · 1700 阅读 · 5 评论 -
STM32常用C语言知识总结
STM32 作为一款广泛应用的微控制器,其开发离不开 C 语言的支持。C 语言凭借其高效、灵活和可移植性,成为了嵌入式系统开发的首选语言。本文将对 STM32 开发中涉及的 C 语言知识点进行详细总结,帮助大家更好地掌握 STM32 的开发。原创 2024-08-19 14:40:56 · 4798 阅读 · 8 评论 -
UCOSIII信号量详解
UCOSIII信号量是UCOSIII操作系统中用于任务同步和互斥访问共享资源的一种重要机制。下面我将详细解释UCOSIII信号量的类型、使用方法,以及它在UCOSIII操作系统中的作用。原创 2024-08-15 14:04:09 · 1451 阅读 · 0 评论 -
UCOSIII内存管理机制详解
UCOSIII(即Micrium μC/OS-III)的内存管理是其操作系统功能的一个重要组成部分,旨在高效地管理和分配系统内存资源。UCOSIII将内存管理分为不同的区域(或称为“区”)和块。每个区域包含多个固定大小的内存块,这些内存块用于满足应用程序的不同内存需求。原创 2024-08-14 13:47:39 · 1160 阅读 · 0 评论 -
UCOSIII事件标志组详解
定义:在UCOSIII中,事件标志组是类型的内核对象,用于管理一串事件标志位。创建:在使用事件标志组之前,需要调用函数来创建一个事件标志组。这个函数需要指定事件标志组的名称、初始值以及一个用于保存错误码的参数。事件标志组对象事件标志组的名字事件标志组里所有标志位的初值,默认写0返回错误码,没有错误的就返回OS_ERR_NONE。原创 2024-08-13 16:27:44 · 1651 阅读 · 0 评论 -
UCOSIII消息队列详解
UCOSIII的消息队列是由一系列消息按照一定的队列规则(如先进先出FIFO或后进先出LIFO)组成的数据结构。每个消息包含一个指向数据的指针、数据的大小以及时间戳等信息。通过消息队列,任务间可以传递不固定长度的消息,实现了任务间的异步通信。原创 2024-08-12 13:41:31 · 1918 阅读 · 0 评论 -
UCOSIII不开启时间片轮转调度同一优先级任务如何执行
UCOSIII(MicroC/OS-III)中的时间片轮转调度(Round-Robin Scheduling)是一种用于分时系统中进程调度的算法,它主要用于解决在相同优先级下多个任务如何公平地共享CPU资源的问题。原创 2024-08-11 13:26:06 · 1663 阅读 · 0 评论 -
UCOSIII的任务管理详解
对于操作系统而言,最重要的就是任务的创建、挂起、删除和调度等,简单的创建任务可能大家都会,但是做大型项目的话,任务多了就可能需要对UCOSIII的任务管理做更深层次的一些理解。原创 2024-08-09 14:05:23 · 1261 阅读 · 0 评论 -
基于STM32F429移植UCOSIII
μC/OS-III(Micro C OS Three)是一个可升级的、可固化的、基于优先级的实时内核,它是Micrium公司出品的RTOS(实时操作系统)类实时操作系统的一个版本。原创 2024-08-08 14:38:40 · 1474 阅读 · 0 评论 -
STM32的USB接口介绍
STM32 USB接口是STM32微控制器系列中集成的一种通信接口,它允许STM32微控制器与外部设备或计算机进行高速的数据传输和通信。STM32的USB接口通常支持USB 2.0标准,部分高端型号可能还支持USB 3.0或更高版本。根据STM32的USB IP模块不同,USB接口可以分为低速(Low-Speed)、全速(Full-Speed, FS)、高速(High-Speed, HS)或超高速(SuperSpeed, SS)四种类型。原创 2024-08-07 14:05:02 · 5655 阅读 · 0 评论 -
STM32的SDIO接口详解
SDIO是在SD卡接口的基础上发展而来,它兼容SD卡,并可以连接SDIO接口设备。STM32的SDIO控制器支持多种存储卡和接口设备,包括多媒体卡(MMC卡)、SD存储卡、SDIO卡和CE-ATA设备。STM32的SDIO控制器复位后,SDIO_D0用于数据传输。如果连接了多媒体卡,则SDIO_D0、SDIO_D[3:0]或SDIO_D[7:0]可以用于数据传输。原创 2024-08-06 14:09:51 · 2167 阅读 · 0 评论 -
STM32卡死、跑飞如何调试确定问题
我们初学STM32的时候代码难免会出现疏忽,导致程序跑飞,不再正常运行,那么都是什么情况会导致STM32程序跑飞呢?原创 2024-08-02 17:18:36 · 6467 阅读 · 0 评论