【STM32】AFIO 以及重映射

在配置外部中断的时候,打开GPIO时钟的时候,也同时打开了AFIO的时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO,ENABLE);

AFIO

简单来说

MCU有对外管脚,包括CPU的管脚和内置外设(PWM,TIM,ADC......)的管脚;

他们都需要对外接口IO,但是管脚总数是有限的,有的管脚既作为普通IO,也作为外设IO,有时候甚至好几个内置外设共用一个IO,这就是管脚复用现象。

比如随便一个管脚的原理图上:

PA2/USART2_TX/ADC123_IN2/TIM5_CH3/TIM2_CH3

表明这个管脚除了作为普通PA2之外,还作为复用IO,有USART2,ADC,TIM5,TIM2等......

总结:

  1. 普通管脚就是GPIO,复用管脚(非普通管脚)就是AFIO;
  2. 只要用到内置外设的管脚,都需要打开复用IO(AFIO),比如对外输出PWM波形,使用AD转换等。

不是说使用了IO的复用功能就一定要启动RCC_APB2Periph_AFIO的Clock的,只有使用了AFIO的事件控制寄存器AFIO的重映射功能 以及外部中断(EXTI)控制寄存器才需要开启AFIO的时钟。

单纯的IO口复用功能不需要开启AFIO时钟,remap需要。

例子

1.外部中断

c 复制代码
GPIO_InitTypeDef GPIO_InitStructure;//
EXTI_InitTypeDef EXTI_InitStructure;//

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);//打开GPIO的时钟,打开AFIO的时钟,

使用外部中断时需要打开AFIO。

2.引脚的重映射

STM32有很多的内置外设I2C,ADC,ISP,USART等 ,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能。

但是STM32还有一特别之处就是:很多复用内置的外设的I/O引脚可以通过重映射功能,从不同的I/O管脚引出,即复用功能的引脚是可通过程序改变的。

程序中用到的USART2外设的TX,RX分别对应PA2,PA3,但是板上的PA2,PA3引脚接了其他设备,但是为了还要用USART2,

"RCC_APB2Periph_GPIOD |RCC_APB2Periph_AFIO"就打开了GPIOD重映射功能把USART2设备的TX,RX映射到PD5,PD6上,我们在这两个引脚上接上MAX232串口芯片就可以使用USART2串口通信了。

参考STM32f10X手册

重映射步骤

STM32F103VCT6 这个CPU的USART1接的是PB6/PB7 但是上电初始化后 默认功能并非是USART1.所以想要用串口功能 .必须用端口重映射...

1.打开重映射时钟和USART重映射后的I/O口引脚时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB |RCC_APB2Periph_AFIO,ENABLE);

2.I/O口重映射开启

c 复制代码
 GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);

3.配制重映射引脚, 这里只需配置重映射后的I/O,原来的不需要去配置.

c 复制代码
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB, &GPIO_InitStructure);

简单的说 STM32的 io 有3个功能 一个是默认的 一个是复用 一个是重映射功能(这个其实也属于复用)如果配置成复用 后开启功能则使用第2个功能。 如果配置成复用 同时 相应的重映射配置了 则将使用第3个功能通常一个口的 。

相关推荐
微信153237942431 天前
离线语音识别 ( 小语种国家都支持)可定制词组
嵌入式硬件
weixin_508821651 天前
1ms软延时,不用定时器,stm32
stm32·单片机·嵌入式硬件
月阳羊1 天前
【无人机】无人机PX4飞控系统高级软件架构
嵌入式硬件·架构·系统架构·无人机
weixin_508821651 天前
stm32 主频216MHz,写个ms延时函数,us延时函数
stm32·单片机·嵌入式硬件
华清远见IT开放实验室1 天前
【新书上市】《STM32嵌入式系统开发—基于STM32CubeMX和HAL库》,高校教学推荐,STM32入门必读书籍!
stm32·单片机·嵌入式硬件·虚拟仿真·必读书籍·高校教学
智木芯语1 天前
【58】编程技巧:单片机编程命名规范
单片机·嵌入式硬件·嵌入式·#stm32·#stc8
捷配datasheet1 天前
OP2177运算放大器:高性能模拟信号处理的关键元件
嵌入式硬件·信号处理
逼子格1 天前
五种音频器件综合对比——《器件手册--音频器件》
嵌入式硬件·音视频·硬件工程师·硬件测试·电子器件·硬件笔试真题·音频器件
niuTaylor1 天前
STM32平衡车开发实战教程:从零基础到项目精通
stm32·单片机·嵌入式硬件