stm32f103c8t6_外部按键中断

本文详细介绍了如何在STM32中通过PB3引脚实现按键1的中断,包括JTDO功能的禁用、GPIO初始化、EXTI中断配置、NVIC中断分组设置以及编写中断服务函数,确保按键触发时串口发送'key1'并清除中断。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里以自己画的板子为例,实现按键1的中断,按键1接的是PB3

  PB3的第一引脚功能是JTDO,这里我们要使JTDO功能失能,代码如下:

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
外部中断一般配置步骤如下:

1.初始化IO口为输入(GPIO_Init())

GPIO_InitTypeDef GPIO_InitStructure; 	
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; 
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; 
GPIO_Init(GPIOB, &GPIO_InitStructure);

2.开启IO口时钟和IO端口复用时钟:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE);

3.设置IO口与中断线的映射关系

GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource3);//选择 GPIO 管脚用作外部中断线路
/*参数格式:参数1:GPIO_PortSourceGPIOX,X可以是A、B、C、D、E
 参数2:GPIO_PinSourceN,N可以是0~15   */

4.初始化外部中断EXTI,设置触发条件等

	EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //中断请求模式
	EXTI_InitStructure.EXTI_Line = EXTI_Line3; //外部中断线
	EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //设置输入线路下降沿为中断请求
	EXTI_InitStructure.EXTI_LineCmd = ENABLE; //使能
	EXTI_Init(&EXTI_InitStructure);//初始化

5.配置中断分组(NVIC),并使能中断。

	NVIC_InitStructure.NVIC_IRQChannel =EXTI3_IRQn; //外部中断线3的中断
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =0;//抢占优先级
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //响应优先级
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
	NVIC_Init(&NVIC_InitStructure);

6.编写中断服务函数

void EXTI3_IRQHandler(void)//中断线3的中断函数
{
	if(EXTI_GetITStatus(EXTI_Line3)!=RESET)
	{
	Delay_ms(100);
	if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_3)==0)
	{
        printf("key1\r\n");
	}
	EXTI_ClearITPendingBit(EXTI_Line3);//清除EXTI线路挂起位
	}
}

该函数功能:每按下按键1,就通过串口发送一个字符串“key1”,记得清除中断标志位

EXTI_ClearITPendingBit();

注:每个中断线的中断函数都有固定的名称

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香菜是个好东西

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值