OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3808|回复: 0

[求救大神]4412开发板设置外部中断为下降沿触发,但是在上升沿的时候也触发中断

[复制链接]

45

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
250
金钱
250
注册时间
2015-5-7
在线时间
10 小时
发表于 2017-2-20 17:05:11 | 显示全部楼层 |阅读模式
1金钱
[求救大神]4412开发板设置外部中断为下降沿触发,但是在上升沿的时候也触发中断
设置和问题如下:
1. 中断信号经过硬件消斗处理;
1. 调试迅为4412的外部中断时,设置中断为下降沿触发,但是在上升沿的时候也触发了中断,这里上升沿触发中断时,中断脚的电平读出来为 0;
2. 设置的外部中断脚为EXYNOS4_GPX2(0),EXYNOS4_GPX2(1),EXYNOS4_GPX1(2),EXYNOS4_GPX3(0)),EXYNOS4_GPX3(2);
3. 其中引脚EXYNOS4_GPX3(0)设置为下降沿中断时,在上升沿不会像其他引脚一样触发中断;
4. 设置为上升沿触发中断时,在上升沿会触发两次中断,在第一次中断时,读取中断脚的电平为 0,在第二次中断时,读取中断脚的电平为 1 ;
5. 调试过程中没有加载下列make menuconfig 路径中提供的的任何驱动:
Device Drivers  --->                                                              
         Input device support  --->
                           
·     Keyboards  --->  
6. 中断配置代码如下:
[mw_shl_code=applescript,true]    ret = gpio_request(EXYNOS4_GPX3(2), "EINT26");
    if (ret) {
                printk("%s: request GPIO %d for EINT26 failed, ret = %d\n", DRIVER_NAME,
                EXYNOS4_GPX3(2), ret);
                return ret;
             }
    s3c_gpio_cfgpin(EXYNOS4_GPX3(2), S3C_GPIO_SFN(0xF));
    s3c_gpio_setpull(EXYNOS4_GPX3(2), S3C_GPIO_PULL_UP);
    gpio_free(EXYNOS4_GPX3(2));
    ret = gpio_request(EXYNOS4_GPX3(2), "EINT26");
    if (ret) {
                printk("%s: request GPIO %d for EINT26 failed, ret = %d\n", DRIVER_NAME,
                EXYNOS4_GPX3(0), ret);
                return ret;
             }
    s3c_gpio_cfgpin(EXYNOS4_GPX3(0), S3C_GPIO_SFN(0xF));
    s3c_gpio_setpull(EXYNOS4_GPX3(0), S3C_GPIO_PULL_UP);
    gpio_free(EXYNOS4_GPX3(0));
    ret = gpio_request(EXYNOS4_GPX2(1), "EINT17");
    if (ret) {
                printk("%s: request GPIO %d for EINT17 failed, ret = %d\n", DRIVER_NAME,
                EXYNOS4_GPX2(1), ret);
                return ret;
             }
    s3c_gpio_cfgpin(EXYNOS4_GPX2(1), S3C_GPIO_SFN(0xF));
    s3c_gpio_setpull(EXYNOS4_GPX2(1), S3C_GPIO_PULL_UP);
    gpio_free(EXYNOS4_GPX2(1));
    ret = gpio_request(EXYNOS4_GPX1(2), "EINT10");
    if (ret) {
                printk("%s: request GPIO %d for EINT10 failed, ret = %d\n", DRIVER_NAME,
                EXYNOS4_GPX1(2), ret);
                return ret;
             }
    s3c_gpio_cfgpin(EXYNOS4_GPX1(2), S3C_GPIO_SFN(0xF));
    s3c_gpio_setpull(EXYNOS4_GPX1(2), S3C_GPIO_PULL_UP);
    gpio_free(EXYNOS4_GPX1(2));
    ret = request_irq(IRQ_EINT(26), eint26_interrupt,
                        IRQ_TYPE_EDGE_FALLING /*IRQF_TRIGGER_FALLING*/, "eint26", pdev);
    if (ret < 0) {
                    printk("Request IRQ %d failed, %d\n", IRQ_EINT(26), ret);
                    goto exit;
                 }
    ret = request_irq(IRQ_EINT(24), eint24_interrupt,
                        IRQ_TYPE_EDGE_FALLING /*IRQF_TRIGGER_FALLING*/, "eint24", pdev);
    if (ret < 0) {
                    printk("Request IRQ %d failed, %d\n", IRQ_EINT(24), ret);
                    goto exit;
                 }
    ret = request_irq(IRQ_EINT(17), eint17_interrupt,
                        IRQ_TYPE_EDGE_FALLING /*IRQF_TRIGGER_FALLING*/, "eint17", pdev);
    if (ret < 0) {
                    printk("Request IRQ %d failed, %d\n", IRQ_EINT(17), ret);
                    goto exit;
                 }
    ret = request_irq(IRQ_EINT(10), eint10_interrupt,
                        IRQ_TYPE_EDGE_FALLING /*IRQF_TRIGGER_FALLING*/, "eint10", pdev);
    if (ret < 0) {
                    printk("Request IRQ %d failed, %d\n", IRQ_EINT(10), ret);
                    goto exit;
                 }[/mw_shl_code]
7. 中断信号波形:
图片1.jpg

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-25 12:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表