嗨,对话框中,
我正在使用peripherals_demo与UART-device通信。现在我想使用开发板(Basic)上的按钮K1 (P1_6)作为GPIO-Interrupt,它开关板(P1_5)上的橙色LED。我认为hw_wkup_interrupt是合适的。这个中断是否在所有模式下工作(主动,睡眠,延长睡眠)?
我找不到任何关于如何实现ISR的文档,你能帮我一下吗?
如果我正确,引脚配置和中断初始化应该插入到外围设置()函数。
空白periph_setup(空白)
{
...
/ /引脚配置
hw_gpio_set_pin_function(HW_GPIO_PORT_1, HW_GPIO_PIN_6, HW_GPIO_MODE_INPUT_PULLUP, HW_GPIO_FUNC_GPIO);/ /按钮K1
hw_gpio_set_pin_function(HW_GPIO_PORT_1, HW_GPIO_PIN_5, HW_GPIO_MODE_OUTPUT, HW_GPIO_FUNC_GPIO);/ / D2领导
/ /中断初始化
hw_wkup_init(空);
hw_wkup_register_interrupt (wkup_ISR, 1);
hw_wkup_configure_pin(HW_GPIO_PORT_1, HW_GPIO_PIN_6, true, HW_WKUP_PIN_STATE_LOW);
...
}
应在何处实施ISR ?在第一步,我只是想激活和停用LED,以便我可以确保中断是工作的。
静态孔隙wkup_ISR(空白)
{
hw_wkup_reset_interrupt ();
hw_gpio_set_active (HW_GPIO_PORT_1 HW_GPIO_PIN_5);//打开LED显示功能
...
hw_gpio_set_inactive (HW_GPIO_PORT_1 HW_GPIO_PIN_5);/ /关闭了
}
谢谢你!
嗨dx3gerst,
你说的“ISR应该在哪里实施”是什么意思,在哪个文件中?如果愿意,可以在main.c文件中实现代码。同样不要将唤醒中断设置放在外围的init()(这个函数会在每次唤醒中被调用,以便在退出睡眠后设置你的引脚),你可以看一下SDK中的hrp_sensor示例,在这个例子中,peri_init()只包含引脚的配置,并且唤醒中断的设置是在prvSetupHardware()函数中实现的,就在调用peri_init()的pm_system_init()之后。
由于MT_dialog
谢谢你!