Omap3530 的GPIO中斷設定

2021-06-05 13:52:10 字數 1691 閱讀 1525

omap3530 的gpio中斷設定:

1.配置成gpio,申請gpio中斷

omap_cfg_reg(omap3_kbd_gpio);配置成gpio

if (gpio_request(omap3_kbd_gpio, "kbd7279 irq") < 0)

printk(kern_err "failed to request gpio%d for kbd irq/n");//申請gpio為中斷引腳。

2. 設定中斷觸發模式

set_irq_type(omap_gpio_irq(omap3_kbd_gpio),irq_type_edge_falling);

3.使能中斷

enable_irq(gpio_to_irq(omap3_kbd_gpio));

gpio_to_irq()函式將omap3_kbd_gpio對映為中斷管腳,enable_irq()函式將其使能,這樣該埠就設定為中斷了。

4.申請中斷

if(result = request_irq(omap_gpio_irq(omap3_kbd_gpio), &kbd7279_isr,0, "ds7279", null))

printk(kern_info"[falled: cannot register kbd7279_interrupt!]/n");

return -ebusy;

else

printk("[ok]/n");

下面是完整的設定程式:

void setup_kbd7279(void)

int i,result;

omap_cfg_reg(omap3_kbd_gpio);

if (gpio_request(omap3_kbd_gpio, "kbd7279 irq") < 0)

printk(kern_err "failed to request gpio%d for kbd irq/n");

gpio_direction_input(omap3_kbd_gpio);

set_irq_type(omap_gpio_irq(omap3_kbd_gpio),irq_type_edge_falling);//irq_type_edge_rising

enable_irq(gpio_to_irq(omap3_kbd_gpio));

//set_irq_type(omap_gpio_irq(omap3_kbd_gpio),0 );irq_type_level_low

if(result = request_irq(omap_gpio_irq(omap3_kbd_gpio), &kbd7279_isr,0, "ds7279", null))

printk(kern_info"[falled: cannot register kbd7279_interrupt!]/n");

return -ebusy;

else

printk("[ok]/n");

send_byte(cmd_reset);

setcs1;

printk("hd7279 setup complete! --- > [ok]/n");

for(i=0;i<1000;i++);

write7279(decode1+7,0x1);

write7279(decode1+6,0x2);

這裡有個地方一定要注意的,一定要確定設為中斷的引腳工作在gpio模式,如果不是,先要設定為gpio模式。

關於OMAP3530的顯示系統

此軟體基於ffmpeg 在omap3530系統裡,dss表示display subsystem,顯示子系統。dss在linux核心裡面有2個版本的驅動,使用的時候2選一。dss1 驅動內容在 drivers video omap2 dss2 驅動在 arch arm plat omap dss ds...

三星的中斷及GPIO口中斷的申請

s3c gpio cfgpin hdphone gpiopin,s3c gpio sfn 2 配置gpio11為外中斷 s3c gpio setpull hdphone gpiopin,s3c gpio pull none 不上拉也不下拉,硬體預設拉高 set irq type hdphone ei...

linux系統gpio中斷的實現(提供例程)

該介面基於linux提供的通用中斷api介面實現。3.下面是驅動以及應用層的 driver.c include include include include include include include include include include include include includ...