stm32f103c8t6pb3和pb4中断
时间: 2024-04-11 13:24:23 浏览: 181
根据提供的引用内容,STM32F103C8T6芯片的PB3和PB4引脚可以用作外部中断输入。这两个引脚都支持上升沿触发和下降沿触发的中断。要使用这些引脚作为中断输入,你需要进行以下步骤:
1. 配置GPIO引脚为输入模式。
2. 配置外部中断触发方式为上升沿触发或下降沿触发。
3. 编写中断服务函数来处理中断事件。
下面是一个示例代码,演示了如何在PB3和PB4引脚上配置外部中断:
```c
#include "stm32f10x.h"
void EXTI3_IRQHandler(void) {
if (EXTI_GetITStatus(EXTI_Line3) != RESET) {
// 处理PB3中断事件
// ...
EXTI_ClearITPendingBit(EXTI_Line3);
}
}
void EXTI4_IRQHandler(void) {
if (EXTI_GetITStatus(EXTI_Line4) != RESET) {
// 处理PB4中断事件
// ...
EXTI_ClearITPendingBit(EXTI_Line4);
}
}
int main(void) {
// 初始化GPIOB时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
// 配置PB3和PB4引脚为输入模式
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU; // 上拉输入
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStruct);
// 配置外部中断触发方式为上升沿触发
EXTI_InitTypeDef EXTI_InitStruct;
EXTI_InitStruct.EXTI_Line = EXTI_Line3 | EXTI_Line4;
EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Rising; // 上升沿触发
EXTI_InitStruct.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStruct);
// 配置中断优先级
NVIC_InitTypeDef NVIC_InitStruct;
NVIC_InitStruct.NVIC_IRQChannel = EXTI3_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);
NVIC_InitStruct.NVIC_IRQChannel = EXTI4_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);
while (1) {
// 主循环
}
}
```
请注意,以上代码仅为示例,实际使用时需要根据具体需求进行适当修改。
阅读全文