- 博客(13)
- 收藏
- 关注
原创 从零开始:uC/OS-III在STM32F103上的移植与实践
在嵌入式系统开发中,实时操作系统(RTOS)扮演着至关重要的角色。相比于传统的前后台系统,RTOS提供了多任务管理、资源分配、任务调度等强大功能。本文将以经典的uC/OS-III为例,详细介绍如何将其移植到STM32F103平台,并创建三个具有不同周期的任务。RTOS基本概念:任务、调度、同步机制移植流程:从源码添加到系统配置的完整过程多任务设计:如何合理划分任务和设置优先级调试技巧:常见问题的识别和解决方法uC/OS-III作为一个成熟可靠的RTOS,为复杂的嵌入式应用提供了坚实的基础。
2025-11-03 17:55:10
946
原创 STM32F103驱动OLED显示与I2C协议分析实战
本实验基于STM32F103C8T6微控制器,通过I2C接口驱动0.96寸OLED显示屏(SSD1306芯片),实现了学号姓名显示、滑动特效和动态图案显示功能。实验使用STM32CubeMX进行硬件配置,包括72MHz时钟设置和I2C2接口初始化(PB10-SCL,PB11-SDA)。通过移植精简的U8g2图形库,实现了多种显示效果:静态文本显示、左右滑动动画以及旋转方块、弹跳球体等动态图案。实验重点分析了I2C通信协议在嵌入式显示中的应用,并提供了完整的硬件连接方案和软件实现代码,为STM32与OLED的
2025-11-02 18:42:43
914
原创 STM32F103基于I2C协议的AHT20温湿度采集系统实现
本文详细介绍了基于STM32F103微控制器与AHT20温湿度传感器的数据采集系统设计。实验通过I2C总线协议实现传感器数据采集,使用OLED显示屏实时显示温湿度值,并通过串口通信将数据发送至上位机。硬件配置包括STM32F103C8T6最小系统板、AHT20模块、OLED显示屏等,软件部分涵盖STM32CubeMX的I2C和USART配置、AHT20驱动开发、OLED字模提取与显示实现。系统实现了温湿度数据的准确采集、实时显示和远程传输功能,为环境监测应用提供了完整解决方案。
2025-10-26 17:58:53
765
原创 STM32 PWM呼吸灯实现:TIM3和TIM4驱动双LED呼吸效果
本实验基于STM32F103C8T6开发板,通过三个定时器(TIM2/3/4)实现多路PWM呼吸灯控制。硬件部分需要连接2个外部LED和板载LED(PC13),使用STM32CubeMX配置定时器参数产生1kHz PWM信号。实验采用三种呼吸效果:线性变化(TIM3/TIM4)和正弦波变化(TIM2),通过结构体参数控制各LED的独立呼吸速度和亮度范围。代码实现包含PWM初始化、GPIO配置、中断处理和核心呼吸算法,最终实现三路LED以不同速度平滑呼吸的视觉效果。
2025-10-20 18:35:05
1991
原创 STM32定时器多任务实践:精准控制LED闪烁与串口通信
本实验基于STM32F103C8T6开发板,使用定时器中断实现多任务并发执行。TIM2:每2秒控制LED闪烁TIM3:每5秒通过串口发送"hello windows!"消息相比传统的延时函数方式,定时器中断能够实现更精准的时间控制,同时让CPU能够处理其他任务。本实验成功演示了如何使用STM32的定时器中断实现多任务并发控制。通过精准的硬件定时,实现了LED的2秒闪烁和串口的5秒消息发送,充分体现了STM32在实时控制方面的优势。相比传统的软件延时方式,定时器中断提供了更高效、更精准的时间控制方案。
2025-10-20 12:07:09
1677
原创 STM32串口通信实验:中断方式与DMA方式分别实现
本实验在STM32F103C8T6上实现了两种串口通信方式:中断方式和DMA方式。实验使用Keil MDK-ARM开发环境,通过USART1以115200波特率进行通信。中断方式通过NVIC配置实现实时响应控制命令,适合交互式应用;DMA方式则专注于高速数据传输,适合大数据量传输场景。硬件连接包括ST-Link V2调试器和USB转TTL模块,分别与MCU的SWD接口和USART1引脚相连。实验提供了完整的代码实现,展示了如何配置CubeMX并编写中断处理逻辑,实现"#"/"*
2025-10-19 16:36:06
828
原创 STM32串口通信实验:轮询方式实现数据发送与控制
STM32串口通信实验 本实验基于STM32F103C8T6微控制器,通过USART1实现与上位机的串口通信。实验包含两部分功能:1)连续发送"hello windows!"字符串;2)通过特定字符控制发送启停('#'停止,'*'启动)。硬件连接采用ST-Link调试器和USB转TTL模块,软件配置使用STM32CubeMX生成Keil工程。代码实现了串口初始化、消息发送和接收控制功能,通过轮询方式检测上位机指令,动态控制数据发送状态。实验验证了STM32串口通信的基本功能和控制机制。
2025-10-18 20:21:31
1858
原创 Ubuntu与STM32下C程序变量内存分布对比实验
摘要: 本实验对比了Ubuntu(x86)和STM32(ARM Cortex-M)系统中C程序变量的内存分布。通过打印全局变量、局部变量、静态变量、常量及堆变量的地址,发现二者结构相似但地址空间不同:在STM32中,常量存储在Flash(0x08000000起),变量位于SRAM(0x20000000起),栈向高地址增长,堆向低地址分配。实验验证了Cortex-M的固定内存映射特性,包括Code区、SRAM和外设区等划分,为理解嵌入式内存管理提供了实践基础。
2025-10-10 14:20:08
684
原创 静态库与动态库的编译与链接实验
摘要:本实验通过编写包含x2x()和x2y()函数的C程序,实践了使用gcc编译目标文件、ar工具生成静态库.a文件以及gcc生成动态库.so文件的方法。实验对比了静态链接(prog_static)和动态链接(prog_dynamic)生成的可执行文件大小,发现两者均为16KB,差异不明显,这是由于函数体量小、链接器优化等因素所致。实验帮助掌握了基本的编译链接流程,理解了静态库适合独立发布、动态库适合多程序共享的特点。(150字)
2025-10-09 12:46:22
291
原创 基于HAL库实现LED流水灯及Proteus8.15仿真
本文介绍了使用STM32CubeMX和Keil5实现LED流水灯的开发过程。首先通过CubeMX配置STM32F103C8芯片,设置SYS、RCC和GPIO端口(PA0、PB0、PC15),调整时钟并生成工程。接着在Keil5中修改main.c代码,添加LED控制逻辑实现1秒间隔的流水灯效果,编译并烧录程序。最后展示了实际运行效果视频和Proteus8.15的仿真结果,验证了设计的正确性。整个过程涵盖了从硬件配置到软件开发的完整流程,适合STM32初学者参考学习。
2025-10-07 21:02:08
189
原创 采用外部中断模式控制LED亮灭及Proteus8.15仿真
首先在CubeMX生成的main.c中加入这一段。双击STM32,选择hex文件。外部中断模式控制LED亮灭。然后编译项目并烧录即可。
2025-10-07 20:59:58
274
原创 STM32LED流水灯实验教程
本文介绍了两种控制STM32 LED流水灯的实现方法:寄存器方式和标准外设库方式。寄存器方式通过直接操作RCC、GPIO等寄存器实现,包括时钟使能、引脚模式配置和输出控制,代码展示了PA0、PB0、PC15三个引脚的流水灯效果。标准外设库方式则基于STM32官方库,通过配置工程文件、添加库文件和使用库函数实现相同功能。两种方法均能实现LED依次点亮的流水效果,但外设库方式更加模块化和易于维护。文中提供了完整的代码实现和关键寄存器配置说明,并附有实际运行效果视频链接。
2025-09-26 22:34:13
962
原创 Ubuntu系统上使用gcc、makefile编译c程序
本文介绍了在Ubuntu 22.04系统下使用gcc 11.4.0编译器进行C程序开发的完整流程。首先创建目录并编写简单的hello.c程序,通过gcc编译执行;随后演示多文件编译(main1.c和sub1.c)。重点讲解了Makefile的编写与使用,包括目标文件定义和清理规则。最后在Windows系统上验证了main1.c的跨平台编译。整个过程涵盖了从单文件到多文件项目的编译管理方法,展示了Linux环境下C程序开发的基本工作流程。
2025-09-21 12:24:40
304
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