了解STM32最小系统核心板

发布时间:2026/9/24 9:20:48

了解STM32最小系统核心板 STM32F103C8T6 多端口流水灯实验报告STM32F103C8T6 多端口流水灯实验报告博客发布 / 学习通提交 Markdown可直接导出 PDF配套代码、git 操作说明完整满足作业要求芯片STM32F103C8T6Blue Pill 蓝板最小系统功能GPIOA/GPIOB/GPIOC 三个端口各 1 只 LED 板载 PC13 LED4 个 LED 轮流闪烁间隔 1s一、实验目的认识 STM32F103C8T6 最小系统Blue Pill硬件组成了解最小系统核心电路。掌握 STM32 GPIO 寄存器底层操作理解 GPIO 端口时钟、模式、输出寄存器配置。使用 GPIOA、GPIOB、GPIOC 三个不同端口引脚外接 LED实现轮流闪烁同时复用板载 PC13 LED 加入流水灯序列。学会 Keil 工程创建、代码编译、程序烧录掌握 Git 基础命令将工程上传至 Gitee/GitHub 代码仓库。二、实验器材STM32F103C8T6 最小系统板Blue Pill面包板、杜邦线LED 发光二极管 ×3红、绿、蓝220Ω 限流电阻 ×3ST-LINK 下载器Keil MDK5 开发环境Git 工具、Gitee/GitHub 账号三、硬件电路设计3.1 最小系统简介STM32F103C8T6 最小系统包含主芯片、8MHz 外部高速晶振 HSE、32.768K RTC 晶振、复位电路、BOOT 启动配置电路、电源稳压、下载接口。板载 LED 连接在PC13 引脚LED 是低电平点亮PC13 输出 0灯亮输出 1灯灭。3.2 外接 LED 硬件接线全部 LED 采用灌电流接法GPIO 引脚输出低电平点亮 LED串联 220Ω 限流电阻保护 LED。| LED 编号 | 端口引脚 | 颜色 | 接线说明 || ---- | ---- | ---- | ---- || LED1 | PA0GPIOA | 红 | PA0 → 220Ω 电阻 → LED 阳极LED 阴极 → GND || LED2 | PB0GPIOB | 绿 | PB0 → 220Ω 电阻 → LED 阳极LED 阴极 → GND || LED3 | PC1GPIOC | 蓝 | PC1 → 220Ω 电阻 → LED 阳极LED 阴极 → GND || LED4板载 | PC13GPIOC | 板载 | 板载自带无需外接元件低电平点亮 |原理引脚输出低电平 0V电流从 3.3V 经过 LED、电阻流入 GPIO 引脚LED 点亮引脚输出高电平 3.3V两端无压差LED 熄灭。3.3 电路原理图本实验电路原理图由STM32最小系统核心电路与多路LED流水灯驱动电路两部分组成整体采用3.3V直流供电所有LED均为灌电流驱动接法电路结构简洁、稳定性高适配本次多端口LED轮流点亮的实验需求。一、原理图整体架构供电电路由最小系统板5V/3.3V稳压电路输出稳定3.3V电压为芯片及所有LED外设提供工作电源杜绝电压波动导致的器件异常。主控电路以STM32F103C8T6主控芯片为核心搭载8MHz外部晶振电路提供系统时钟、复位电路实现系统重启、BOOT配置电路保障正常上电启动构成完整最小工作系统。外设驱动电路包含4路LED指示电路其中3路为外接独立LED电路1路为板载LED电路分别对应不同GPIO端口实现多端口独立控制。二、详细引脚电路连接原理图核心参数外接LED电路3路外设电路电路结构完全一致均采用“GPIO引脚220Ω限流电阻LED指示灯接地”的标准灌电流电路。PA0、PB0、PC1三个引脚分别串联1颗220Ω限流电阻限流电阻可限制回路最大电流避免过流烧毁LED灯珠及芯片GPIO引脚电阻另一端对应接入红、绿、蓝三色LED阳极所有LED阴极统一接入电路GND地端。板载LED电路板载LED固定连接主控芯片PC13引脚电路内置限流保护元件无需外接电阻电路结构精简默认低电平触发点亮、高电平熄灭。三、电路工作原理电路通电后STM32最小系统正常上电启动系统时钟初始化完成GPIO端口配置为通用推挽输出模式。当对应GPIO引脚输出低电平0V时3.3V电源、LED灯珠、限流电阻、GPIO引脚形成完整闭合回路产生工作电流LED点亮当引脚输出高电平3.3V时电路两端无电压压差回路无电流LED熄灭。通过程序循环控制PA0、PB0、PC1、PC13四个引脚的电平状态分时拉低不同端口电平、其余端口保持高电平即可实现四路LED依次轮流点亮、循环流水的实验效果。同时220Ω限流电阻起到核心保护作用将回路电流控制在LED额定工作范围内保障电路长期稳定运行。四、原理图设计要点所有LED采用共地设计电路布线规整有效避免多路灯光串扰问题严格匹配限流电阻阻值兼顾LED亮度与器件安全无过流、欠流问题多端口GPIO独立布线互不干扰可实现单路独立控制满足流水灯逻辑需求。四、程序设计思路 寄存器说明4.1 设计思路开启 GPIO 端口时钟RCC 寄存器GPIOA/GPIOB/GPIOC 挂载在 APB2 总线上打开对应端口时钟。配置 GPIO 模式寄存器 CRL/CRH将 PA0、PB0、PC1、PC13 设置为通用推挽输出模式最大速度 2MHz。输出控制使用 ODR 输出寄存器写 0 点亮 LED写 1 熄灭 LED。简单软件延时函数循环空操作实现约 1s 延时裸机无 SysTick简单软件延时适合本实验。流水逻辑依次点亮 1 个 LED其余全部熄灭延时 1s切换下一个循环PA0 → PB0 → PC1 → PC13循环往复。4.2 寄存器地址与详细参数重点答题部分STM32F103 内核Cortex-M3APB2 外设基地址 0x40010000RCC 时钟寄存器RCC_APB2ENR地址0x40021018位定义Bit2IOPAEN 1 → 开启 GPIOA 时钟Bit3IOPBEN 1 → 开启 GPIOB 时钟Bit4IOPCEN 1 → 开启 GPIOC 时钟GPIOA 寄存器组基地址0x40010800GPIOA_CRL端口配置低寄存器0x40010800控制 PA0~PA7PA0CNF00 (通用推挽输出)MODE01 (输出速度 2MHz)对应 bit0~bit3 0011GPIOA_ODR输出寄存器0x4001080Cbit0 控制 PA0 输出电平GPIOB 寄存器组基地址0x40010C00GPIOB_CRL0x40010C00PB0bit0~bit3 0011推挽输出 2MHzGPIOB_ODR0x40010C0Cbit0 控制 PB0GPIOC 寄存器组基地址0x40011000GPIOC_CRL0x40011000PC1 在 CRLbit4~bit70011GPIOC_CRH0x40011004PC13 在 CRHbit20~bit230011GPIOC_ODR0x4001100Cbit1、bit13 分别控制 PC1、PC13CNF [1:0]00 推挽输出MODE [1:0]01 → 2MHz 输出速度。五、C 语言 寄存器版完整代码带详细注释新建 main.c直接复制纯寄存器操作不调用标准库函数//STM32F103C8T6 寄存器版本流水灯//PA0、PB0、PC1外接LEDPC13板载LED轮流闪烁间隔1s#include “stm32f10x.h”//寄存器宏定义直接映射地址#define RCC_APB2ENR (*(volatile unsigned int *)0x40021018)//GPIOA 寄存器#define GPIOA_CRL (*(volatile unsigned int)0x40010800)#define GPIOA_ODR ((volatile unsigned int *)0x4001080C)//GPIOB 寄存器#define GPIOB_CRL (*(volatile unsigned int)0x40010C00)#define GPIOB_ODR ((volatile unsigned int *)0x40010C0C)//GPIOC 寄存器#define GPIOC_CRL (*(volatile unsigned int)0x40011000)#define GPIOC_CRH ((volatile unsigned int)0x40011004)#define GPIOC_ODR ((volatile unsigned int *)0x4001100C)/**brief 软件延时函数简单空循环大约延时1s72MHz系统时钟*/void Delay1s(void){unsigned int i,j;for(i0;i1000;i)for(j0;j7200;j);}/**brief GPIO初始化PA0 PB0 PC1 PC13 推挽输出*/void LED_GPIO_Init(void){//1. 开启APB2端口时钟Bit2 IOPA、Bit3 IOPB、Bit4 IOPC置1RCC_APB2ENR | (12) | (13) | (14);// GPIOA PA0配置推挽输出2MHzGPIOA_CRL ~(0x0F 0); //清空PA0对应的4位GPIOA_CRL | (0x03 0); //MODE01,CNF00 →00110x03GPIOA_ODR | (10); //PA0初始高电平LED熄灭// GPIOB PB0配置推挽输出2MHzGPIOB_CRL ~(0x0F 0);GPIOB_CRL | (0x03 0);GPIOB_ODR | (10); //PB0初始高电平LED熄灭// GPIOC PC1配置推挽输出2MHzGPIOC_CRL ~(0x0F 4); //PC1对应bit4~bit7GPIOC_CRL | (0x03 4);GPIOC_ODR | (11); //PC1初始高电平LED熄灭// GPIOC PC13配置推挽输出2MHzPC13在CRH寄存器每组4bit13号引脚对应第5组(bit20~23)GPIOC_CRH ~(0x0F 20);GPIOC_CRH | (0x03 20);GPIOC_ODR | (113); //PC13初始高电平板载LED熄灭}int main(void){LED_GPIO_Init(); //初始化GPIOwhile(1) { //第1步点亮PA0其余全部熄灭 GPIOA_ODR ~(10); //PA0输出低亮 GPIOB_ODR | (10); GPIOC_ODR | (11) | (113); Delay1s(); //第2步点亮PB0其余熄灭 GPIOA_ODR | (10); GPIOB_ODR ~(10); GPIOC_ODR | (11) | (113); Delay1s(); //第3步点亮PC1其余熄灭 GPIOA_ODR | (10); GPIOB_ODR | (10); GPIOC_ODR ~(11); GPIOC_ODR | (113); Delay1s(); //第4步点亮PC13板载LED其余熄灭 GPIOA_ODR | (10); GPIOB_ODR | (10); GPIOC_ODR | (11); GPIOC_ODR ~(113); Delay1s(); }}六、实验步骤硬件搭建面包板接入 3 只 LED220Ω 电阻分别连接 PA0、PB0、PC1 到 LED 阳极LED 阴极接 GND。Keil MDK 新建 STM32F103C8 工程添加 main.c选择芯片 STM32F103C8T6配置 ST-LINK 下载。编译工程检查无报错将程序烧录进最小系统板。上电测试4 个 LED 按照 PA0→PB0→PC1→PC13 顺序轮流点亮间隔 1 秒循环。现象观察每时刻只有 1 个灯亮其余熄灭循环流水。七、实验现象与结果烧录程序上电后八、实验分析与问题总结PC13 板载 LED 特性Blue Pill 板上 PC13LED 是低电平点亮很多新手容易写反电平出现常亮 / 不亮。软件延时本实验是简单循环延时精度不高适合演示高精度延时需要使用 SysTick 定时器。寄存器配置注意CRL 控制引脚 0\7CRH 控制引脚 8\15PC13 属于 CRH不能写到 CRL。必须开启端口时钟不开启 RCC 时钟GPIO 寄存器无法读写LED 完全不动作是最常见错误。
延伸阅读

