如何处理GPIO引脚或UART或计时器的外部中断

8个帖子/ 0新
最后一篇
灯光
离线
最后一次露面:4年11个月前
加入:2014-08-07 18:27
如何处理GPIO引脚或UART或计时器的外部中断

嗨,对话
新年快乐。我有一个简单但普通的问题。
如何捆绑GPIO引脚或UART的外部中断?例如,如果我想在GPIO中断或UART中断发生时更改变量,那么有任何简单的软样本吗?我渴望你的帮助。当我读取AN-B-026_DA14580外部唤醒机制_v1.0时,它会有一种感觉,但没有特定的样本。

tr_dialog.
离线
最后一次露面:2个月3天前
职员
加入:2014-06-30 23:52
对于完全托管的拟议,

对于完全托管的拟议,您可以在以下项目中看到代码:C:\ da1458x_sdk_3.0.6 \ dk_apps \ keil_projects \ proximity \ eporter_fh。

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

此回调在例程App_button_enable()中注册:wkupct_register_callback(app_button_press_cb);

此外,请注意,在App_Button_Enable例程中,我们为给定GPIO启用中断

在这种情况下,它是:

#define gpio_button_port gpio_port_1.
#define gpio_button_pin gpio_pin_1.

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

请参阅例程WKUPCT_ENABLE_IRQ的注释,以便为不同的GPIO引脚设置此值的说明。

灯光
离线
最后一次露面:4年11个月前
加入:2014-08-07 18:27
谢谢!这个信息很有帮助!

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

RVA.
离线
最后一次露面:16小时36分钟前
职员
加入:2014-02-07 14:10
嗨光旺,

嗨光旺,

该函数对事件(例如按字母)进行计数,并在某种编程的按键次数后唤醒设备。

此致,

RVA(对话)

灯光
离线
最后一次露面:4年11个月前
加入:2014-08-07 18:27
嗨对话框:

嗨对话框:
感谢您的帮助。我在这里有一个新的问题。我使用单个IO(SPI_GPIO_PORT,SPI_DRDY_PIN)作为外部中断,发生事件时的高电平值
void app_button_enable(void)
{
wkupct_register_callback(app_button_press_cb);
if(!gpio_getpinstatus(spi_gpio_port,spi_drdy_pin))
wkupct_enable_irq(0x02,0x02,1,0);// p0_1,极性低,1个事件,脱嘴时间= 0
}

问题1:我应该用哪一个来判断PIN的活跃低,!GPIO_GETPINSTATUS()或GPIO_GETPINSTATUS()?

2.如何编写VOID APP_BUTTON_PRESS_CB(void)?当EXT中断发生时,系统自动呼叫void app_button_press_cb(void)?

mhv_dialog.
离线
最后一次露面:1个月1周前
职员
加入:2013-12-06 15:10
你好,

你好,

1.如果您希望验证PIN是否低于您应该使用

if(!gpio_getpinstatus(spi_gpio_port,spi_drdy_pin))

2.发生中断时,将自动调用调用呼叫函数。

过热
离线
最后一次露面:4年11个月前
加入: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-7 - >端口0(p00..p07),位8-13 - >端口1(p10..p15),......

我认为p1_1应该是0x20; p1_2应该是0x40

但在SDK中,功能是:WKUPCT_ENABLE_IRQ(0x200,0x200,1,10);
void app_button_enable(void)
{
wkupct_register_callback(app_button_press_cb);
if(gpio_getpinstatus(gpio_button_port,gpio_button_pin))
wkupct_enable_irq(0x200,0x200,10);// p1_1,极性低,1个事件,脱嘴时间= 0
}

所以我误会了吗?谢谢你的回复。

mt_dialog.
离线
最后一次露面:1个月2周前
职员
加入:2015-06-08 11:34
嗨过热,

嗨过热,

如果将值设置为0x20,则PIN 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.