单片机/MCU论坛
直播中

jf_85961855

2年用户 31经验值
擅长:可编程逻辑 模拟技术 处理器/DSP 控制/MCU
私信 关注
[文章]

【xG24 Matter开发套件试用体验】9-中断

1 介绍

本文介绍EFR32MG24中断的用法,这里用一个按键触发中断作为例子。

2 错误纠正

在之前的文章中有一处介绍错误,这里纠正一下。
之前介绍说需要在app_init函数中进行初始化,例如下面的LED灯和串口的初始化操作。
void app_init(void)
{
sl_simple_led_init_instances();
sl_uartdrv_init_instances();
}
其实是不用的,在使用***.slcp生成的工程代码中,main函数中会调用sl_system_init();函数,
void sl_system_init(void)
{
sl_platform_init();
sl_driver_init();
sl_service_init();
sl_stack_init();
sl_internal_app_init();
}
其中的sl_driver_init();函数就已经把需要的外设驱动初始化了,
void sl_driver_init(void)
{
GPIOINT_Init();
sl_simple_led_init_instances();
sl_uartdrv_init_instances();
}
这样就不需要再次初始化一遍外设的驱动。

3 中断配置

这里还使用之前的btn0对应的PB02接口作为中断源。
image.png

在之前的sl_driver_init(void)函数中可以看到有一个GPIOINT_Init();
这里已经对GPIO的中断做了一定的配置。
image.png
在gpiointerrupt.c中可以看到有两个和中断相关的函数
image.png

image.png
通过函数的说明也可以看出这是中断的绑定接口函数

4 具体操作

调用sl_simple_button_init(&sl_button_btn0);对BTN0中断进行初始化

这个函数中已经对中断的相关触发和处理函数进行了关联
image.png

其中
interrupt = GPIOINT_EM4WUCallbackRegisterExt(simple_button->port,
simple_button->pin,
(GPIOINT_IrqCallbackPtrExt_t)sli_simple_button_on_change,
button);

sli_simple_button_on_change()就是对应的中断回调函数。

编译下载运行,在sli_simple_button_on_change()函数中打断点运行。每次按下按键都能正常进入中断处理函数执行。

更多回帖

发帖
×
20
完善资料,
赚取积分