智能车制作

标题: KEA128GPIO输入引脚逻辑值读取 [打印本页]

作者: easonjake    时间: 2018-6-3 23:07
标题: KEA128GPIO输入引脚逻辑值读取
请教大佬KEA128GPIO输入引脚逻辑值的读取方式是否正确
#define READ_INPUT(port,port_pin)                                                        XREAD_INPUT(port,port_pin)
#define XREAD_INPUT(port,port_pin)                                        (port->PDIR & GPIO_PDIR_PDI(1<<port_pin))       

以上是GPIO.h里面的文件目的是读取PDIR寄存器的值。
直接这样R_DIR = READ_INPUT(PTE, PTE5);读取PTE5引脚的逻辑值的方式是否正确。这样R_DIR的值就是0或者1吗?
@神车名为GTR @神车名为GTR 麻烦大佬帮忙看看。

作者: 神车名为GTR    时间: 2018-6-4 08:38
本帖最后由 神车名为GTR 于 2018-6-4 08:41 编辑

emmm我不是大佬,就是水的多

你的问题是我知识盲区。

不过,以我的经验来看,应该大概也许是对的。

话说回来,为什么不直接用函数呢?gpio_init之后用gpio_get应该就可以了

不同的第三方库里封装的函数名称可能不一样,上述两个函数名可以根据自己使用的库函数进行修改
虽然理论上直接读寄存器会比用函数快,但是程序是写给人看的,再者,也快不到哪去



作者: easonjake    时间: 2018-6-5 22:24
神车名为GTR 发表于 2018-6-4 08:38
emmm我不是大佬,就是水的多

你的问题是我知识盲区。

谢谢大佬,这两天我仔细看了下逐飞的gpio_get函数,应该和我这个是差不多的。但我在调试的过程中读取到的GPIO输入引脚的值并不是逻辑0或者逻辑1,而是一个16进制数0x20。这个有点困惑。

作者: 神车名为GTR    时间: 2018-6-5 22:47
本帖最后由 神车名为GTR 于 2018-6-5 22:52 编辑
easonjake 发表于 2018-6-5 22:24
谢谢大佬,这两天我仔细看了下逐飞的gpio_get函数,应该和我这个是差不多的。但我在调试的过程中读取到的 ...

如果是C语言的话……

据我所知,c98标准里并没有bool类型,c99标准的bool类型是用uint8表示的
就是说你定义一个bool类型x,令x=true,x可能会是1-255中的任意值

所以我觉得,C语言里并没有严格意义上的bool类型

在C语言里,任何非零数都可以表示逻辑真值,并不是只有1表示逻辑真值
所以0x20可能没问题

希望可以对你有帮助!







欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2