自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32 独立看门狗(IWDG)详解

STM32 的独立看门狗是一种非常重要的可靠性机制,可以在系统出现故障时自动复位系统,确保系统的正常运行。在使用独立看门狗时,需要注意喂狗时间、时钟源稳定性和中断处理等问题,以确保独立看门狗能够正常工作。希望本文对大家理解和使用 STM32 的独立看门狗有所帮助。

2024-11-14 09:16:22 707

原创 FreeRTOS 低功耗 Tickless 模式深度解析

FreeRTOS 的低功耗 Tickless 模式为嵌入式系统提供了一种有效的功耗管理方法。通过合理地配置和使用 Tickless 模式,可以显著降低系统的功耗,提高响应速度,延长电池寿命。在实际应用中,开发者需要根据硬件平台的特性和应用场景的需求,进行适当的配置和编程,以充分发挥 Tickless 模式的优势。希望本文对读者理解和使用 FreeRTOS 的 Tickless 模式有所帮助。

2024-11-13 10:20:26 630

原创 Linux 中自旋锁与信号量的区别

自旋锁是一种忙等待锁,当一个线程试图获取一个被占用的自旋锁时,它会一直循环(“自旋”)在那里,不断地检查锁是否可用,直到锁被释放为止。自旋锁的实现通常基于原子操作,例如在多处理器系统中,通过原子的测试和设置操作来实现锁的获取和释放。信号量是一种睡眠锁,当一个线程试图获取一个被占用的信号量时,它会被挂起,进入睡眠状态,直到信号量被释放并且该线程被唤醒为止。信号量通常使用一个计数器来表示可用资源的数量。当一个线程获取信号量时,计数器减一;当一个线程释放信号量时,计数器加一。

2024-11-12 09:08:19 624

原创 FreeRTOS 信号量的使用

信号量是一种用于任务间同步和资源管理的机制。它可以被看作是一个计数器,用于控制对共享资源的访问。当一个任务需要访问共享资源时,它可以尝试获取信号量。如果信号量的值大于零,任务可以成功获取信号量并访问资源;如果信号量的值为零,任务将被阻塞,直到信号量的值大于零。实现任务之间的同步、控制对共享资源的访问、防止资源竞争和死锁等问题。二进制信号量只有两种状态:可用(1)和不可用(0)。它通常用于实现任务之间的同步,例如一个任务等待另一个任务完成某个操作后再继续执行。

2024-11-11 10:04:02 740

原创 C 语言指针与链表的使用

指针是一个变量,它存储的是另一个变量的内存地址。通过指针,我们可以间接访问和操作内存中的数据。指针的主要作用包括:动态内存分配、函数参数传递、实现复杂的数据结构(如链表、树、图等)。链表是一种动态的数据结构,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针,链表的起点为头节点,尾节点的指针域为NULL。链表的特点是可以动态地增长和缩小,不需要预先知道数据的数量。与数组相比,链表的优点是插入和删除元素的操作更加高效,不需要移动大量的数据。

2024-11-09 09:58:45 1119

原创 FreeRTOS 队列详解

FreeRTOS 队列是一种非常强大和灵活的通信机制,它为任务与任务、任务与中断之间的通信提供了高效、可靠的方式。通过合理地使用队列,可以实现任务之间的解耦和协作,提高系统的资源利用率和任务的响应性。在实际应用中,开发者需要根据具体的需求和系统的资源状况,合理地设置队列的大小、阻塞时间等参数,注意数据的一致性和完整性,以及在中断中正确地使用队列操作函数。只有这样,才能充分发挥 FreeRTOS 队列的优势,开发出高效、稳定的嵌入式系统。

2024-11-05 16:37:42 1072

原创 FreeRTOS 中的列表与列表项详解

在 FreeRTOS 中,列表是一种数据结构,用于存储和管理多个列表项。它可以用于实现任务等待队列、消息队列、事件标志组等功能。列表提供了一种方便的方式来组织和管理多个相关的数据项,使得在不同的任务之间进行数据传递和同步变得更加容易。列表项是列表中的具体数据单元,它可以存储任何类型的数据。在 FreeRTOS 中,列表项通常用于表示任务控制块(TCB)、消息队列项、事件标志组项等。列表项的作用是将不同的数据项连接成一个列表,以便进行统一的管理和操作。

