STM32什么时候使用AFIO?

本文详细介绍了在特定情况下如何正确启用AFIO模块。当需要进行管脚重映射、配置外部中断或处理事件时,必须开启AFIO。文章具体解释了涉及的三个关键寄存器:AFIO_EVCR(事件相关)、AFIO_MAPR(重映射相关)及AFIO_EXTICRx(外部中断相关)。这些信息对于理解并掌握AFIO模块的工作原理至关重要。
什么时候要开启AFIO呢?参考手册:
说的很明白,操作AFIO的三类寄存器时需要开启:
AFIO_EVCR
AFIO_MAPR
AFIO_EXTICRx
这三类其实是AFIO的全部寄存器,
AFIO_EVCR是事件相关的,AFIO_MAPR是与重映射相关的,AFIO_EXTICRx是与外部中断相关的。

因此管脚重映射、外部中断、事件时开启AFIO。


### STM32F103C8T6 AFIO引脚配置和功能说明 #### 一、AFIO概述 STM32F103C8T6中的AFIO(Alternate Function Input/Output)模块用于管理外设的复用功能引脚。通过该模块可以实现特定引脚的功能重映射,从而灵活调整硬件资源分配。 #### 二、AFIO寄存器结构 每个GPIO端口具备多个控制寄存器来定义其工作模式。对于AFIO而言,主要涉及如下几个重要组成部分: - **EXTI事件选择寄存器 (EXTICRx)**:允许指定外部中断线所对应的物理引脚。 - **复用重映射与调试I/O配置寄存器(AFIO_MAPR)**:提供对外部设备接口以及调试接口(JTAG/SWD)的重新路由选项[^2]。 ```c // 打开AFIO时钟使能 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); ``` 上述代码片段展示了如何启用APB2总线上AFIO外设的时钟信号,这是执行任何后续操作前必不可少的前提条件。 #### 三、引脚重映射实例 当需要改变某些默认连接至固定引脚上的外设线路时,则可通过设置`AFIO_MAPR`内的相应位域完成此过程。例如,在计数传感器初始化过程中关闭全速JTAG而仅保留串行线调试(SWD),同时对定时器TIM2的部分通道实施部分重定向到其他可用管脚上: ```c // 部分重映射 TIM2 到新的引脚组合 GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2, ENABLE); // 禁用 JTAG 并保持 SWD 功能有效 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); ``` 这些指令使得原本占用PA15(PA15作为JTDO/TRACESWO), PB3(TMS/JTDI), 和PB4(TCK/SWCLK) 的调试接口被释放出来供应用程序自由支配[^1]。 #### 四、应用案例分析 考虑一个简单的场景——利用外部中断触发脉冲计数值更新。此时可能涉及到将某个按键开关接入某一通用输入输出引脚,并将其关联至相应的 EXTI 中断源;与此同时为了简化电路设计或许还会借助于AFIO来进行必要的引脚映射优化。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值