sinc_mark 发表于 2017-5-16 13:43:37

关于6410外部中断的请教

在飞凌6410上写的一个外部中断驱动,为什么我申请的驱动是上升沿中断,但在高电平的时候,还是会触发中断处理函数了?
       

        enable_irq(IRQ_EINT(0));
        ret = request_irq(IRQ_EINT(0), irq_function, IRQF_TRIGGER_RISING/*IRQF_TRIGGER_FALLING*/, "spidata_irq", NULL);       
上述函数申请了一个上升沿的中断,irq_function这个是中断处理函数。irq_function这个函数中,现在只是在做内核打印,
现在的情况是,我只要给出一个高电平,它就不停的打印,这个是为什么呢?请有经验的指导原因,谢谢!

7802848 发表于 2017-5-16 13:45:50

在设置管脚中断触发的地方设置,不是这里

sinc_mark 发表于 2017-5-16 14:09:25

7802848 发表于 2017-5-16 13:45
在设置管脚中断触发的地方设置,不是这里

我有配置管脚的驱动功能的:
        gpio_direction_input(S3C64XX_GPL(8));
       
        s3c_gpio_setpull(S3C64XX_GPL(8), S3C_GPIO_PULL_DOWN);               
        s3c_gpio_cfgpin(S3C64XX_GPL(8), S3C_GPIO_SFN(3));                 //setexternal interrupt
不知道你说的是不是这个?

7802848 发表于 2017-5-16 14:17:28

本帖最后由 7802848 于 2017-5-16 14:19 编辑

sinc_mark 发表于 2017-5-16 14:09
我有配置管脚的驱动功能的:
        gpio_direction_input(S3C64XX_GPL(8));
       


不完整 还有设置中断输入吧 应该有个设置管脚为中断输入的地方,设置边沿触发还是电平触发,上升沿或者下降沿,高电平或者低电平

sinc_mark 发表于 2017-5-16 14:23:36

7802848 发表于 2017-5-16 14:17
不完整 还有设置中断输入吧 应该有个设置管脚为中断输入的地方,设置边沿触发还是电平触发,上升沿或者下 ...

ret = request_irq(IRQ_EINT(0), irq_function, IRQF_TRIGGER_RISING/*IRQF_TRIGGER_FALLING*/, "spidata_irq", NULL);      
这句就是设置为上升沿触发啊?难道这句有错?

7802848 发表于 2017-5-16 14:40:40

void io_irq_enable_edge(int port,int pin,int type)
request_irq不是设置硬件
页: [1]
查看完整版本: 关于6410外部中断的请教