没有合适的资源?快使用搜索试试~ 我知道了~
1.是能IO口时钟 2.设置 IO 口模式,触发条件 3.配置中断优先级,并使能中断 4.编写中断服务函数
资源详情
资源评论
资源推荐
外部中断实验
中断的概念大家应该都了解的差不多了,所以我就略过介绍中断这一环节。外部中断(
EXTI
)是
STM
32
众多中断中
的一种。
STM
32
一共有
16
组外部中断,分别对应
GPIO
x
.1~
GPIO
x
.15(
x
=
A
,
B
,
C
,...,
H
,
I
),
也就是说序号相同的
IO
口触发
的是同一个外部中断,但是外部中断无法判断是由哪个
GPIO
外设所触发的,所以
STM
32
最多可以监听
16
个外部中
断,且触发这些外部中断的
IO
口序号不能相同。
接下来我们来看看使用
HAL
库配置外部中断的一般步骤。
1.
是能
IO
口时钟。
首先,我们要使用
IO
口作为中断输入,所以我们要使能相应的
IO
口时钟。
2.
设置
IO
口模式,触发条件。
当我们 使用
HAL
库的时 候,
则都是 在函数
HAL
_
GPIO
_
I
nit
中一次 性完成的。例如我们要设置
PA
0
链接中 断线
0
,
并且为上
升沿触发,代码为:
当 我 们 调 用
HAL
_
GPIO
_
I
nit
设 置
IO
的
M
ode
值 为
GPIO
_
MODE
_
IT
_
RISING
( 外 部 中 断 上
升
沿
触
发
) ,
GPIO
_
MODE
_
IT
_
FALLING
(外部中断下降沿触发)或者
GPIO
_
MODE
_
IT
_
RISING
_
FALLING
(外部中断双边沿触
发)的时候,该函数内部会通过判断
M
ode
的值来开启
SYSCFG
时钟,并且设置
IO
口和中断线的映射关系。
因为我们这里初始化的是
PA
0
,调用该函数后中断线
0
会自动连接到
PA
0
。如果某个时间,我们又同样的方式 初始化
了
PB
0
,那么
PA
0
与中断线的链接将被清除,
而直接链接
PB
0
到中断线
0
。
3.
配置中断优先级,并使能中断。
我们设置好 中断线和
GPIO
映射关系, 然后又设置好了中断的触发模式 等初始化参数。 既然是外部中断 ,涉及到中断
我们当然 还要设置
NVIC
中断优先 级。这个在前面已经讲解过,这里我们就接着上面的范 例,
设置中断线
0
的中断
优先级并使能外部中断
0
的方法为:
4.
编写中断服务函数。
中断服务函数的名字是
在
HAL
库中事先有定义的。这里需要说明一下,
STM
32
F
4
的
IO
口外部中断函数只有
7
个,
分
别为:
GPIO_InitTypeDef GPIO_Initure;
GPIO_Initure.Pin=GPIO_PIN_0; //PA0
GPIO_Initure.Mode=GPIO_MODE_IT_RISING; //外部中断,上升沿触发
GPIO_Initure.Pull=GPIO_PULLDOWN; //默认下拉
HAL_GPIO_Init(GPIOA,&GPIO_Initure);
1
2
3
4
5
HAL_NVIC_SetPriority(EXTI0_IRQn,2,1); //抢占优先级为 2,子优先级为 1
HAL_NVIC_EnableIRQ(EXTI0_IRQn); //使能中断线 2
1
2
陈莽昆
- 粉丝: 19
- 资源: 291
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0