2024-11-04 10:01:29 1036

原创 FreeRTOS 任务调度详解

FreeRTOS 的任务调度是其核心功能之一,通过合理地设置任务优先级、选择合适的调度策略以及正确使用相关的 API,可以实现高效的多任务并发执行,提高嵌入式系统的性能和响应速度。在实际应用中,需要根据具体的系统需求和硬件资源来进行任务调度的优化和调整,以确保系统的稳定性和可靠性。希望本文对读者理解和应用 FreeRTOS 的任务调度功能有所帮助。

2024-10-29 09:17:19 1039

原创 移植FreeRTOS实时操作系统(基于STM32F429)

在嵌入式系统开发中,实时操作系统(RTOS)的使用可以极大地提高系统的可靠性、稳定性和开发效率。FreeRTOS 作为一款开源的、轻量级的实时操作系统,被广泛应用于各种嵌入式项目中。本文将详细介绍如何将 FreeRTOS 移植到 STM32F429 微控制器上,帮助开发者快速搭建一个高效的嵌入式实时系统。

2024-10-28 16:27:17 1121

原创 FreeRTOS 入门指南

在嵌入式系统开发中,实时操作系统(RTOS)起着至关重要的作用。FreeRTOS 作为一款流行的开源实时操作系统,具有小巧、灵活、高效等特点,被广泛应用于各种嵌入式项目中。本文将带领大家初步了解 FreeRTOS,包括其安装、基本概念、创建任务以及任务调度等方面的内容,帮助初学者快速入门。

2024-10-25 16:04:03 1160

原创 Linux 设备树在 i.MX6U 上的应用与详解

设备树是一种数据结构,用于描述硬件设备的信息,包括处理器、内存、外设等。它以树形结构组织,每个节点代表一个硬件设备或硬件功能模块。设备树的描述语言是一种特定的文本格式,通常以.dts(设备树源文件)和.dtb(设备树二进制文件)的形式存在。

2024-10-24 15:47:40 1016

原创 Linux 加载与卸载驱动模块详解

Linux 模块是一种可以在运行时动态加载到内核中的代码段。它通常包含设备驱动程序、文件系统驱动或者其他内核功能扩展。模块以独立的目标文件形式存在,在需要的时候由内核加载到内存中,并与内核进行链接,成为内核的一部分。

2024-10-23 15:58:03 1197

原创 Linux 系统核心组件:U-Boot、内核与根文件系统

U-Boot(Universal Boot Loader)是一种开源的引导加载程序,主要用于启动嵌入式系统。它的主要任务是初始化硬件设备、加载内核并将控制权传递给内核。U-Boot 支持多种处理器架构和硬件平台,具有高度的可移植性和灵活性。Linux 内核是操作系统的核心部分,负责管理系统的资源,如 CPU、内存、设备等。它提供了进程管理、内存管理、文件系统管理、设备驱动等关键功能。

2024-10-22 11:36:36 1440

原创 I.MX6U 字符设备驱动开发指南

本文介绍了 I.MX6U 字符设备驱动的开发过程,包括基本概念、开发步骤、实例分析等内容。通过本文的学习,读者可以了解字符设备驱动的工作原理和开发方法,为开发其他类型的设备驱动提供参考。在实际开发中,还需要根据具体的设备需求进行进一步的优化和完善,以确保设备驱动的稳定性和可靠性。

2024-10-21 10:50:33 1114

原创 I.MX6U 之实时时钟(RTC)详解

I.MX6U 的 RTC 模块是一个功能强大的实时时钟,为嵌入式系统提供了准确的时间信息和定时功能。通过了解 RTC 的功能、特性和编程方法,可以更好地利用它在嵌入式系统中实现各种应用。在实际应用中,需要根据具体的需求进行合理的配置和编程,以确保 RTC 的准确性和稳定性。希望本文对大家了解和使用 I.MX6U 的 RTC 模块有所帮助。

2024-10-14 09:46:55 1219

原创 I.MX6U 的延时(delay)方法与实践

