如何处理GPIO PIN或UART或定时器的外部中断

8个职位/ 0个新职位
最后发表
gwang
离线
最后看到:5年5天前
加入:2014-08-07的人们
如何处理GPIO PIN或UART或定时器的外部中断

嗨,对话框
新年快乐。我有一个简单但普通的问题。
如何处理GPIO PIN或UART的外部中断?例如,如果我想在发生GPIO中断或UART中断时更改一个变量,是否有简单的软采样?我渴望你的帮助。当我阅读AN-B-026_DA14580外部唤醒机制_v1.0时,它有一定的意义,但没有特定的示例。

TR_Dialog
离线
最后看到:2个月4个星期前
工作人员
加入:2014-06-30 23:52
对于完全托管的解决方案,

对于一个完全托管的解决方案,你可以在以下项目中看到代码:C:\ da1458x_sdk_name .0.6\dk_apps\keil_projects\proximity\reporter_fh。

Void app_button_press_cb(Void)是中断发生时的回调例程。

这个回调是在例程app_button_enable()中注册的:

另外,请注意,在app_button_enable例程中,我们为给定的GPIO启用中断

在本例中是:

#定义GPIO_BUTTON_PORT GPIO_PORT_1
#定义GPIO_BUTTON_PIN GPIO_PIN_1

当你使用不同的GPIO引脚作为中断源时,传递给wkupct_enable_irq的参数需要相应地改变。

请参阅例程wkupct_enable_irq中的注释,了解如何为不同的GPIO引脚设置这个值。

gwang
离线
最后看到:5年5天前
加入:2014-08-07的人们
谢谢!这些信息很有用!

谢谢!这些信息很有用!
一个新的问题:当我研究void wkupct_enable_irq(uint32_t sel_pins, uint32_t pol_pins, uint16_t events_num, uint16_t deb_time)函数时。
param events_num(唤醒中断前的事件数)意味着什么?事件数意味着什么?

RvA
离线
最后看到:2个星期5天前
工作人员
加入:2014-02-07 14:10
嗨gwang,

嗨gwang,

该功能对事件进行计数(例如按下按键),并在按下一定数量的按键后唤醒设备。

最好的问候,

RvA(对话框)

gwang
离线
最后看到:5年5天前
加入:2014-08-07的人们
嗨对话框:

嗨对话框:
谢谢你的帮助。我有一个新问题。我使用一个IO(SPI_GPIO_PORT, SPI_DRDY_PIN)作为外部中断,当事件发生时激活LOW
空白app_button_enable(空白)

wkupct_register_callback (app_button_press_cb);
如果(!GPIO_GetPinStatus(SPI_GPIO_PORT, SPI_DRDY_PIN))
Wkupct_enable_irq (0x02, 0x02, 1,0);// P0_1,极性低,1事件,去噪时间= 0

问题1:我应该使用哪一个来判断Pin的active LOW, !GPIO_GetPinStatus()还是GPIO_GetPinStatus()?

2.如何写void app_button_press_cb(void) ?当发生ext中断时,系统自动调用void app_button_press_cb(void) ?

MHv_Dialog
离线
最后看到:2个月1个星期前
工作人员
加入:15 2013-12-06
你好,

你好,

1.如果您希望验证引脚低,您应该使用

如果(!GPIO_GetPinStatus(SPI_GPIO_PORT, SPI_DRDY_PIN))

2.当中断发生时,回调函数将被自动调用。

过热
离线
最后看到:5年2个星期前
加入:2014-10-10 23:34
你好,对话框,

你好,对话框,
我试过这个中断功能。

我读了这个函数的定义:wkupct_enable_irq (uint32_t sel_pins, uint32_t pol_pins, uint16_t events_num, uint16_t deb_time)
sel_pins选择启用的输入。位鹿- >端口0 (P00 . . P07),位8日至13日- >端口1 (P10 . . P15)……

我认为p1_1应该是0X20, P1_2应该是0X40

但是在SDK中,函数是:wkupct_enable_irq(0x200, 0x200, 1,10);
空白app_button_enable(空白)

wkupct_register_callback (app_button_press_cb);
if (GPIO_GetPinStatus(GPIO_BUTTON_PORT, GPIO_BUTTON_PIN))
Wkupct_enable_irq (0x200, 0x200, 1,10);// P1_1,极性低,1事件,去噪时间= 0

是我误会了吗?谢谢您的回复。

MT_dialog
离线
最后看到:2个月2周以前
工作人员
加入:2015-06-08 34
嗨过热,

嗨过热,

如果您将该值设置为0x20,那么引脚P0_5将等待被触发,对于P1_2,应该设置0x400,如果0x40,那么P0_6将等待被触发。请查看文档UM-B-004。

0 ~ 7位:端口0
8 ~ 15位:端口1
16 ~ 23位:端口2
24 ~ 31位:端口3

由于MT_dialog