写这个文章是用来学习的,记录一下我的学习过程。希望我能一直坚持下去,我只是一个小白,只是想好好学习,我知道这会很难,但我还是想去做!
本文写于:2025.03.31
STM32开发板学习——第一节: [1-1]课程简介
- 前言
- 开发板说明
- 引用
- 解答和科普
- 一、读懂开发板
- 二、课程和STM32简介
- 问题
- 总结
前言
本次笔记是用来记录我的学习过程,同时把我需要的困难和思考记下来,有助于我的学习,同时也作为一种习惯,可以督促我学习,是一个激励自己的过程,让我们开始32单片机的学习之路。
欢迎大家给我提意见,能给我的嵌入式之旅提供方向和路线,现在作为小白,我就先学习32单片机了,就跟着B站上的江协科技开始学习了.
在这里会记录下江协科技32单片机开发板的配套视频教程所作的实验和学习笔记内容,因为我之前有一个开发板,我大概率会用我的板子模仿着来做.让我们一起加油!
另外为了增强我的学习效果:每次笔记把我不知道或者问题在后面提出来,再下一篇开头作为解答!
开发板说明
本人采用的是慧净的开发板,因为这个板子是我N年前就买的板子,索性就拿来用了。另外我也购买了江科大的学习套间。
原理图如下
1、开发板原理图
2、STM32F103C6和51对比
3、STM32F103C6核心板
视频中的都用这个开发板来实现,如果有资源就利用起来。另外也计划实现江协科技的套件。
下图是实物图
引用
【STM32入门教程-2023版 细致讲解 中文字幕】
还参考了下图中的书籍:
STM32库开发实战指南:基于STM32F103(第2版)
数据手册
解答和科普
一、读懂开发板
1、稳压电路(电源电路)
这个为稳压电路,把从外边的5v电压转化为3.3V电压,给芯片供电。
2、晶振电路
通常情况下,对于一些成熟的STM32开发板,在其电路原理图的设计中,MCU外接了两个晶振。一个是低速晶振 32.768kHz,另一个是高速晶振 8MHZ。
PC14和PC15用于32.768kHz的低速外部晶振,OSC_IN和OSC_OUT用于高速主晶振。
3、复位电路
上电的话,电源通过电阻开始向电容充电,并且此时电容呈现的是短路状态,那NRST引脚就会产生低电平,当电容逐渐充满电时,电容就相当于断路,此时NRST就会被R1上拉为高电平,先低电平,后高电平,所以就是上电复位;按键按下为低电平,达到手动复位的效果。
4、BooT电路
5、电源指示电路
6、调试接口电路
调试端口:PA13和PA14分别作为SWDIO和SWCLK使用,用于系统的调试和编程.
滤波电容:
用来滤波的的电容。
7、主电路引出
从上图可以看出只有VBAT和VCC3.3没用到。
VBAT:备用电源引脚,用于在主电源断电时维持实时时钟(RTC)和备份寄存器的供电;
BOOT0和BOOT1这两个引脚用于配置微控制器的启动模式;
PC14和PC15用于32.768kHz的低速外部晶振,OSC_IN和OSC_OUT用于高速主晶振
RESET:复位引脚
引脚功能概述
STM32F103C8T6的引脚可以分为几个主要类别:
通用I/O引脚:这些引脚可以配置为输入或输出模式,支持外部中断和模拟输入。例如,PA0-PA15、PB0-PB15、PC13-PC15、PD0-PD2、PE0-PE5和PF0-PF1都是通用I/O引脚
系统功能引脚:包括晶振输入、复位引脚、电源引脚等。例如,PC14和PC15用于32.768kHz的低速外部晶振,OSC_IN和OSC_OUT用于高速主晶
通信接口引脚:STM32F103C8T6提供多种通信接口,如USART、I2C和SPI。特定的引脚如PA9/PA10用于USART1的TX/RX,PB10/PB11用于I2C2的SCL/SDA
模拟功能引脚:部分引脚如PA4-PA7和PB0-PB1可用作模拟-数字转换器(ADC)的输入
特殊功能引脚
除了通用I/O功能外,STM32F103C8T6还有一些具有特殊功能的引脚:
VBAT:备用电源引脚,用于在主电源断电时维持实时时钟(RTC)和备份寄存器的供电
BOOT0和BOOT1:这两个引脚用于配置微控制器的启动模式。BOOT0位于引脚44,而PB2(引脚20)可以作为BOOT1使用
调试端口:PA13和PA14分别作为SWDIO和SWCLK使用,用于系统的调试和编程。
整体核心板原理图
32和51的对比接口
下载串口1 PA9 \PA10;
所以串口下载是P3.0对应RX(A10),P3.1对应TX(A9)
二、课程和STM32简介
总线结构
I-Code 总线
I-Code的作用是取指令&执行指令,只和指令有关,I-Code 总线是一条基于 AHB-Lite 总线协议的 32 位总线,负责在 0x0000_0000 – 0x1FFF_FFFF 之间的取指操作。取指以字(32位)的长度执行,即使是对于 16 位指令也如此。因此 CPU 内核可以一次取出两条 16 位 Thumb 指令。
D-Code 总线
D-Code 的作用是对数据读写访问,只和数据有关,D-Code 总线也是一条基于 AHB-Lite 总线协议的 32 位总线,负责在 0x0000_0000 – 0x1FFF_FFFF(与I-Code相同)之间的数据访问操作。尽管 CM3 支持非对齐访问,但你绝不会在该总线上看到任何非对齐的地址,这是因为处理器的总线接口会把非对齐的数据传送都转换成对齐的数据传送。因此,连接到 D-Code总线上的任何设备都只需支持 AHB-Lite 的对齐访问,不需要支持非对齐访问。
因此,连接到 D-Code总线上的任何设备都只需支持 AHB-Lite 的对齐访问,不需要支持非对齐访问。
下图中总线复用器的作用是,让指令和数据在同一个总线上传输的方式,因为代码存储区既可以由指令指令总线(I-Code)访问(取指时),也可以被数据总线(D-Code)访问(访问数据时),需要在中间插入一个总线开关,称为总线矩阵,或者使用一个AHB总线复用器。
首先D-bus可以访问主SRAM(112K)和FLASH的D-code区
I-bus可以访问主SRAM区的和FLASH的I-code区
然后主SRAM可以被D-bus I-bus 和S-bus访问。
红色是电源相关的引脚;蓝色的事最小系统相关的引脚,绿色的事IO口、功能口这些引脚
FT 5V没有3.3 V; VSS接到GND
BOOT 启动设置
串口下载的时候就用0 1来完成。
这5个是调试端口,它们既可以用来下载程序,也可以作为普通IO口使用,如果我们在程序中把这5个端口全部配置成了IO口,那这就坏了,因为这个芯片没有调试端口了,也就下载不了程序了(所以要小心)。这就需要用到串口的方式下载程序了。
VBAT:备用电源
8MHz经过内部锁相环倍频,得到72MHz的主频。
RTC:需要接一个32.768KHz的晶振;2^15,进行分频后得到1S的时间信号了。
问题
1、刚开始还是有点陌生。
总结
本节课主要是了解这个课程和一些常见的外设,和STM32的引脚定义和功能,如何下载程序和boot有关,还知道了总线结构。