100分GPIO该怎么调用
100分请教高手GPIO该如何调用
我这有个D525的工控主板,自带GPIO功能,4进4出。
下面的是厂家告知的GPIO的参数:
BIOS 默认:
GPIO 17,20,27,28 ==>GPO 0(低电平)
GPIO 51,53,54,55 ==>GPI如果要设定GPIO17为1(高电平)
GPIO Base=0x500 + 0x0E(bit1)设为1就可以了,
设为0就是低电平
如果是GPIO51(Input)
那么就读0x500+0x3A(Bit3),读到1就代表输入的是高电平,0就是输入的是低电平
请教高手,如何编写这种D525主板的GPIO调用程序?在网上找了若干,但都无果,好几天了,再搞不定就崩溃了
------解决方案--------------------
不懂,既然你知道对应的映射地址,直接用指针读写就行了啊
你那个GPIO base有点没看明白
如果是GPIO51(Input)
那么就读0x500+0x3A(Bit3),读到1就代表输入的是高电平,0就是输入的是低电平
0X500+0x0e+51=?
------解决方案--------------------
这主要取决于你的工控板有没有系统,如果没有系统或有小系统但没有虚拟地址映射,直接访问地址就可以了。
如果有系统,比如linux,就只能做驱动访问了。
------解决方案--------------------
呵呵。换串口继电器模块了啊。
一般而言,厂商应该是提供驱动程序的啊。
如果没有的话,找个winio之类的程序,就可以用它提供的函数来读写端口了。
(XP下是没办法在应用层直接读写端口的,系统保护掉了)
我这有个D525的工控主板,自带GPIO功能,4进4出。
下面的是厂家告知的GPIO的参数:
BIOS 默认:
GPIO 17,20,27,28 ==>GPO 0(低电平)
GPIO 51,53,54,55 ==>GPI如果要设定GPIO17为1(高电平)
GPIO Base=0x500 + 0x0E(bit1)设为1就可以了,
设为0就是低电平
如果是GPIO51(Input)
那么就读0x500+0x3A(Bit3),读到1就代表输入的是高电平,0就是输入的是低电平
请教高手,如何编写这种D525主板的GPIO调用程序?在网上找了若干,但都无果,好几天了,再搞不定就崩溃了
GPIO
------解决方案--------------------
不懂,既然你知道对应的映射地址,直接用指针读写就行了啊
你那个GPIO base有点没看明白
如果是GPIO51(Input)
那么就读0x500+0x3A(Bit3),读到1就代表输入的是高电平,0就是输入的是低电平
0X500+0x0e+51=?
void SetBit(uint8_t gpio)
{
volatile uint32_t *ptr;//假设是32位机
switch(gpio)
{
case 51:
ptr=GPIO51的映射地址
*ptr=1;//根据情况对该地址的某一位进行或操作
break;
case 53:....
}
------解决方案--------------------
这主要取决于你的工控板有没有系统,如果没有系统或有小系统但没有虚拟地址映射,直接访问地址就可以了。
如果有系统,比如linux,就只能做驱动访问了。
------解决方案--------------------
呵呵。换串口继电器模块了啊。
一般而言,厂商应该是提供驱动程序的啊。
如果没有的话,找个winio之类的程序,就可以用它提供的函数来读写端口了。
(XP下是没办法在应用层直接读写端口的,系统保护掉了)