8464
- 收藏
- 点赞
- 分享
- 举报
配置寄存器设置中断触发方式
大家好,想问一下,海思配置寄存器来设置中断触发方式的问题,寄存器设置我是按下面步骤来的
1. 配置GPIO_IS,选择边沿触发或电平触发。
2. 配置GPIO_IEV,选择下降沿/上升沿触发和高电平/低电平触发。
3. 如果选择边沿触发,需配置GPIO_IBE,选择单沿或双沿触发方式。
4. 保证GPIO 数据线在以上操作过程中保持稳定。
5. 向寄存器GPIO_IC 写0xFF,清中断。
6. 配置GPIO_IE 为1,使能中断。
然后申请中断request_irqs(),为什么老是出错。
下面是代码是驱动程序里面open函数里面的,gpio7的中断号为112
*gpio7_6_reg &= ~0x1; //设置gpio7-6为通用寄存器
*gpio7_7_reg &= ~0x1; //设置gpio7-7为通用寄存器
*gpio7_dir &= 0x0<<6; //gpio6.7为输入Î
// *gpio7_is&=0x00<<6;
*gpio7_is|=0x03<<6;gpio6,7为电平触发
*gpio7_iev&=0x0<<6;gpio6,7为低电平触发
// *gpio7_ibe&=0x00<<6;
*gpio7_ic|=0xff;清中断
*gpio7_ie|=0x3<<6;使能中断
irq_err0 = request_irq(wiegand_irqs[0].irq, wiegand_irq0,IRQ_TYPE_LEVEL_HIGH,wiegand_irqs[0].name, (void *)&wiegand_irqs[0].id);
if (irq_err0)
{
printk("request_irq error %d",wiegand_irqs[0].id);
}
irq_err1 = request_irq(wiegand_irqs[1].irq, wiegand_irq1,IRQ_TYPE_LEVEL_HIGH,wiegand_irqs[1].name, (void *)&wiegand_irqs[1].id);
if (irq_err1)
{
printk("request_irq error %d",wiegand_irqs[1].id);
}
驱动安装成功后,运行测试程序时,调用open函数打开设备时就显示打开设备失败:
setting trigger mode 2 for irq 112 failed (gic_set_type+0x0/0xc4)
request_irq error 6
setting trigger mode 2 for irq 112 failed (gic_set_type+0x0/0xc4)
request_irq error 7
还是不懂为什么,有人指导一下么?谢谢。。。
1. 配置GPIO_IS,选择边沿触发或电平触发。
2. 配置GPIO_IEV,选择下降沿/上升沿触发和高电平/低电平触发。
3. 如果选择边沿触发,需配置GPIO_IBE,选择单沿或双沿触发方式。
4. 保证GPIO 数据线在以上操作过程中保持稳定。
5. 向寄存器GPIO_IC 写0xFF,清中断。
6. 配置GPIO_IE 为1,使能中断。
然后申请中断request_irqs(),为什么老是出错。
下面是代码是驱动程序里面open函数里面的,gpio7的中断号为112
*gpio7_6_reg &= ~0x1; //设置gpio7-6为通用寄存器
*gpio7_7_reg &= ~0x1; //设置gpio7-7为通用寄存器
*gpio7_dir &= 0x0<<6; //gpio6.7为输入Î
// *gpio7_is&=0x00<<6;
*gpio7_is|=0x03<<6;gpio6,7为电平触发
*gpio7_iev&=0x0<<6;gpio6,7为低电平触发
// *gpio7_ibe&=0x00<<6;
*gpio7_ic|=0xff;清中断
*gpio7_ie|=0x3<<6;使能中断
irq_err0 = request_irq(wiegand_irqs[0].irq, wiegand_irq0,IRQ_TYPE_LEVEL_HIGH,wiegand_irqs[0].name, (void *)&wiegand_irqs[0].id);
if (irq_err0)
{
printk("request_irq error %d",wiegand_irqs[0].id);
}
irq_err1 = request_irq(wiegand_irqs[1].irq, wiegand_irq1,IRQ_TYPE_LEVEL_HIGH,wiegand_irqs[1].name, (void *)&wiegand_irqs[1].id);
if (irq_err1)
{
printk("request_irq error %d",wiegand_irqs[1].id);
}
驱动安装成功后,运行测试程序时,调用open函数打开设备时就显示打开设备失败:
setting trigger mode 2 for irq 112 failed (gic_set_type+0x0/0xc4)
request_irq error 6
setting trigger mode 2 for irq 112 failed (gic_set_type+0x0/0xc4)
request_irq error 7
还是不懂为什么,有人指导一下么?谢谢。。。
我来回答
回答6个
时间排序
认可量排序
认可0
认可0
认可0
认可0
认可0
认可0
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
2020-11-13 14:14:20
-
2018-08-08 19:05:56
-
2019-12-20 10:56:40
-
2019-01-03 15:15:16
-
82018-09-29 10:14:23
-
2019-01-21 09:33:10
-
2017-03-15 17:59:42
-
2016-03-17 19:06:13
-
2023-06-27 08:27:06
-
42015-10-21 11:12:48
-
2020-08-01 09:10:16
-
2021-03-09 10:38:13
-
2020-05-27 14:30:24
-
2017-03-21 14:31:30
-
2019-04-13 09:58:06
-
2021-01-06 16:19:08
-
2018-08-16 09:16:11
-
2018-08-09 15:18:15
-
2018-10-31 14:11:19
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
-
10EB-RV1126-BC-191板子运行自己编码的程序
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认