新闻详情

新闻详情

首页 / 资讯中心 / 详情

STM32F103C8T6_Keil_寄存器流水灯实验

发布时间:2026/11/5 9:47:01来源:尧图网络
STM32F103C8T6_Keil_寄存器流水灯实验
一、实验要求了解 STM32F103C8T6 最小系统核心板的基本引脚及 GPIO 资源。使用 GPIOA、GPIOB、GPIOC 三个端口分别控制 3 个 LEDLED 轮流闪烁每个状态保持约 1 秒。采用寄存器方式完成 GPIO 初始化和 LED 控制。使用 Keil 建立工程并完成编译、下载和板级验证。将开发板自带 PC13 LED 加入流水灯效果。二、硬件与引脚选择LEDMCU 引脚GPIO 配置点亮逻辑LED1PA0推挽输出高电平亮LED2PB0推挽输出高电平亮LED3PC13板载推挽输出低电平亮常见 STM32F103C8T6 Blue Pill 开发板的板载 LED 连接在 PC13并且通常采用低电平点亮。三、主要寄存器说明1. RCC_APB2ENR用于开启 GPIO 外设时钟。bit2IOPAENGPIOA 时钟使能bit3IOPBENGPIOB 时钟使能bit4IOPCENGPIOC 时钟使能RCC-APB2ENR|(1U2)|(1U3)|(1U4);2. GPIOA-CRLPA0 位于 GPIOA 低 8 位因此使用 CRL 配置。PA0 对应 bit0bit3。设置 MODE001、CNF000即 10 MHz 通用推挽输出。3. GPIOB-CRLPB0 同样使用 CRLGPIOB-CRL~(0xFU0);GPIOB-CRL|(0x1U0);4. GPIOC-CRHPC13 属于 GPIOC 高 8 位因此使用 CRH。PC13 对应 CRH 的 bit20bit23GPIOC-CRH~(0xFU20);GPIOC-CRH|(0x1U20);5. BSRR 和 BRRBSRR 用于将 GPIO 位置高BRR 用于将 GPIO 位置低。四、程序运行流程开始 ↓ 开启 GPIOA/B/C 时钟 ↓ 配置 PA0、PB0、PC13 为推挽输出 ↓ 初始化 SysTick产生 1 ms 节拍 ↓ PA0 LED 点亮 1 秒 ↓ PB0 LED 点亮 1 秒 ↓ PC13 LED 点亮 1 秒 ↓ 返回 PA0 ↓ 循环运行五、代码实现#includestm32f10x.h/* * STM32F103C8T6 寄存器方式三色流水灯 * * LED1 : PA0 - 外接LED高电平亮 * LED2 : PB0 - 外接LED高电平亮 * LED3 : PC13 - Blue Pill板载LED低电平亮 * * 流水顺序 * PA0亮1秒 - PB0亮1秒 - PC13亮1秒 - 循环 *//* LED引脚定义 */#defineLED1_PIN(1U0)/* PA0 */#defineLED2_PIN(1U0)/* PB0 */#defineLED3_PIN(1U13)/* PC13 *//* 毫秒计数 */volatileuint32_tg_ms0;/* SysTick中断 */voidSysTick_Handler(void){g_ms;}/* 毫秒延时 */voidDelay_ms(uint32_tms){uint32_tstartg_ms;while((g_ms-start)ms){/* 等待 */}}/* GPIO初始化 */voidGPIO_Init(void){/* * 开启GPIOA、GPIOB、GPIOC时钟 * * APB2ENR: * bit2 IOPAEN * bit3 IOPBEN * bit4 IOPCEN */RCC-APB2ENR|(1U2)|(1U3)|(1U4);/* * PA0配置 * * CRL bit0~3控制PA0 * * MODE0 01 * CNF0 00 * * 即 * 10MHz通用推挽输出 */GPIOA-CRL~(0xFU0);GPIOA-CRL|(0x1U0);/* * PB0配置 * * CRL bit0~3控制PB0 */GPIOB-CRL~(0xFU0);GPIOB-CRL|(0x1U0);/* * PC13配置 * * CRH bit20~23控制PC13 * * MODE13 01 * CNF13 00 * * 即 * 10MHz通用推挽输出 */GPIOC-CRH~(0xFU20);GPIOC-CRH|(0x1U20);/* * 上电后全部熄灭 *//* PA0输出高电平 */GPIOA-BSRRLED1_PIN;/* PB0输出高电平 */GPIOB-BSRRLED2_PIN;/* PC13输出高电平板载LED熄灭 */GPIOC-BSRRLED3_PIN;}/* 三个LED全部熄灭 */voidLED_All_Off(void){/* PA0高电平 */GPIOA-BSRRLED1_PIN;/* PB0高电平 */GPIOB-BSRRLED2_PIN;/* PC13高电平 */GPIOC-BSRRLED3_PIN;}/* LED1亮 */voidLED1_On(void){LED_All_Off();/* PA0低电平 */GPIOA-BRRLED1_PIN;}/* LED2亮 */voidLED2_On(void){LED_All_Off();/* PB0低电平 */GPIOB-BRRLED2_PIN;}/* LED3亮 */voidLED3_On(void){LED_All_Off();/* * PC13板载LED低电平点亮 */GPIOC-BRRLED3_PIN;}/* 主函数 */intmain(void){/* GPIO初始化 */GPIO_Init();/* * SysTick配置 * * 每1ms产生一次中断 */SysTick_Config(SystemCoreClock/1000U);while(1){/* PA0 LED亮1秒 */LED1_On();Delay_ms(1000);/* PB0 LED亮1秒 */LED2_On();Delay_ms(1000);/* PC13 LED亮1秒 */LED3_On();Delay_ms(1000);}}六、板级验证程序下载成功后PA0 对应 LED 点亮约 1 秒。PA0 熄灭PB0 LED 点亮约 1 秒。PB0 熄灭PC13 板载 LED 点亮约 1 秒。PC13 熄灭重新回到 PA0。程序持续循环。七、实验总结通过本实验熟悉了 STM32F103C8T6 GPIO 的寄存器操作流程。程序从 RCC 时钟开启、GPIO 模式配置到输出电平控制逐步完成 LED 控制没有依赖 HAL GPIO 接口。实验中比较重要的一点是不同 LED 的有效电平可能不同。普通外接 LED 根据实际接线确定亮灭逻辑而 Blue Pill 常见的 PC13 板载 LED 通常为低电平点亮因此程序需要单独处理 PC13。使用 SysTick 建立 1 ms 时间基准再通过毫秒计数实现 1 秒切换可以避免单纯使用空循环造成的延时不稳定也方便后续扩展不同流水速度和显示模式。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/4 15:56:54

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/4 22:55:41

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/4 17:01:23

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/4 12:33:12

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/5 4:24:57

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/5 4:24:57

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