自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 STM32F103C8T6移植U8g2库驱动0.96寸OLED屏实战

点阵字模就是用一个二维的像素矩阵来表示一个汉字。每个像素点用一位二进制数表示:1 表示点亮(前景色),0 表示不点亮(背景色)。例如,显示一个16x16像素的汉字“中”,我们需要一个16行、16列的网格。将汉字“画”在这个网格上,有点的地方记为1,没点的地方记为0。

2025-10-31 14:29:55 406

原创 uC/OS-III在STM32F103上的移植与实践:构建多任务LED控制系统

分别将PendSV_Handler和Systick_Handler改为OS_CPU_PendSVHandler和OS_CPU_SysTickHandler。通过本次实践,我们成功验证了uC/OS-III在STM32平台上的稳定性和实用性,为更复杂的嵌入式应用开发奠定了坚实基础。本文将详细介绍如何将uC/OS-III移植到STM32F103C8T6微控制器,并构建一个包含三个任务的多任务系统。该处宏定义设置堆空间的大小,STM32F103C8T6的RAM只有20K,所以要改小一点,这里改为了5。

2025-10-29 23:54:03 2249

原创 2 秒一次的温湿度监测:基于 STM32F103C8T6 与 AHT20 的 I2C 通信实践

这次实验最深刻的体会是:嵌入式开发中,对通信协议和芯片原理的理解,是看懂代码、解决问题的核心前提。我花了大量时间啃透 I2C 协议和 AHT20 的读取逻辑,又参考多名博主的方法反复试错,才最终实现温湿度采集,整个过程既曲折又让人豁然开朗。

2025-10-26 19:17:46 950

原创 STM32 双路 PWM 呼吸灯实现教程:从 PWM 基础到实战应用

通过学习本文,希望大家能够深入掌握 PWM(脉冲宽度调制)的基础知识,包括其基本概念、在 STM32 中与 TIM(定时器)的紧密关系、PWM 输出的关键配置方法、占空比动态调整以实现呼吸灯效果的原理,以及多通道 PWM 各自的独立性特点。在此基础上,还能学会利用 HAL 库进行双路 PWM 呼吸灯的工程建立、代码编写、TIM 对应 GPIO 的配置,并成功完成烧录运行。

2025-10-18 21:31:56 611

原创 STM32 定时器从理论到实战:实现多任务并发

本文围绕 STM32“LED 定时闪烁 + 串口定时发送” 的多周期性任务需求,对比了硬件定时器中断与软件轮询两种核心实现方案,梳理了落地要点与选型逻辑。硬件定时器中断方案以 “高实时性” 为核心,通过 CubeMX 配置 TIM2/TIM3(1 秒中断周期)、使能 NVIC 中断并设置优先级,在回调函数中通过计数逻辑(TIM2 累计 2 次翻转 LED、TIM3 累计 5 次触发串口发送)实现任务并发。

2025-10-18 13:09:21 2299

原创 STM32 串口通信实战指南:HAL库轮询、中断、DMA 三种模式 + Keil 仿真波形与波特率剖析

在这次 STM32 串口通信的学习分享中,先讲解基于 HAL 库的 USART1 轮询方式,涵盖开发环境搭建、参数配置,以及连续发送数据和指令控制发送状态等功能实现;接着阐述串口中断与 DMA 通信,涉及开发环境配置和两种通信方式的具体实现;最后利用 Keil 软件仿真,在无示波器的情况下,对串口输出波形进行分析并测算波特率。全方位呈现了 STM32 串口通信从基础到进阶的多种模式与关键技术要点。

2025-10-17 15:59:44 1138

原创 串口通信入门:从理论到实战,串口通信原理与文件传输实验全指南

