EmxGpio

关于GPIO的通用操作接口 更多...

EmxGpio 的协作图:

class  Emx::Gpio
 关于GPIO的通用操作,奇葩的控制方式可通过继承此类后重载实现 更多...
 

详细描述

  EmxCore模块提供了Gpio子模块来提供通用GPIO的操作,这里只提供了linux下/sys/class/gpio的方式来操作gpio。

  Gpio模块将gpio底层的极性进行了封装,将GPIO的电平高低按照实际电路使能的极性进行直传或者反转,最终对外提供的是使能类型的操作,例如控制led的gpio是低电平亮,那么这个gpio就是低有效,配置这个GPIO的极性为ActiveE::Low之后,想控制这个led亮,就只需要SetValue(Enable)。屏蔽极性之后,使用者再操作Gpio就比较直观了,所有想让led亮的操作都对应着SetValue(Enable)。获取操作类似,例如所有板子的reset按键的按下最终都会对应GetValue()==Enable。

  举例说明

#include "EmxCore.hpp"
using namespace Emx;
int main(){
// 定义一个指示灯管脚,在/sys/class/gpio下的gpio号是106
// 定义为输出,在低电平的时候有效(led点亮),默认关闭
// 打开led
led.SetValue(Gpio::ValueE::Enable);
// 定义一个指示灯管脚,在/sys/class/gpio下的gpio号是220
// 定义为输入,在高电平的时候有效(按键按下),默认值无所谓
// 获取按键状态
if(key.GetValue() == Gpio::ValueE::Disable)
printf("key released\n");
else
printf("key pressed\n");
return 0;
}
@ Enable
使能有效
@ Disable
失能无效
Definition: EmxGpio.hpp:10

其中gpio号需要用户根据硬件引脚的bank和pin进行转换得到