STM32实验 外部中断实验

外部中断实验

1.外部中断介绍
1-1:STM32 每个I/O口都可以作为外部中断的中断输入口;F103的中断控制器支持19个外部中断,分别是:外部I/O口的输入中断对应的中断线为0-15;PVD输出中断对应中断线16;RTC闹钟事件对应中断线17;USB唤醒事件对应中断线18.
1-2:中断线与I/O口对应的关系
中断线0-15 对应GPIOx.0-GPIOx.15;每个中断线对应7个I/O口,但是每次只能选择一个链接一个I/O口,
1-3:配置中断线与GPIO的映射关系函数为:GPIO_EXTILineConfig()
定义:

void GPIO_EXTILineConfig(GPIO_PortSoyrce,GPIO_PinSource)
//第一个参数对应GPIO模块;第二个参数对应中断线

2.中断线的中断初始化函数:EXTI_Init();
定义:void EXTI_Init(*EXTI_InitStruct)
结构体EXTI_InitStruct的成员变量有:
EXTI_Line:设置中断线的标号;
EXTI_Mode:选择中断模式(两种模式可选:EXTI_Mode_Interrupt 或者 EXTI_Mode_Event)
EXTI_Trigger:选择触发方式:EXTI_Trigger_Falling 下降沿触发;EXTI_Trigger_Rising 上升沿触发;EXTI_Trigger_Rising_Falling 任意电平触发
EXTI_LineCmd:使能中断线;

3.外部中断必须要设置NVIC中断优先级
设置中断优先级步骤:
1.使能外部中断通道:NVIC_IRQChannel = EXTI0_IRQn
2.设置抢占优先级:NVIC_IRQChannelPreemptionPriority = 0x02
3.设置子优先级:NVIC_IRQChannelSubPriority = 0x03
4.使能外部中断通道:NVIC_IRQChannelCmd = ENABLE
5.中断优先级初始化:NVIC_Init(&NVIC_InitStructure)

4.编写中断服务函数
1.I/O口外部中断函数分别为:
EXPORT EXTI0_IRQHandler(中断线0);
EXPORT EXTI1_IRQHandler(中断线1);
EXPORT EXTI2_IRQHandler(中断线2);
EXPORT EXTI3_IRQHandler(中断线3);
EXPORT EXTI4_IRQHandler(中断线4);
EXPORT EXTI9_5_IRQHandler(中断线5-9);
EXPORT EXTI15_10_IRQHandler(中断线10-15);
2.判断中断线的中断是否发生(标志位是否置位)函数为:EXTI_GetITStatus(EXTI_Line)
3.清除中断标志位函数:EXTI_ClearITPendingBit(EXTI_line)

5.使用I/O口外部中断步骤:
1.初始化I/O口为输入
2.开启AFIO时钟
3.设置中断线与I/O口的映射关系
4.初始化线上中断,设置触发条件
5.配置中断分组,并使能中断
6.编写中断函数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值