在 I.MX6U 上实现高精度延时需要综合考虑硬件资源、定时器配置、应用场景和注意事项等多个方面。通过合理选择和配置定时器,或者在适当的情况下使用基于循环的延时方法,并注意时钟精度、中断处理和编译器优化等问题,可以实现满足不同需求的高精度延时功能。在实际应用中,需要根据具体的要求进行精确的调试和测试,以确保延时的准确性和稳定性。

2024-10-12 09:52:00 1253

原创 I.MX6U 的 EPIT 定时器详解

I.MX6U 的 EPIT 定时器是一种功能强大的外设,具有高精度、多种工作模式和灵活的配置选项。通过合理地配置和使用 EPIT 定时器,可以实现定时、计数、脉冲宽度测量等功能,满足不同应用的需求。在实际应用中,需要根据具体的需求选择合适的时钟源、预分频值和中断触发方式,并注意定时器的功耗和中断处理的效率,以确保系统的稳定性和可靠性。希望本文对大家了解和使用 I.MX6U 的 EPIT 定时器有所帮助。在实际开发中,可以参考 I.MX6U 的技术手册和相关的开发资料,深入了解定时器的具体功能和编程方法。

2024-10-11 09:31:00 1122

原创 STM32 实现 TCP 服务器与多个设备通信

在嵌入式系统开发中,常常需要实现设备之间的网络通信。STM32 作为一款广泛应用的微控制器,结合网络通信功能可以实现与多个设备的交互。本文将介绍如何在 STM32 上实现 TCP 服务器端,以便与多个设备进行通讯。lwipopts.h。

2024-10-10 09:22:30 1726 1

原创 QT 串口通信中确保数据接收完成的方法

在 Qt 串口通信中,确保数据接收完成是一个重要的问题。通过采用合适的方法,我们可以根据具体的应用场景来准确地判断数据是否已经全部接收。无论是基于数据长度、结束标志、定时器超时还是自定义协议头,都可以有效地解决数据接收完成的判断问题。在实际开发中,我们可以根据通信协议的特点和需求选择合适的方法,以提高串口通信的可靠性和稳定性。本文将介绍几种在 Qt 串口通信中确保接收完成的方法,以帮助开发者更好地处理串口数据。信号会被发射,从而触发槽函数执行,在槽函数中我们可以读取串口数据。信号到自定义的槽函数来实现的。

2024-10-09 14:11:03 1071

原创 STM32 实现 UDP 广播通信

在嵌入式系统开发中,经常需要实现设备之间的网络通信。UDP(User Datagram Protocol)是一种无连接的传输层协议,具有高效、快速的特点。而 UDP 广播则可以让一个设备向同一网络中的所有设备发送消息,非常适合用于设备发现、状态更新等场景。本文将介绍如何在 STM32 微控制器上使用 LWIP(Lightweight IP)协议栈实现 UDP 广播通信。

2024-09-30 17:10:27 1737

原创 QT 中的信号与槽机制详解

Qt 的信号与槽机制是一种强大的事件处理方式,它提供了一种类型安全、灵活且易于维护的回调机制。通过信号与槽机制,不同的对象之间可以进行高效的通信,使得 Qt 应用程序的开发更加简洁、高效。在实际应用中,可以根据具体的需求灵活地使用信号与槽机制,实现用户界面交互、模型 - 视图 - 控制器架构以及多线程通信等功能。希望本文对大家理解和使用 Qt 的信号与槽机制有所帮助。

2024-09-24 14:16:28 1827

原创 STM32 的 SDIO 接口(基于STM32F429HAL库)

STM32F429 的 SDIO 接口结合 HAL 库提供了一种方便、高效的数据存储解决方案。通过正确配置和使用 SDIO 接口,可以实现嵌入式系统与 SD 卡等存储设备的快速数据传输。在实际应用中,需要注意电源供应、时钟频率设置、卡的兼容性等问题,并进行充分的错误处理,以确保系统的稳定性和可靠性。希望本文对大家在使用 STM32F429 的 SDIO 接口时有所帮助。

2024-09-23 10:05:49 1717

原创 STM32 的 RTC(实时时钟)详解

