stm32f103c8t6最小系统板中断引脚有哪些
时间: 2025-03-20 20:19:30 浏览: 45
### STM32F103C8T6 最小系统板中断引脚及相关信息
STM32F103C8T6 是一款基于 ARM Cortex-M3 内核的高性能微控制器,其具有丰富的 GPIO 和外设资源,支持多种类型的外部中断触发方式。以下是关于该芯片中断引脚的相关信息:
#### 1. 中断引脚概述
STM32F103C8T6 的 GPIO 引脚可以通过配置实现外部中断功能。每个 GPIO 端口(A 到 E)都可以作为外部中断输入源[^2]。具体来说,GPIO 的外部中断通过 EXTI(External Interrupt/Event controller)模块来管理。
EXTI 控制器提供了多达 19 条独立的中断/事件线路,其中前 16 条线路对应于 GPIO 引脚(PA0 至 PA15, PB0 至 PB15 等),剩余几条用于特定用途(如 RTC 唤醒、PVD 输出等)。每一条 EXTI 线路可以连接到任意一个端口上的指定引脚[^4]。
#### 2. 支持外部中断的引脚列表
以下为 STM32F103C8T6 上可用于外部中断的主要 GPIO 引脚列表以及它们的功能描述:
| **引脚编号** | **名称** | **可能的功能** |
|--------------|----------------|-------------------------------------------------------------------------------|
| PA0 | EXTI Line 0 | 外部中断线 0;可配置为上升沿、下降沿或双边沿触发 |
| PA1 | EXTI Line 1 | 外部中断线 1 |
| ... | ... | ... |
| PA15 | EXTI Line 15 | 外部中断线 15 |
| PB0 | EXTI Line 0 | 同样映射至 EXTI Line 0 |
| PB1 | EXTI Line 1 | 映射至 EXTI Line 1 |
| ... | ... | ... |
需要注意的是,虽然多个端口中的不同引脚能够共享同一条 EXTI 线路,但在实际应用中需确保同一时间只有一个信号源激活某一线路以避免冲突[^3]。
#### 3. 配置方法示例
为了启用某个具体的 GPIO 引脚作为外部中断输入,在软件层面通常需要完成如下设置过程:
- 初始化相应的 GPIO 模块;
- 设置对应的 SYSCFG_EXTICR 寄存器值以便将选定的 GPIO 连接到目标 EXTI 线路上;
- 编写 NVIC (Nested Vectored Interrupt Controller) 相关代码开启全局及局部中断允许标志位并定义服务函数地址表项位置。
下面给出一段简单的初始化代码片段供参考:
```c
// 定义使用的 GPIO 和 EXTI 线号
#define INTERRUPT_PIN GPIO_Pin_0
#define EXTI_LINE EXTI_Line0
void EXTI_Init(void){
// 使能相关时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
// 配置 PA0 为浮空输入模式
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStruct.GPIO_Pin = INTERRUPT_PIN;
GPIO_Init(GPIOA,&GPIO_InitStruct);
// 将 PA0 关联到 EXTI Line0
GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource0);
// 配置 EXTI 参数
EXTI_InitTypeDef EXTI_InitStruct;
EXTI_InitStruct.EXTI_Line = EXTI_LINE;
EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising_Falling;// 边缘触发类型
EXTI_InitStruct.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStruct);
// 开启中断向量通道
NVIC_InitTypeDef NVIC_InitStruct;
NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0x00;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0x00;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);
}
```
上述代码实现了对外部中断的基本设定流程演示。
阅读全文
相关推荐


















