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点亮