STM32 的 RTC 模块为嵌入式系统提供了可靠的时间基准。通过了解 RTC 的工作原理、配置方法和应用场景,开发者可以充分利用 RTC 的功能,为系统添加时间记录、定时任务等功能,提高系统的实用性和可靠性。在使用 RTC 时,需要注意时钟源的选择、时间的初始化和校准以及备份寄存器的使用等问题,以确保 RTC 的正常运行和数据的安全性。希望本文对大家在使用 STM32 的 RTC 模块时有所帮助。

2024-09-14 09:27:49 3235

原创 STM32 如何生成随机数

STM32 的随机数发生器是基于硬件的真随机数生成器,它利用了物理随机源来产生随机数。这个物理随机源通常是一个基于热噪声或其他物理现象的电路,能够产生高度随机的数字序列。

2024-09-13 09:11:29 2219

原创 STM32的寄存器深度解析

寄存器是 CPU 内部用来存放数据的小型存储区域,具有高速存储的特点。在 STM32 中,寄存器可以暂存指令、数据和地址,为微控制器的高效运行提供了关键支持。例如,通过对特定寄存器的操作,可以实现对 GPIO(通用输入输出)端口的配置,控制外设的输入输出状态。在实际的嵌入式开发中,了解和掌握 STM32 寄存器的使用方法至关重要。它不仅可以帮助开发者实现对硬件的精确控制,还能提高程序的性能和可移植性。无论是直接操作寄存器,还是使用高级的库函数,都需要对寄存器的原理有深入的理解。

2024-09-11 10:00:42 3026

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

原创 STM32 之 SDRAM 详解

SDRAM 是一种同步动态随机存取存储器,它具有容量大、速度快、价格相对较低等优点。SDRAM 需要外部时钟信号进行同步操作,并且可以进行高速的数据读写。在嵌入式系统中,SDRAM 通常被用作程序运行空间、数据存储区或者图形缓冲区等。STM32 与 SDRAM 的连接和使用可以为嵌入式系统提供更大的存储容量和更高的运行速度。在使用 SDRAM 时,需要注意硬件连接、时钟配置、初始化、读写操作和刷新操作等方面的问题。通过合理地使用 SDRAM,可以提高嵌入式系统的性能和功能。

2024-09-09 09:36:52 2147

原创 STM32 PWM 详解(基于 STM32F429 HAL 库)

PWM 是一种数字信号调制技术,它通过在固定的周期内改变高电平和低电平的时间比例来实现对模拟信号的模拟。在 STM32 中,PWM 可以用于控制电机速度、LED 亮度、音频输出等。本文详细介绍了如何在 STM32F429 上使用 HAL 库实现 PWM 输出。通过配置定时器和通道,我们可以产生不同频率和占空比的 PWM 信号,用于控制各种外设。在实际应用中,可以根据具体需求调整参数,以满足不同的应用场景。希望本文对大家在使用 STM32F429 的 PWM 功能时有所帮助。

2024-09-08 09:33:01 1904

原创 C 语言内存管理语法全解析(malloc、calloc、free)

C 语言中的内存管理是一项非常重要的任务,需要程序员手动分配和释放内存。本文介绍了 C 语言中的内存管理语法,包括动态内存分配、内存释放和内存管理的最佳实践。通过正确使用这些语法和最佳实践,程序员可以确保程序的正确运行和避免内存泄漏等问题。

2024-09-06 10:14:08 1796

原创 C 语言指针与数组的深度解析

指针是一个变量,它存储了另一个变量的地址。在 C 语言中,可以使用指针类型来声明指针变量。例如,int *ptr;声明了一个指向整数类型的指针变量ptr。指针变量可以通过取地址运算符来获取其他变量的地址,并将其存储在指针变量中。例如,ptr = &var;将变量var的地址存储在指针变量ptr中。数组是一组相同类型的元素的集合,它们在内存中连续存储。在 C 语言中,可以使用数组类型来声明数组变量。例如,声明了一个包含 10 个整数元素的数组变量arr。

2024-09-05 10:47:35 1472

原创 STM32的窗口看门狗详解及案例(基于HAL库)

STM32 窗口看门狗是一种非常有效的保障系统稳定性和可靠性的手段。通过合理配置窗口看门狗,可以在系统出现故障时及时复位系统,避免系统出现严重故障。在实际应用中,需要根据系统的实际情况合理设置时间窗口和喂狗操作的时机,以确保窗口看门狗能够正常工作。同时,还需要注意早期唤醒中断的处理,以避免影响系统的正常运行。

