stm32f103 B6B7中断配置
时间: 2023-07-11 14:47:40 浏览: 47
要配置STM32F103的B6和B7引脚中断,可以按照以下步骤进行:
1. 使能AFIO和GPIOB时钟
```
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOB, ENABLE);
```
2. 配置GPIOB的B6和B7引脚为输入模式
```
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //配置成上拉输入模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
```
3. 配置B6和B7引脚的中断线
```
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource6);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource7);
```
4. 配置中断优先级
```
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
```
5. 配置B6和B7引脚的触发方式为下降沿触发中断
```
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line = EXTI_Line6 | EXTI_Line7;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //下降沿触发
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
```
6. 在中断处理函数中实现相应的功能
```
void EXTI9_5_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line6) != RESET) //判断是B6引脚的中断
{
//执行相应的操作
EXTI_ClearITPendingBit(EXTI_Line6); //清除中断标志位
}
if(EXTI_GetITStatus(EXTI_Line7) != RESET) //判断是B7引脚的中断
{
//执行相应的操作
EXTI_ClearITPendingBit(EXTI_Line7); //清除中断标志位
}
}
```
以上就是配置STM32F103的B6和B7引脚中断的步骤,希望能对你有所帮助。