更多相关文章

2026/9/24 9:20:48

新手搞懂 HLS 的 DVR 回看,直播时移常见踩坑

一、什么是直播 DVR 时移回看 很多监控直播、网课直播产品有回看功能,也就是 DVR 时移。通俗讲:直播正在播出,用户可以拖动进度条,回看几分钟、几十分钟之前已经播过的历史画面。点播视频全部分片提前生成好;而直播 D…

2026/9/24 10:25:56

ARM学习笔记(8)

今天整理 i2c 的笔记,总线这个东西看着简单,把时序捋清楚也就通了大半。I2C 是什么I2C 是两根线的串行通信总线,一根 SCL 时钟线、一根 SDA 数据线。靠地址寻址从机,地址是 7 位,最多能挂 127 个从机。起始信号之后发的…

2026/9/24 10:25:56

ESP8266与KiwisIoT实现低成本远程水位监测与告警系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 10:25:56

Tinkercad电路仿真实战:从点亮LED到Arduino闪烁与555定时器

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/24 10:20:55

2026好用H5工具测评:人人秀易企秀MAKA等主流平台的5大差异

2026年,H5工具选型已经进入“付费价值验证”阶段。企业不再只问“能不能做H5”,而是更关心:付费之后,能不能把创意设计、互动营销、私域获客、数据追踪、团队协作和系统部署串成一条闭环。本文只对比各平台付费版本,围…

