如果教材这样讲--单片机IO口Additional Functions和 Alternate Functions的区别

不管是硬件工程师还是嵌入式软件工程师,都应该能够熟练的看懂数据手册,尤其是英文。在设计单片机外围电路时,工程师需要了解单片机的GPIO口的各项功能来满足自己的设计需求,单片机小白们在查看单片机数据手册时,看到Additional Functions和 Alternate Functions是否会感觉困惑呢?我也感到困惑,所以我来说下这两者的区别。

一、Alternate Functions(复用功能)

定义

复用功能是指单片机引脚在默认功能之上,通过配置可以切换的附加外设功能。

默认功能:通常为通用输入/输出(GPIO)。

复用功能:如 UART、SPI、I2C、PWM、定时器输入捕获等。

核心特点

1.硬件级切换:通过配置寄存器的复用功能选择位(如 STM32 的 AF0~AF15)或类似机制实现。

2.独占性:启用复用功能后,引脚不再作为通用 GPIO 使用(需关闭 GPIO 模式)。

典型应用场景:

// 示例(以 STM32 配置 UART 复用功能为例):

GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_USART1); // 配置 PA9 为 USART1_TX

二、Additional Functions(附加功能)

定义

附加功能是指引脚在复用功能之外,可能提供的其他灵活功能,需根据芯片特性启用的辅助模块或模式。

**常见附加功能:**模拟输入/输出(ADC、DAC)

外部中断(EXTI)

事件触发(Event Trigger)

片内外设的特定模式(如输入上拉/下拉、开漏输出)

核心特点

  1. 并行性:附加功能可能与其他功能共存(例如,某引脚既是 GPIO,同时支持外部中断)。

2.配置依赖性:需通过独立寄存器或模式设置启用(例如使能 EXTI、配置模拟模式)。

典型应用场景

// 示例(配置 PA0 为外部中断输入):

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; // 输入模式

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; // 上拉电阻

EXTI_InitStructure.EXTI_Line = EXTI_Line0; // 启用 PA0 的外部中断

三、关键对比

|-------------|----------------------------|---------------------------------------|
| 特性 | Alternate Functions(复用功能) | Additional Functions(附加功能) |
| 功能切换层级 | 外设级(硬件功能切换,如 UART/SPI) | 模块级(输入模式、中断、模拟模式等) |
| 是否与 GPIO 共存 | 强制切换,禁用 GPIO | 可能共存(如 GPIO 输入 + EXTI 中断) |
| 典型配置寄存器 | 复用功能选择寄存器(如 AFSEL 或 AFR) | 中断控制寄存器(如 EXTI_IMR)、模拟模式控制寄存器(ADC_CR) |
| 示例说明 | PA9 配置为 USART1_TX(替代 GPIO) | PB5 配置为上拉输入并触发 EXTI 中断 |

四、实际应用中的陷阱

1.复用功能优先于附加功能: 当引脚被设为 I2C_SDA(复用功能)时,其外部中断(附加功能)可能被自动禁用。

解决方式:参考手册 "Pin Function Table",确保功能兼容性。

2.模拟输入的特殊性:若配置引脚为 ADC 输入(附加功能),通常会强制禁用上拉/下拉电阻。

五、总结

Alternate Functions:是代替 GPIO 的硬件外设功能(如 PWM、UART),必须通过专用寄存器切换。

Additional Functions:是辅助模块或灵活模式(如中断、模拟输入),可与部分其他功能共存。

复用功能是取代 GPIO,切换为固定外设;

附加功能是给引脚添加新能力,但可能受复用功能限制。

相关推荐
leoFY1232 分钟前
SGM3209(圣邦微 高压负压电荷泵)(与TP7660可只修改4脚,7脚即可替换)
单片机·嵌入式硬件
zlinear数据采集卡14 分钟前
基准电压电路深度解析:从理论参数到ZLinear采集卡的精准参考实战
c语言·单片机·嵌入式硬件·fpga开发·自动化
bbaydnog20 分钟前
FreeRTOS学习笔记 18:调试方法论——HardFault排查、栈溢出检测、运行时统计,RTOS调试三板斧
笔记·单片机·freertos
下午写HelloWorld33 分钟前
GD32F4系列微控制器上电启动流程
单片机·嵌入式硬件
daad77739 分钟前
记录一次ardupilot_sitl调试longitude的输入数据流
单片机·嵌入式硬件
搁浅小泽44 分钟前
电子负载的作用
单片机·嵌入式硬件
周周记笔记3 小时前
【元器件专题】MOS管上下桥设计详解(死区时间)
单片机·嵌入式硬件
RFID舜识物联网3 小时前
耐高温RFID:让喷涂线从“数据断点”走向“全链贯通”
大数据·人工智能·嵌入式硬件·物联网·汽车
2601_958352903 小时前
A-59双麦模块实战:打造面对面双人独立拾音与实时翻译系统,全双工无串扰
人工智能·嵌入式硬件·语音识别·回音消除·音频处理模块
天月风沙3 小时前
基于机器视觉的实验室器件仓储系统设计——内蒙古自治区国家级大创——使用指南
嵌入式硬件