STM32 IO口主功能复用重定义代码知识总结

STM32 IO口主功能复用重定义代码知识总结_第1张图片

1、重映射的时候一般需要配置AFIO

2、一旦需要对AFIO寄存器配置时,一定要打开AFIO的时钟(一般在使用外部中断EXTI或外设引脚重定义时)

常用普通IO初始化

STM32 IO口主功能复用重定义代码知识总结_第2张图片

复用功能开启

我想使用端口默认的复用功能需要注意的

使用默认复用功能前必须对端口位配置寄存器编程。
● 对于复用的输入功能,端口必须配置成输入模式(浮空、上拉或下拉)且输入引脚必须由外部
驱动

注意: 也可以通过软件来模拟复用功能输入引脚,这种模拟可以通过对 GPIO 控制器编程来实现。此
时,端口应当被设置为复用功能输出模式。显然,这时相应的引脚不再由外部驱动,而是通过
GPIO 控制器由软件来驱动。
对于复用输出功能,端口必须配置成复用功能输出模式(推挽或开漏)。
● 对于双向复用功能,端口位必须配置复用功能输出模式(推挽或开漏)。这时,输入驱动器被
配置成浮空输入模式。
如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。
如果软件把一个GPIO脚配置成复用输出功能,但是外设没有被激活,它的输出将不确定。(8通道阻抗项目的外部MARKER那个东西,IO不稳定)

STM32 IO口主功能复用重定义代码知识总结_第3张图片

STM32 IO口主功能复用重定义代码知识总结_第4张图片

typedef enum
{ GPIO_Mode_AIN = 0x0,//模拟输入
  GPIO_Mode_IN_FLOATING = 0x04,//输入浮空
  GPIO_Mode_IPD = 0x28,//输入下拉
  GPIO_Mode_IPU = 0x48,//输入上拉
  GPIO_Mode_Out_OD = 0x14,//开漏输出
  GPIO_Mode_Out_PP = 0x10,//推挽式输出
  GPIO_Mode_AF_OD = 0x1C,//推挽式复用功能
  GPIO_Mode_AF_PP = 0x18//开漏复用功能
}GPIOMode_TypeDef;

/*

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;   
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度 50MHz
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉

 
GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化 PA9,PA10

*/

你可能感兴趣的:(STM32)