2026/9/23 12:07:00

GAMP 5 基于风险的计算机化系统验证:软件分类与审计追踪实践

简介:《A Risk-Based Approach to Compliant GxP Computerized Systems》即业内熟知的GAMP 5指南,面向制药企业质量与IT合规人员、验证工程师及计算机化系统管理者,用于解决GxP法规环境下系统合规性难以科学落地的问题。文档以风险管理为主线…

2026/9/23 12:06:55

安全托管MSSP实战:从静态防御到人机协同的攻防运营与应急响应

简介:这份PPT围绕互联网业务安全托管服务展开,面向企业安全负责人、IT运维人员及关注MSSP/MSS选型的读者,重点回应传统安全过度依赖人工、碎片化静态防御难以对抗产业化攻击等痛点。资源共1个pptx文件,包体约30.63MB,以…

2026/9/24 0:00:21

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为…

2026/9/24 0:00:21

单细胞注释实战:基于Scanpy的标记基因与参考映射流程解析

简介:一份基于单细胞RNA测序数据的细胞类型注释算法研究Python毕业设计源码,针对计算机相关专业正在做毕设或需要项目实战的学习者,可用于课程设计与期末大作业。项目代码完整、经导师指导评审通过,可直接运行,覆盖数据…

2026/9/24 0:00:21

C#源生成器实战:用增量生成器替代反射,告别AOT崩溃

第一次在项目里被反射卡住,是在一个老旧的WinForms模块里:几十个类依赖PropertyChanged通知,运行时反射读属性、发通知,每次启动慢半拍不说,一上.NET Native/AOT裁剪模式几乎全面崩盘。后来我把这段逻辑全部改成C#源生…

2026/9/22 16:34:32

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/22 20:01:30

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/22 13:25:41

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码