STM32F10x 串口指令控制单路共阳极数码管
2026/7/17 2:16:23 网站建设 项目流程

一、项目概述

1.1 项目功能

本工程基于 STM32F10x 标准库开发,实现串口上位机指令控制静态共阳极数码管

  1. 硬件采用 GPIOB PB8~PB15 输出 8 位段码驱动单只数码管;
  2. USART1(PA9/PA10)9600 波特率中断接收字符指令;
  3. 串口发送0~9、A~F字符,数码管实时显示对应数字 / 字母;
  4. SysTick 硬件定时器提供高精度微秒延时,保障时序稳定。

1.2 硬件资源分配

表格

外设模块引脚功能描述
数码管段选PB8~PB15输出 8 位共阳极段码 a~dp
串口 1 TXPA9串口数据发送
串口 1 RXPA10串口数据接收
系统定时器SysTick提供 us 级延时
主控芯片STM32F103 系列系统主频 72MHz

1.3 硬件电路说明

  1. 数码管类型:共阳极,公共端接 3.3V;IO 输出低电平点亮段,高电平熄灭;
  2. PB8~PB15 分别串联限流电阻后连接数码管 a~dp 段;
  3. 串口 TTL 电平直接连接上位机串口工具,无需电平转换。

二、文件分层架构说明

工程分为 4 个核心文件,模块化解耦:

  1. main.c:主逻辑,数码管循环刷新、串口指令解析处理;
  2. usart.c / usart.h:串口 1 初始化、中断接收、字符串发送驱动;
  3. smg.c / smg.h:数码管 GPIO 端口初始化驱动;
  4. SysTick.c:系统延时底层驱动,提供delay_usdelay_ms

三、各文件代码详细解析

3.1 smg.h 数码管硬件宏定义头文件

c

运行

#ifndef __SMG_H #define __SMG_H #include "stm32f10x.h" #define SMG_PORT_RCC RCC_APB2Periph_GPIOB #define SMG_PORT GPIOB #define SMG_PIN GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15 void SMG_Init(void); #endif
  1. SMG_PORT_RCC:GPIOB 外设时钟掩码,初始化时开启端口供电;
  2. SMG_PORT:数码管输出端口 GPIOB;
  3. SMG_PIN:段选引脚集合 PB8~PB15;
  4. 函数声明SMG_Init():数码管 GPIO 初始化接口。

3.2 smg.c 数码管驱动

c

运行

#include "smg.h" void SMG_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(SMG_PORT_RCC, ENABLE); GPIO_InitStructure.GPIO_Pin = SMG_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(SMG_PORT, &GPIO_InitStructure); }

执行流程:

  1. 使能 GPIOB 外设时

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询