注册 登录
查看: 369|回复: 8

设置gpio为中断,怎么去读取它的电平呢?

[复制链接]
发表于 2014-8-17 10:40:32 | 显示全部楼层 |阅读模式
我用A口的四个口接四个按键,先初始化了这四个口为
port_init(PTA4, ALT1 | IRQ_FALLING | PULLUP );  
port_init(PTA5, ALT1 | IRQ_FALLING | PULLUP );
port_init(PTA6, ALT1 | IRQ_FALLING | PULLUP );  
port_init(PTA7, ALT1 | IRQ_FALLING | PULLUP );
void  PORTA_IRQHandler()
{
     PORT_FUNC(A,4,func1);
    PORT_FUNC(A,5,func2);
    PORT_FUNC(A,6,func3);
    PORT_FUNC(A,7,func4);
}
上面对吗?
然后我每隔1s读取他的电平。函数怎么写呢?
回复

使用道具 举报

发表于 2014-8-17 10:54:40 | 显示全部楼层
先进行port初始化端口,例如:
port_init(PTA4, ALT1 | IRQ_FALLING | PULLUP );  //这里已经配置为复用为gpio功能

然后再配置io口输出方向:
gpio_ddr   (PTA4, GPO)


后续即可以在中断里获取io的电压。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-17 11:00:21 | 显示全部楼层
山外メ雲ジ 发表于 2014-8-17 10:54
先进行port初始化端口,例如:
port_init(PTA4, ALT1 | IRQ_FALLING | PULLUP );  //这里已经配置为复用为 ...

复用是可以同时多用,还是换成另外一种功能呢/
回复 支持 反对

使用道具 举报

发表于 2014-8-17 11:02:36 | 显示全部楼层
798931248 发表于 2014-8-17 11:00
复用是可以同时多用,还是换成另外一种功能呢/

port 和 gpio 相当于串行那样,两个可以同时起作用。

一个端口,可以复用成多个功能,如gpio、uart,不过同一时间只能复用其中一个功能。复用是有port模块来控制的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-17 11:06:51 | 显示全部楼层
山外メ雲ジ 发表于 2014-8-17 10:54
先进行port初始化端口,例如:
port_init(PTA4, ALT1 | IRQ_FALLING | PULLUP );  //这里已经配置为复用为 ...

可以初始化为输入吗?
回复 支持 反对

使用道具 举报

发表于 2014-8-17 11:11:06 | 显示全部楼层
798931248 发表于 2014-8-17 11:06
可以初始化为输入吗?

嗯,你配置了复用功能后,直接配置为输入方向就好了。
回复 支持 反对

使用道具 举报

发表于 2014-8-17 11:11:39 | 显示全部楼层
798931248 发表于 2014-8-17 11:06
可以初始化为输入吗?

你可以看看 gpio初始化的内部代码,仅仅配置port初始化,然后配置输入输出方向就好了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-17 11:18:58 | 显示全部楼层
山外メ雲ジ 发表于 2014-8-17 11:11
你可以看看 gpio初始化的内部代码,仅仅配置port初始化,然后配置输入输出方向就好了

谢谢啦!有些术语有点不懂,看那些库文件的时候,挺难的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-17 11:23:00 | 显示全部楼层
山外メ雲ジ 发表于 2014-8-17 11:11
你可以看看 gpio初始化的内部代码,仅仅配置port初始化,然后配置输入输出方向就好了

是不是用这个函数void gpio_init (PTXn_e ptxn, GPIO_CFG cfg, uint8 data)只使用了一种功能,是不是gpio功能。他不能和 port_init(PTXn_e ptxn, uint32 cfg )同使用吧?
回复 支持 反对

使用道具 举报

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

本版积分规则

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