stm32f1系列(三) 外部中断

今天学了外部中断以及串口通讯,今天主要说的是外部中断这一块的东西。
首先照例贴一段代码是配置外部中断的代码:
#include<stm32f10x.h>
#include<key.h>
#include<exti.h>
#include<sys.h>
#include<delay.h>
#include<led.h>

void EXTIX_Init(void)
{

EXTI_InitTypeDef  EXTI_InitStructure;
NVIC_InitTypeDef  NVIC_InitStructure;

KEY_Init();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4);



EXTI_InitStructure.EXTI_Line=EXTI_Line4;
EXTI_InitStructure.EXTI_LineCmd=ENABLE;
EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
EXTI_Init(&EXTI_InitStructure);



NVIC_InitStructure.NVIC_IRQChannel=EXTI4_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;
NVIC_Init(&NVIC_InitStructure);

}

void EXTI4_IRQHandler(void){
delay_ms(10);
if(KEY0==0){
LED0=!LED0;
LED1=!LED1;
}
EXTI_ClearFlag(EXTI_Line4);
}
由于照片传不上来,还是口述吧!
主要是一下七个步骤:
①初始化IO的输入,对于KEY0的输入时上拉输入,由于之前在KEY的实验当中初始化过,所以可以直接拿过来,直接KEY_Init();
②RCC_APB2PeriphClockCmd()再就是对IO口的复用使能,即为AFIO;
③GPIO_EXTILineConfig()是设置IO口与中断线的映射,由于是PE4所以选择中断线4;
④EXTI_Init()初始化外部中断;
⑤NVIC_Init()初始化中断优先级以及NVIC_PriorityGroupConfig()优先级分组(在主函数里面使用);
⑥接下来就是对中断函数的使用,要注意的是,这个函数名称是EXTI4_IRQHandler,要是对于5-9之间公用一个中断函数名称,以及10-15也是如此,主要是由于stm32f1只有7个中断函数,所以有些就需要公用一个中断函数;
⑦EXTI_ClearFlag()这个是在中断函数里面是用,当中断完之后就需要清除标志。

今天学习的并不是很多,主要是学习难度上去了,在加上在总结一些编程,花费了不少时间!不过依然开心,天天学到新的知识,一天就是值得的!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值