
MCU开发
文章平均质量分 91
对于初学者,我们从 MCU 的基础知识讲起,涵盖芯片选型、开发环境搭建、基础外设(如 GPIO、定时器、串口等)的详细使用教程,以通俗易懂的方式引领你踏入 MCU 开发的大门,帮助你快速建立起扎实的开发基础,轻松克服入门时的种种困惑。
jiuri_1215
学习与分享
展开
-
GD32 GCC 环境 移植FreeRTOS
GD32 系列微控制器是兆易创新推出的高性能、低成本的 ARM Cortex 内核微控制器,具有丰富的外设和出色的性能。为了方便开发,推荐使用 Visual Studio Code 作为代码编辑器,并安装相关的扩展,如 Cortex-Debug、C/C++ 等。在 FreeRTOS 中,需要对一些中断处理函数进行修改,以确保 FreeRTOS 能够正常工作。文件夹中,根据使用的编译器和硬件平台,只保留需要的文件。文件是 FreeRTOS 的配置文件,用于配置 FreeRTOS 的各种参数。原创 2025-02-14 16:46:43 · 956 阅读 · 0 评论 -
GD32 ADC 工作模式及应用详解
GD32 ADC 是一个逐次逼近型 ADC,具有高分辨率(通常为 12 位)、多通道(多个模拟输入通道)等特点。它支持多种工作模式,能够灵活地适应不同的应用需求。在使用 GD32 ADC 之前,需要进行一系列的初始化配置,包括时钟配置、GPIO 初始化、模式设置、触发方式设置等。GD32 ADC 提供了丰富的工作模式,能够满足不同应用场景的需求。开发者在使用时,需要根据具体的应用需求选择合适的工作模式或模式组合。原创 2025-02-13 17:42:12 · 1191 阅读 · 0 评论 -
一种MCU设备框架设计与实现
统一的接口定义设备注册管理机制可扩展的设备操作面向对象的设计思想通过这样的框架,可以大大提高驱动程序的可维护性和可复用性,使得MCU的设备管理更加规范和统一。原创 2025-02-11 16:08:00 · 713 阅读 · 0 评论 -
单片机内存管理剖析
在单片机系统中,内存资源通常是有限的,因此高效的内存管理至关重要。合理地分配和使用内存可以提高系统的性能和稳定性,避免内存泄漏和碎片化问题。单片机的内存主要包括程序存储器(如 Flash)和数据存储器(如 RAM),其中数据存储器又可进一步分为静态数据区、栈区和堆区。动态内存分配主要发生在堆区,而sbrkmalloc和free这三个函数 / 系统调用在堆内存管理中起着关键作用。原创 2025-01-23 15:08:21 · 2049 阅读 · 0 评论 -
GD32F303 GCC 环境搭建
目标(Target):定义了最终生成的可执行文件的名称为app。在后续的构建规则中,所有的中间文件和最终输出文件都围绕这个名称展开,如和分别表示生成的 ELF 格式可执行文件、十六进制文件和二进制文件。构建变量DEBUG = 1:用于控制是否开启调试信息。当DEBUG为 1 时,在CFLAGS中会添加调试相关的编译选项,这些选项使得生成的可执行文件包含调试符号,方便在调试器中进行源代码级别的调试。OPT = -Os:指定了优化级别为Os,这是一种针对代码大小的优化选项。原创 2025-01-21 20:23:45 · 1474 阅读 · 0 评论 -
GD32 启动文件详解
在嵌入式开发领域,GD32 微控制器凭借其强大的性能和丰富的功能得到了广泛应用。而启动文件作为系统启动的基石,其内部的代码逻辑和机制对于系统的正常运行起着至关重要的作用。本文将对 GD32 启动文件进行详细解读,深入剖析其各个功能模块的实现原理和意义。原创 2025-01-15 20:06:57 · 1292 阅读 · 0 评论 -
深入剖析 GD32 LD文件
LD 文件作为链接器脚本文件,在整个嵌入式开发流程中占据着举足轻重的地位。当编译器将我们编写的源代码转化为目标文件后,这些目标文件就如同零散的零件,而链接器的使命就是将这些零件以及所需的库文件巧妙地组合成一个完整且可执行的文件。在这个过程中,LD 文件就为链接器提供了详尽的操作指南。它会明确告知链接器如何对这些文件进行整合,怎样合理地分配内存空间,以及程序启动的入口点应设置在何处等核心信息。原创 2025-01-14 20:11:39 · 1132 阅读 · 0 评论 -
GD32 基于 CAN 总线 IAP 升级方案
文章主要介绍了 GD32 微控制器基于 CAN 总线的 IAP(在应用编程)升级方案。该方案利用 CAN 总线的高可靠性和远距离传输能力,使设备能够在运行状态下实现远程自主升级,广泛应用于汽车电子、工业自动化等领域。原创 2025-01-04 15:50:53 · 1700 阅读 · 0 评论 -
MCU日志系统设计
在嵌入式系统中,日志系统对于系统的调试、监控以及故障排查至关重要。本文设计旨在构建一个基于嵌入式文件系统(FATFS 或 Littlefs)的高效、可靠且灵活的日志系统,通过引入日志服务的概念,进一步优化日志的管理和使用方式,为嵌入式系统的稳定运行提供有力保障。原创 2025-01-01 13:23:11 · 967 阅读 · 0 评论 -
串口通信协议数据接收处理的深度探索与实践
在电子通信领域,串口通信作为一种基础且广泛应用的通信方式,承载着设备间数据交互的重要使命。然而,在实际的串口通信过程中,接收和处理协议数据会面临诸多复杂情况,如断包、脏数据(尤其是首尾脏数据)、多包传输以及多协议并存等问题。有效解决这些问题对于确保串口通信的稳定性、准确性和可靠性至关重要。本文将深入探讨这些问题,并结合 C 语言示例代码给出相应的解决策略。原创 2024-12-28 10:46:28 · 1269 阅读 · 0 评论 -
GD32 CAN 应用深度剖析:从原理到实战项目
CAN(Controller Area Network)总线作为一种广泛应用于汽车电子、工业自动化等领域的串行通信协议,自 20 世纪 80 年代诞生以来,凭借其多主竞争式总线结构和差分信号传输方式,在复杂电磁环境下展现出强大的抗干扰能力和稳定的数据传输性能。原创 2024-12-26 20:30:48 · 923 阅读 · 0 评论 -
GD32 SPI 应用深度剖析:从原理到实战项目
SPI(Serial Peripheral Interface)是一种同步串行通信协议,由摩托罗拉公司提出,在嵌入式系统中广泛应用于微控制器与各种外设之间的数据传输。:时钟信号线,由主设备产生,用于同步数据传输。其频率决定了数据传输的速率,在不同的应用场景下,可根据外设的要求灵活设置,例如对于一些低速的传感器,可能使用较低的 SCK 频率,如几百 kHz;而对于高速的存储设备或显示屏,SCK 频率可能会达到几十 MHz。:主设备输出从设备输入数据线,主设备通过这条线将数据发送给从设备。原创 2024-12-25 18:03:36 · 1205 阅读 · 0 评论 -
GD32 I2C应用深度剖析:从原理到实战项目
所有连接到I2C总线上的设备,都共享这两根信号线,通过设备地址来区分彼此,就如同住在公寓里的住户,共用楼梯通道,但各有自家的门牌号码。若应答正常,逐字节发送数据,每发一字节都要检查应答,直至全部数据传输完毕,最后发出停止信号,结束此次“数据投递”。收到应答后,主机准备接收,每接收一字节,适时发出应答或非应答信号,依需求决定是否继续接收,全部接收完,发出停止信号,把数据“收入囊中”。代码清晰展现向EEPROM写入与读取数据的流程,从起始信号开启对话,到精准地址定位,再到数据的有序传输,完整实现数据的存与取。原创 2024-12-25 07:41:41 · 945 阅读 · 0 评论 -
GD32F103 CAN过滤器使用
在掩码模式下,过滤器使用一个掩码(Mask)值和一个标识符(ID)值来进行消息过滤。掩码用于指定消息 ID 中哪些位需要精确匹配,哪些位可以有一定的灵活性。例如,掩码为0xFFFF表示所有位都需要精确匹配,而掩码为0xFF00则表示低 8 位可以有变化,只有高 8 位需要精确匹配过滤器设置的标识符部分。 32 位掩码模式下,CAN_FxDATA0 和 CAN_FxDATA1 协同工作来实现灵活的消息过滤。原创 2024-12-13 18:13:44 · 992 阅读 · 0 评论 -
深入探索 C 语言位域:存储奥秘与应用实践
例如,在一个 8 位字节的存储单元里,如果先定义了一个 3 位的位域,接着定义一个 4 位的位域,编译器大概率会把它们紧凑放置在这一个字节内,剩余 1 位空闲。另一方面,在新兴的边缘计算设备中,位域助力数据的本地化紧凑处理,契合低功耗、小内存的设计理念,让智能设备在有限资源下发挥更大效能,持续在编程领域绽放独特魅力。这里 value 虽然定义为 3 位,但由于是有符号数,取值范围并非是 0 - 7,而是 - 4 到 3,符号位决定了数的正负性质,在使用和赋值时要格外留意,避免出现超出预期范围的值。原创 2024-12-25 07:50:28 · 870 阅读 · 0 评论