目录
一、关于STM32芯片
1、STM32F103RCT6 芯片有 4 组 I/O 口,共有 16+16+16+3 个 I/O 口,其中 D引脚只有两个。
2、大部分引脚除了当 GPIO 口,还可以复用为外设功能引脚,如串口;
所有 I/O 口都可以作为中断输入
端口复用功能:就是除了作为通用 I/O 口,还可以作为外设的引脚(最大限度利用端口)
端口重映射功能:可以把某些功能引脚映射到其他引脚,使其他引脚也具备该功能(方便布线)
3、输入模式4种: 输入浮空、输入上拉、输入下拉、模拟输入
上拉下拉输入很好理解,浮空输入的电平是不确定,完全由外部输入决定,一般按键就是浮空输入,模拟输入则用于ADC采集。
输出模式4种: 开漏输出、开漏复用输出、推挽输出、推挽复用输出
**最大翻转速度3种:**2 MHz、10 MHz、50 MHz
4、推挽输出:可以输出强高低电平,连接数字器件
开漏输出:只能输出强低电平,高电平得靠外部电阻拉高,适合做电流型的驱动
5、每个GPIO端口额寄存器包括有:图
6、上电复位后,GPIO 引脚默认为浮空输入模式 ,寄存器的值为: CNFx【1:0】= 01b,MODEx【1:0】= 00b
特殊的JTAG引脚除外 ,它们会被置于上拉 或者下拉模式
7、输入数据寄存器 GPIOx_IDR 会在每个APB2时钟周期捕捉 I/O 引脚上的数据。
8、STM32芯片命名方法:图
9、mcu选型
了解了 STM32 的分类和命名方法之后,就可以根据项目的具体需求先大概选择哪类内
核的 MCU,普通应用,不需要接大屏幕的一般选择 Cortex-M3 内核的 F1 系列,如果要追
求高性能,需要大量的数据运算,且需要外接 RGB 大屏幕的则选择 Cortex-M4 内核的
F429 系列。
明确了大方向之后,接下来就是细分选型,先确定引脚,引脚多的功能就多,价格也
贵,具体得根据实际项目中需要使用到什么功能,够用就好。确定好了引脚数目之后再选
择 FLASH 大小,相同引脚数的 MCU 会有不同的 FLASH 大小可供选择,这个也是根据实
际需要选择,程序大的就选择大点的 FLASH,要是产品一量产,这些省下来的都是钱啊。
有些月出货量以 KK(百万数量级)为单位的产品,不仅是 MCU,连电阻电容能少用就少
用,更甚者连 PCB 的过孔的多少都有讲究。项目中的元器件的选型的水深的很,很多学问。
10、画原理图之前要先把引脚分类好

11、关于参考手册(Reference manual)和数据手册(Data Sheet)

数据手册主要用于芯片选型和设计原理图时参考,参考手册主要用于在编程的时候查阅。官方的这两个文档可以从官方网址里面下载
12、引脚的定义
在数据手册中,有关引脚定义的部分在 Pinouts and pin description 这个小节中,具体定
义见表格 5-6。

①引脚序号: 阿拉伯数字表示 LQFP 封装,英文字母开头的表示 BGA 封装。
引脚序号这里列出了有 6 种封装型号,具体使用哪一种要根据实际情况来选择。
**②引脚名称:**指复位状态下的引脚名称
③引脚类型: S 电源引脚
I 输入引脚
I/O 输入/输出引脚
④I/O结构: FT 兼容5V
TTa 只支持3V3,且直接到ADC
B BOOT引脚
RST 复位引脚,内部带弱上拉
⑤主功能:main function
⑥复用功能:Default
⑦重映射功能:Remap
13、PCB打样
厂家推荐:深圳嘉立创JLC,大概10*10CM 以内的板子只要50块三天,也能打样贴片一条龙。
二、GPIO工作原理
1、GPIO框图
原理:见野火8.2.1节
FT:可容忍5V电压,意思是IO口输出虽然是3.3V电压,但是输入时也支持5V电压。具体哪些IO口支持FT可以在数据手册的IO口特性中查看(大部分都支持)。
1、输入模式
输入浮空模式