这是两者最核心的区别,直接决定了数据解析的方向,也是无法直接通信的关键原因。①RS232 电平标准采用 “负逻辑”:用负电压(-3V~-15V)代表逻辑 1(即数据里的 “1”),用正电压(+3V~+15V)代表逻辑 0(即数据里的 “0”)。②TTL 电平采用 “正逻辑”:用高正电压(+2.4V~+5V,常见 5V 或 3.3V)代表逻辑 1,用低电压(0V~+0.8V,接近 0V)代表逻辑 0。

2025-10-17 15:58:16 926

原创 基于HAL库和中断的LED流水灯(含STM32CubeMX、Proteus、Keil、gitee的使用)

本次嵌入式实践串联起多工具协同开发的全流程,收获颇丰。STM32CubeMX 可视化配置省去繁琐寄存器操作,自动生成的初始化代码让硬件配置效率倍增;HAL 库封装底层细节,让 LED 流水灯逻辑实现更聚焦功能本身。引入中断后,流水灯响应外部触发更灵活,深刻理解了实时系统中中断机制的重要性。Proteus 仿真提前验证电路与代码,避免了硬件调试的反复拆接,节省大量时间。gitee 则规范了代码版本管理,不仅方便回溯修改,也培养了工程化开发习惯。

2025-10-07 00:16:57 1955

原创 深入理解 C 程序内存分配:Ubuntu 与 STM32 对比

在 Ubuntu(x86)和 STM32(Cortex - M3)平台上,通过代码验证内存分配:Ubuntu 采用 32 位虚拟地址,各内存区域(栈、堆、全局区等)地址范围广且动态灵活;STM32 使用物理地址,受硬件存储器映射限制,栈、堆等区域地址范围固定且内存资源有限。二者均体现了栈、堆、全局区等内存分配特性,却因系统架构和资源差异,在地址范围与区域特性上存在明显不同,更深入理解了不同平台的存储器地址映射与内存管理机制。

2025-10-07 00:14:05 799

原创 gcc 编译工具链——从组件认知到实践操作

通过这次实践,了解gcc工具集的工作原理:它不是一个工具在战斗,而是编译器、Binutils 工具、运行时库协同工作的结果。从预处理到链接的四个阶段,每个步骤都有明确的输出和作用;ELF 文件的段结构则是理解编译结果的关键;而多文件编译和库链接,更是实际开发中必须掌握的技能。

2025-10-03 21:08:49 923

原创 Linux 环境下gcc生成静态库.a和动态库.so文件以及其使用

静态库(.a)编译时嵌入程序,可独立运行、效率高,但体积大、更新需重编;动态库(.so)运行时加载,体积小、可共享、更新方便,但依赖外部文件。二者均需先编为.o文件,静态库用ar打包,动态库需-fPIC和-shared。嵌入式用静态库,系统级应用选动态库,也可混合用平衡需求。

2025-10-01 23:30:29 1014

原创 STM32F103C8T6基于寄存器地址及标准库的LED流水灯

使用串口进行烧录,上位机可采用FlyMcu,然后通过USB转TTL线给目标设备进行烧录,接线的时候注意GND->GND,3.3->3.3,TX->RX,RX->TX,BOOT1设为0,BOOT0设为1,按复位键即可进入串口下载模式,打开FlyMcu软件,选择正确的串口,点击读器件信息,显示连接成功。亮灭控制:主循环中,通过GPIO_ResetBits置低目标引脚(点亮 LED),GPIO_SetBits置高其他引脚(关闭 LED),配合 1 秒延时实现轮流点亮。

2025-09-26 18:14:14 778

原创 嵌入式基础——Ubuntu系统使用gcc和Makefile编译C程序

通过本次任务,我们分别实践了单文件直接编译、多文件命令行编译以及Makefile编译三种方式,它们各有优势:单文件直接编译简单直接,适合快速验证小程序;多文件命令行编译无需额外配置,便于管理少量源文件;Makefile编译则能自动化处理依赖关系,仅重新编译修改文件,显著提升大型项目效率,且便于维护和扩展。

2025-09-21 01:06:39 1142 1

空空如也

空空如也

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

TA关注的人

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