Linux 嵌入式 GPIO

  GPIO的驱动相对是其他功能模块的基础。其分类有以下几种,

输入和输出;输出数据为1或者0。今天就学了这俩,还没有学到中断。

输入输出是通过寄存器GPxCON寄存器来配置的, 00为input,01为output。

输出数据是通过GPxDAT寄存器配置。

配置流程如下:

1  宏定义寄存器

2  宏定义数据(寄存器的大部分操作都是使用的位运算,避免在赋值过程中影响其他的位)

3  主函数.........

4  在输入的情况下,也是直接读取GPxDAT。是8位寄存器。

找了韦东山的示例学习一下

这个示例是通过按键控制板子上的三个LED。按键为输入,LED为输出。

#define GPFCON (*(volatile unsigned long *)0x56000050)
#define GPFDAT (*(volatile unsigned long *)0x56000054)

#define GPF4_out (1<<(4*2))

#define GPF4_msk (3<<(4*2))

#define GPF0_in (0<<(0*2))

#define GPF0_msk (3<<(0*2))
主函数

GPFCON &= ~GPF4_msk ;
GPFCON |= GPF4_out;


GPFCON &= ~GPF0_msk ;
GPFCON |= GPF0_in ;

dwDat = GPFDAT; // 读取GPF管脚电平状态

if (dwDat & (1<<0)) // S2没有按下
  GPFDAT |= (1<<4); // LED1熄灭
else
  GPFDAT &= ~(1<<4); // LED1点亮

猜你喜欢

转载自www.cnblogs.com/shaniu/p/10295444.html