2024-09-04 14:23:43 1654

原创 Cortex-A 寄存器组详细介绍

Cortex-A 处理器拥有一组通用寄存器,用于存储数据和地址。这些寄存器可以在各种指令中使用,例如算术运算、数据传输和逻辑操作等。通用寄存器的数量通常为 16 个或更多,具体数量取决于处理器的型号。它们被命名为 R0 到 R15,其中一些寄存器具有特定的用途。

2024-09-03 10:45:35 1576

原创 二进制基础和STM32的常用位运算

在计算机科学中,二进制和位运算是非常基础且重要的概念。它们在底层编程、优化算法、数据压缩等方面都有着广泛的应用。本文将深入介绍二进制基础和STM32的常用位运算。

2024-09-02 10:49:46 1316

原创 GNU 汇编语法基础

在嵌入式系统开发和底层编程中,汇编语言是一种强大的工具。GNU 汇编器(Gas)是一种广泛使用的汇编器,支持多种处理器架构。本文将深入介绍 GNU 汇编语法,帮助读者更好地理解和使用汇编语言。

2024-08-31 09:49:26 1820

原创 Makefile 基础与常用语法详解

在软件开发过程中,项目的构建和管理是至关重要的环节。Makefile 作为一种强大的工具,能够自动化地完成项目的编译、链接和部署等任务,极大地提高了开发效率。本文将深入介绍 Makefile 的基础概念和常用语法,帮助读者更好地掌握这一工具

2024-08-30 08:56:26 1485

原创 在linux 中如何将.c 文件转换为可执行文件

在 Linux 环境下进行 C 语言编程时,将.c文件转换为可执行文件是一个关键的步骤。这个过程涉及到使用编译器和一些相关的工具,本文将详细介绍在 Linux 系统中如何将.c文件转换为可执行文件的方法。

2024-08-29 09:19:34 2143

原创 linux编程——认识GCC编译器

GCC 是一套由 GNU 开发的编程语言编译器,它支持多种编程语言,包括 C、C++、Objective-C、Fortran、Ada 和 Go 等。GCC 以其高效、稳定和可移植性而闻名于世,被广泛应用于各种操作系统,尤其是 Linux 系统。

2024-08-28 07:38:18 1581

原创 深入理解 UCOSIII 软件定时器

UCOSIII 软件定时器是一种非常实用的定时工具,它为嵌入式系统开发提供了强大的支持。通过本文的介绍,相信你已经对 UCOSIII 软件定时器的工作原理、使用方法以及实际应用有了更深入的了解。在实际开发中,合理地使用软件定时器可以提高系统的可靠性和实时性,为你的项目带来更好的性能表现。

2024-08-27 08:59:17 998

原创 UCOSIII 中的优先级反转与互斥信号量详解

在嵌入式实时操作系统中,μC/OS-III(以下简称 UCOSIII)以其高可靠性和可裁剪性被广泛应用。在使用 UCOSIII 进行多任务开发时,优先级反转和互斥信号量是两个需要深入理解的重要概念。优先级反转是指在实时系统中,高优先级任务被低优先级任务阻塞,而导致高优先级任务的执行时间被延迟的现象。这种情况通常发生在多个任务共享资源时,低优先级任务持有资源而高优先级任务等待该资源的情况下。优先级反转是实时系统中一个需要解决的重要问题。

2024-08-21 09:05:05 1514 5

原创 STM32(F429) DAC 详解与应用实例

在嵌入式系统开发中,STM32 系列微控制器以其强大的性能和丰富的外设资源而备受开发者青睐。其中,STM32F429 中的数模转换器(DAC)为实现模拟信号输出提供了便捷的解决方案。本文将详细介绍 STM32F429 的 DAC 功能,并结合实际应用实例展示其在嵌入式系统中的强大作用。STM32F429 的 DAC 是一种 12 位数字模拟转换器,具有两个独立的输出通道。它可以将数字信号转换为模拟电压输出,广泛应用于音频输出、传感器信号模拟、波形生成等领域。

2024-08-20 14:34:22 1607

空空如也

空空如也

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

TA关注的人

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