STM32
- 一STM32F1 GPIO工作原理
-
- 二编写跑马灯实验——库函数
一STM32F1 GPIO工作原理
二编写跑马灯实验——库函数
一、STM32F1 GPIO工作原理
1、 mini一共有四组IO口
GPIOA (PA0-PA15)
GPIOB (PB0-PB15)
GPIOC (PC0-PC15)
GPIOD (PD0-PD2)
一共有51个IO口
2、输入模式
输入浮空模式:上下拉电阻断开
输入上拉模式:上拉电阻连接
输入下拉模式: 下拉电阻连接
模拟模式: 上下拉电阻断开
3、输出工作模式
开漏输出模式:→1→输出控制电路→N-MOS关闭→IO口输出的电压与上(下)拉电阻有关
开漏复用输出模式:→0→输出控制电路→N-MOS开启→IO口输出的电压为0
推挽输出模式:→1→输出控制电路→N-MOS关闭,P-MOS开启→IO口输出的电压为1
推挽复用输出模式:→0→输出控制电路→N-MOS开启,P-MOS关闭→IO口输出的电压为0
4、寄存器
【1】端口配置低寄存器(GPIOx_CRL) 每四位控制一个IO口, 控制标号0-7的IO口
{MODEO【1:0】→00:输入模式
CNFO【1:0】→00:模拟输入模式;01:输入浮空模式;10:下拉输入模式,ODR0→0/上拉输入模式,ODR0→1;11保留}
{MODEO【1:0】→01:输出模式(10MHZ)/10 :输出模式(2MHZ)/11:输出模式(50MHZ)
CNFO【1:0】→00:推挽输出模式;01:开漏输出模式;10:推挽复用输出模式;11:开漏复用输出模式}
【2】端口配置高寄存器 (GPIOx_CRH) 每四位控制一个IO口, 控制标号8-15的IO口
【3】端口输入数据寄存器 (GPIOx_IDR)
IDR寄存器低16位,每个位控制该组IO口的一个IO口,对应的是IO口的输入电平
【4】端口输出数据寄存器 (GPIOx_ODR)
1)输出:低16位,每个位控制一个IO口的输出电平高或低
2)输入:ODR0→0,下拉输入模式 ODR0→1,上拉输入模式(与CRL寄存器相配用)
【5】端口位置设置/清除寄存器(GPIOx_BSRR)
BSRR寄存器低16位,对应设置为1,IO口输出高电平;对应设置为0,IO口不产生影响
BSRR寄存器高16位,对应设置为1,清除为0;对应设置为0,IO口不产生影响
【6】端口位清除寄存器(GPIOx_BRR)
BRR寄存器低16位,对应设置为1,清除为0;对应设置为0,IO口不产生影响
清除时一般使用【6】
5、所有IO口都可以作为中断输入
二、编写跑马灯实验——库函数
LED0→PA8 LED1→PD2 IO口输出高电压,LED灭;输出低电压,LED亮
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210402122254352.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpa291bGlrb3U=,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021040212240849.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpa291bGlrb3U=,size_16,color_FFFFFF,t_70#pic_center)