浮空:只有半区起作用。具体:IO口输入➡️上拉/下拉配置➡️施密特触发器开启➡️进入输入数据寄存器➡️CPU可通过读取数据局存起获取引脚状态
输入上拉模式和输入下拉模式区别只在上拉/下拉部分(接VDD还是接地)
模拟输入
因为是模拟信号,所以走的是模拟的线路

2、输出模式
开漏输出模式

BSRR决定输出的值➡️输出寄存器➡️输出控制电路
ODR寄存器对应位写0,则N MOS管导通,电平被拉低,所以输出的值是个强低电平
ODR寄存器对应位写1,则N MOS管不导通,而开漏模式下P MOS管被设计为始终不导通,所以电路输出呈高阻态,IO口输出的电平值由上半区决定(输出电平会受上拉/下拉影响,只有设置上拉才能输出高电平)

推挽输出模式
与开漏模式相比,它可以输出强低电平,也可以输出强高电平
ODR寄存器对应位写0时,N MOS管导通,IO口输出强低电平
ODR寄存器对应位写1时,N MOS管关闭,P MOS管可被激活导通,电路输出强高电平,所以最终IO口输出为强高电平
复用输出模式
复用功能,就是指STM32其他片上外设对GPIO引脚进行控制。
复用功能输出就是由串口外设控制该引脚发送数据,复用功能输入就是片上外设通过GPIO引脚来接收数据。
复用开漏输出模式和复用推挽输出模式变化不大,只是由复用外设来控制的。
二、寄存器
1、F1系列的每组 I/O 口含有下面7个寄存器:
GPIOx_CRL:端口配置低寄存器
GPIOx_CRH:端口配置高寄存器
GPIOx_IDR:端口输入寄存器
GPIOx_ODR:端口输出寄存器
GPIOx_BSRR:端口位设置/清除寄存器,设置ODR寄存器的值
GPIOx_BRR:端口位清除寄存器,F4系列之后再无该寄存器,且不利于代码兼容和移植
GPIOx_LCKR:端口配置锁存寄存器,用得不多
而F4/F7/H7系列的每组 I/O 口则含有8个寄存器:
GPIOx_MODER:设置输出模式
GPIOx_OTYPER:设置输出类型
GPIOx_OSPEEDER:设置输出速度
GPIOx_PUPDR:设置上下拉电阻
GPIOx_IDR
GPIOx_ODR
GPIOx_BSRR
GPIOx_LCKR
另外还有两个复用功能的寄存器,放后面讲
2、端口配置寄存器:配置每个GPIO的工作模式和速度
CRH控制端口的高八位(PA0-PA7),CRL控制低八位(PA8-PA15)
每4位(4bit)分成一组,控制一个 IO 端口

其中关于上拉/下拉输入模式并未确认是上拉还是下拉的问题,需要查看工作模式配置补充表:

因为上拉电阻和下拉电阻是通过ODR寄存器来配置的,上拉:置1,下拉:置0
2、IDR寄存器和ODR寄存器
作用:判断或设置引脚电平,IDR寄存器为只读 (判断引脚输入的电平),ODR寄存器为可读可写(配置引脚输出的电平),两个寄存器都是16位(对应16个 I/O 端口)
配置方式:读取或配置寄存器的单独某一位为1,比如读到第0位的IDR0 = 0,则对应的第0个引脚输入为低电平。就比如GPIOB-IDR寄存器的第0位为1,则PB0输入引脚的值就是1。若想要配置为上拉输入或下拉输入,需要配置的是相应的ODR寄存器的值。


3、端口位设置/清楚寄存器BSRR
首先这是个32位的寄存器,分为两部分,作用是给ODRx 位置1或清0,前16位用于置1,后16位用于清0,注意同时设置了置1和清0时,置1的优先级更高。

ODR寄存器与BSRR寄存器的区别

4、接下来介绍F4/F7/H7系列的寄存器
端口模式寄存器MODER
这是个32位寄存器,每2位控制一个引脚(共16个引脚),每个引脚可以配置4种I/O模式

输出类型寄存器OTYPER

输出速度寄存器OSPEEDER

上拉/下拉寄存器PUPDR

总结表格

未完待续。。。