STM32的AFIO口简介:

本文介绍了STM32微控制器中I/O口的复用功能及其重映射机制。通过复用功能,STM32的I/O口可以作为多种内置外设的接口使用。此外,为优化外设布局,文中还详细解释了如何通过配置AFIO_MAPR寄存器来实现引脚的重映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、STM32上有很多I/O口,也有很多的内置外设I2C,ADC,ISP,USART ,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能。
2、为了优化64脚或100脚封装的外设数目,可以把一些复用功能重新映射到其它引脚上。设置复用重映射和调试I/O配置寄存器(AFIO_MAPR)实现引脚的重新映射。这时,复用功能不再映射到它们的原始分配上。
3、只有使用了AFIO的事件控制寄存器、AFIO的重映射功能以及外部中断(EXTI)控制寄存器才需要开启AFIO的时钟。

### STM32 AFIO 寄存器详解 #### 事件控制寄存器 (AFIO_EVCR) 此寄存器用于配置外部中断线和事件线之间的连接。通过设置该寄存器中的相应位,可以指定哪个 I/O 触发特定的事件或中断请求[^1]。 #### 复用重映射和调试I/O配置寄存器 (AFIO_MAPR) 负责定义某些外设信号到不同物理引脚上的重新路由路径以及JTAG/SWD接的工作模式。这允许开发者灵活调整硬件资源分配以适应具体应用场景需求[^2]。 ```c // 设置TIM2通道1为复用功能 AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_DISABLE; // 禁用SWD/JTAG以便释放PB4-PB5给其他用途使用 ``` #### 外部中断配置寄存器 (AFIO_EXTICRx) 共有四个这样的寄存器(`EXTICR[1-4]`),它们用来决定哪一个GPIO端被选作EXTI线路源。每个寄存器管理一组连续的四位字段来表示一个 EXTIx 的来源选择: | 字段 | 描述 | | --- | --- | | EXTI0..15 | 对应于外部中断/事件控制器的不同线路 | 例如,在 `AFIO_EXTICR1` 中,最低四位决定了EXTI0所关联的具体GPIO端号;而下一个四比特则对应EXTI1依此类推直到最高位置定EXTI3[^3]。 ```c // 配置PA0作为EXTI Line 0的源 AFIO->EXTICR[0] &= ~(0xF << (0 * 4)); // 清除旧值 AFIO->EXTICR[0] |= (GPIOA & 0xF) << (0 * 4); // 设定新值 ``` 这些寄存器共同作用使得STM32能够实现复杂的外围设备管理和高效的中断处理机制。对于初学者来说理解并熟练掌握这些概念是非常重要的,因为这是构建稳定可靠嵌入式系统的基石之一。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值