# SJU_MCULesson_STM32 **Repository Path**: sparkstudiosju/SJU_MCULesson_STM32 ## Basic Information - **Project Name**: SJU_MCULesson_STM32 - **Description**: STM32F103C8T6单片机课程配套学习资料 - **Primary Language**: C - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-08-25 - **Last Updated**: 2025-08-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SJU_MCULesson_STM32 ## 介绍 ### 概述 本STM32单片机学习板基于STM32F1系列Cortex-M3内核单片机,集成了丰富的外设模块,旨在为初学者提供全面的嵌入式系统学习入门平台。学习板集成了多种常见的硬件接口与传感器,包括I2C、SPI、PWM、ADC、DAC、正交解码等模块接口,允许学习者通过实验了解STM32的外设资源和编程方法。该板涵盖从基本的GPIO、ADC/DAC操作,到更复杂的通信协议和多任务管理的实际应用,适用于初学者和进阶用户的多层次学习需求。 板载的外设模块不仅涵盖常用的传感器如DHT11和DS18B20,用于温湿度与温度测量,还包括RGB LED灯、数码管、编码器等,方便学习者深入理解外设驱动及其在嵌入式系统中的应用。此外,板载的CH340 USB转TTL模块能够与PC串口通信,大大简化了调试过程。该学习板为用户提供了从基础外设控制到复杂通信协议、模拟信号处理等各类实验项目,是全面理解嵌入式开发原理的理想平台。 点击查看[**程序开发学习指南**](https://gitee.com/sparkstudiosju/SJU_MCULesson_STM32/blob/master/%E5%AD%A6%E4%B9%A0%E6%8C%87%E5%8D%97.md) ## 一、软硬件开发平台 ### 1. 硬件平台 - 核心板:LCKFB-DKX-STM32F103C8T6 [核心板及学习文档中心](https://wiki.lckfb.com/zh-hans/dkx-stm32f103c8t6/) - 扩展板:EKB_SJU_STM32 - 下载器:DAP-LINK - *逻辑分析仪:nanoDLA ### 2. 软件平台 - IDE平台 1)Keil V5.32 2)STM32CubeMx V6.12 - 固件库版本: V3.5.0   - 工具软件 ## 二、 学习板概况 ### 1. 学习板整体硬件结构框架图 stm32c8t6_EBK_HW_Framwork.png ### 2. 学习板硬件资源布局图 stm32c8t6_EBK_HW_Framwork.png ### 3. 硬件模块与相关知识点 - **4只独立LED:** 知识点:通过独立GPIO口控制多个LED,学习最基础的GPIO控制,包括GPIO的初始化、状态切换及电平输出的配置。熟悉嵌入式系统中的信号指示与反馈功能。 - **蜂鸣器:** 知识点:蜂鸣器通过GPIO输出高低电平控制蜂鸣器工作,学习掌握GPIO的输出控制;同时也可以通过产生PWM信号控制发声,学习者可以理解如何通过PWM调制声音的频率与占空比,掌握在嵌入式系统中产生声音信号的基本方法。 - **线性振动马达模块:** 知识点:控制线性振动马达,学习如何通过PWM信号产生振动反馈,掌握振动反馈在HMI中的应用场景与驱动方法。 - **2个独立按键:** 知识点:通过检测按键状态变化,学习者可以学习GPIO输入状态的读取、状态机轮询技术以及中断响应技术,并掌握嵌入式系统中按键去抖动与多按键逻辑处理、掌握单片机外部中断EXTI处理的基本逻辑。 - **1位数码管(74HC595驱动):** 知识点:通过74HC595移位寄存器扩展GPIO输出,实现数码管的串行控制。掌握数码管显示的原理以及字符库的概念,理解74HC595移位寄存器的工作原理与SPI通信的应用,通过实验掌握如何通过少量GPIO控制多个外设。 - **带开关EC11编码器:** 知识点:正交编码器通过检测脉冲变化来确定旋转角度与方向,学习者可以理解正交编码器的工作原理以及识别编程,以及在菜单选择、参数调节中的应用。按键开关则让用户掌握更多的输入处理方法,如去抖动、短按长按检测。 - **WS2812B RGB LED灯:** 知识点:通过单线串行协议控制WS2812B RGB彩灯,实现多彩LED灯效。学习时序控制与PWM信号生成的应用,并掌握彩色光源的控制逻辑和灯效编程。 - **温湿度传感器(DHT11)与温度传感器(DS18B20):** 知识点:DHT11使用单总线(1-WIRE)协议进行数据传输,而DS18B20也采用1-WIRE协议。通过这两个传感器,学习者可以深入了解1-WIRE协议的时序要求和编程方法,同时掌握如何解析温湿度及温度数据的通信与处理。 - **AT24C02 EEPROM** 知识点: I2C通讯,通过配置 I2C 控制器,学习者可以实现主设备与从设备之间的数据交换。通过与 AT24C02 的交互,学习者能够理解 I2C 协议中的起始条件、从设备地址选择、数据传输和停止条件等知识点。为学习板增添了存储外设的实验内容,同时通过 I2C 通信协议使学习者掌握嵌入式系统中的外设数据传输机制。 - **0.96英寸 OLED显示屏(SSD1306驱动):** 知识点:学习使用I2C总线协议进行OLED屏幕的驱动,掌握I2C总线的初始化、数据传输流程和外设操作。同时,学习图形用户界面(GUI)的基本设计,如文本、图像显示与滚动效果的实现。 - **PWM电机控制接口:** 知识点:学习PWM信号生成与应用,掌握定时器的基础配置、占空比调节及其在电机控制中的应用。PWM控制电机是实现电机调速、伺服控制等重要知识点的实验途径。 - **CH340 USB转TTL:** 知识点:通过CH340模块,学习者可以实现串口通信(USART)。掌握串口初始化、发送接收数据、与上位机(如PC)通信的基本方法,并用于调试程序与数据交换。 - **电位器与ADC输入:** 知识点:通过电位器输入模拟信号,学习STM32 ADC模块的使用,掌握ADC的采样原理与数据转换,了解如何将模拟信号转化为数字信号并进行处理。 - **DAC MCP4725模块:** 知识点:通过I2C协议控制DAC模块,实现模拟信号的输出。掌握DAC数模转换的基础知识,理解其在音频信号输出、模拟信号调节等方面的应用。 ### 3. 引脚分配图 stm32c8t6_EBK_HW_Layout.png ## 三、例程文件夹 ### 3.1、基础案例递增组 在案例0基础上逐个增加外设功能的基础案例 1. EX0_LED 案例0-4个LED控制 2. EX1_Buzzer 案例1-增加蜂鸣器控制 3. EX2_KEY 案例2-增加按键识别功能--delay演示状态机扫描法 4. EX3_LRA 案例3-增加线性马达震动反馈功能 5. EX4_1_Seg7_Regularize 案例4.1 对案例4进行函数封装规整 6. EX4_Seg7 案例4-增加数码管显示功能 7. EX5_KEY_EXTI 案例5- 增加按键中断功能,实现蜂鸣器简单控制 8. EX6_SYSTICK-副本 案例6- 增加systick实现延时和定时中断 SYSTICK 详细讲解文章链接 https://blog.csdn.net/zhunyan/article/details/143221247 9. EX7_Tim 案例7-增加通用定时器TIM2的使用案例,实现1秒周期内蜂鸣器响亮控制 ### 3.2、综合应用案例组 1. EX_Template 综合案例, 包含外设测试复杂控制功能实现 2. EX_Template - 副本 ## 四. IO分配表 [点击查看IO--外设分配图](https://gitee.com/sparkstudiosju/SJU_MCULesson_STM32/raw/master/Hardware/%E5%8D%95%E7%89%87%E6%9C%BAIO-%E5%A4%96%E8%AE%BE%E5%88%86%E9%85%8D%E8%A1%A8.png) | **序号** | **IO类型** | **外设及端口名称** | **IO口** | **复用** | **备注** | |--------|----------|-------------------|---------|----------|---------------------------------------------------------------------------------------------------------------------------------| | 1 | Output | LED4 | PC13 | N/A | 阴极驱动(0-亮),与核心板用户调试指示灯同一端口,驱动电平-1 | | 2 | Output | LED5 | PC14 | N/A | 阴极驱动(0-亮) | | 3 | Output | LED6 | PC15 | N/A | 阴极驱动(0-亮) | | 4 | Output | LED7 | PB7 | N/A | 阴极驱动(0-亮) | | 5 | Output | 蜂鸣器Buzzer | PA1 | N/A | 高电平1-响 | | 6 | Output | 线性马达LRA | PB3 | JTAG | 高电平1-震动。需要关闭默认JTAG复用功能 | | 7 | Output | 数码管驱动74HC595-DAT | PB15 | N/A | 数码管由74HC595驱动。DAT-串行数据输入端口。SHCP-内部移位脉冲,Shift_CLK,STCP-锁存并行输出脉冲,Storage_CLK。
注:各个学习板数码管共阴或共阳并不完全一直,需要查看学习板背面共阴/共阳的跳线 | | 8 | Output | 数码管驱动74HC595-SHCP | PB13 | N/A | | | 9 | Output | 数码管驱动74HC595-STCP | PB14 | N/A | | | 10 | Output | W2812B RGB彩灯 | PA7 | spi1 | 含W2812B芯片RGB彩灯,单向单线协议控制,设置外部扩展接口。SPI1_DAT复用端口,可用SPI+DMA方式模式实现高级控制。
参考: https://blog.csdn.net/qq_44810226/article/details/120154984 | | 11 | Output | PWM-舵机接口 | PB0 | TIM3_CH3 | PWM输出,控制方式1)普通PO控制;2)定时器PWM输出控制 | | 12 | Input | KEY1 | PB1 | N/A | 外部上拉,常规高电平 | | 13 | Input | KEY2 | PA4 | N/A | 需设置为内部上拉输入 | | 14 | Input | EC11编码开关-A相 | PB4 | TIM3-CH1 | 编码开关正交端口,AB相上拉至5V,EC11转一圈每相输出20个脉冲。
识别实现方式:
1)GPIO状态法读取识别旋转方向。
2)TIM3-CH1/CH2,采用定时器3高级功能实现 | | 15 | Input | EC11编码开关-B相 | PB5 | TIM3-CH2 | | | 16 | Input | EC11编码开关-SW | PB12 | N/A | 需配置为内部上拉输入 | | 17 | I/O | 温湿度传感器-DHT11 | PA11 | N/A | DHT11H和DS18B20共用一个端口(同时工作互不干扰),1-Wire通讯协议 | | 18 | I/O | 温度传感器-DS18B20 | PA11 | N/A | | | 19 | Output | CH340-RX | PA9 | TX1 | UART1的CH340芯片USB转串口扩展 | | 20 | Input | CH340-TX | PA10 | RX1 | H11排针需跳帽短接 | | 21 | AnalogIn | 电位器 | PA0 | N/A | 配置为模拟输入端 | | 22 | Output | AT24C02-SCL | PB10 | N/A | i2c总线时钟 | | 23 | I/O | AT24C02-DAT | PB11 | N/A | i2c总线数据 | | 24 | Output | OLED显示屏-SCL | PB9 | N/A | OLED- 时钟线,4线OLED支持I2C协议,预留扩展端口支持连接SPI接口和带字库OLED | | 25 | I/O | OLED显示屏-SDA | PB8 | N/A | OLED-- 数据线 | | 26 | Output | OLED显示屏-RES | X | | 7PIN-OLED预留接口,需要用杜邦线连接至单片机GPIO | | 27 | | OLED显示屏-DC | X | | 7PIN-OLED预留接口,需要用杜邦线连接至单片机GPIO | | 28 | | OLED显示屏-CS | X | | 7PIN-OLED预留接口,需要用杜邦线连接至单片机GPIO | | 29 | Output | DAC- MCP4725-SCL | X | | 芯片预留接口,需要用杜邦线连接至单片机GPIO | | 30 | I/O | DAC- MCP4725-DAT | X | | 芯片预留接口,需要用杜邦线连接至单片机GPIO | #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)