ARM9的裸奔(一)——GPIO的输入与输出
来源:互联网 发布:ubuntu 14.04 jdk 编辑:程序博客网 时间:2024/04/29 06:16
S3C2440A有九组IO口,共130个。每组IO口数目不同,其中A组口只有输出功能。截图如下:
关于对IO口的操作,就主要设计到3个寄存器。GPXCON(配置),GPXUP(上拉使能),GPXDAT(数据)。其中GPXCON配置IO寄存器中每两位控制1个IO口。00表示输入,01表示输出,10表示第三功能,11保留。
对数据寄存器GPXDAT的操作则是相应位写1高电平,写0低电平。上拉是能寄存器GPXUP则是相应位为1时禁止相应端口的上拉电阻,为0使能。
下面的代码实现了实现按下某个按键时,相应LED亮,松开按键时LED灭。练习了IO口德输入与输出。
下面是我的原理图跟LED控制和按键控制相关的IO口。
写程序期间有个小插曲。错把GPF6看成GPG6,直接让我郁闷了会儿,又是想当然做的怪。看看其它5个口都是G口。
下面是程序代码:
#include <S3C2440.h>#include "cfg.h"#defineKEY1(1<<1) #define KEY2(1<<9)#define KEY3(1<<10)#define KEY4(1<<11)#define LED1(1<<5)#defineLED2(1<<6)#define LED3(1<<7)#define LED4(1<<8)#define READ_KEY(x) (GPGDAT & (x)) #define TURN_ON(x)(GPBDAT &= ~(x))#define TURN_OFF_LEDS(GPBDAT |= LED1 | LED2 | LED3 | LED4)#define TURN_ON_LEDS(GPBDAT &= ~(LED1 | LED2 | LED3 | LED4))void Key_led_init(void){//LED InitGPBCON &= ~((3<<10) | (3<<12) | (3<<14) | (3<<16));GPBCON |= (1<<10) | (1<<12) | (1<<14) | (1<<16);//LED_IO configure outputTURN_OFF_LEDS;//KEY InitGPGCON &= 0x0;}void Key_scan(void){if(READ_KEY(KEY1) == 0)TURN_ON(LED1);else if(READ_KEY(KEY2) == 0)TURN_ON(LED2);else if(READ_KEY(KEY3) == 0)TURN_ON(LED3);else if(READ_KEY(KEY4) == 0)TURN_ON(LED4);elseTURN_OFF_LEDS;}int main(void){Key_led_init();while(1){Key_scan();}}
其中头文件cfg.h是一个配置文件,现在里面暂时只有一些数据类型的别名。头文件如下:
#ifndef _CFG_H#define _CFG_Htypedef unsigned int u32;typedef unsigned short u16;typedef unsigned char u8;typedef signed int s32;typedef signed short s16;typedef signed char s8;#endif
- ARM9的裸奔(一)——GPIO的输入与输出
- 文件的输入与输出(一)
- 在裸奔2440时候遇到的GPIO郁闷问题
- “【】”的输入与输出
- 6410 gpio口输入和输出的理解
- 如何利用s3c2440的gpio实现数据输入和输出
- 一 ARM9(S3C2440)的中断系统——理论知识
- STM32的GPIO口的输出:开漏输出和推挽输出 浮空输入
- GPIO-输入/输出配置
- 【ARM学习笔记】实验一:S3C2440A的GPIO输出实验
- C++输入与输出—cout和cin的用法
- C++输入与输出—cout和cin的用法
- 基础知识—数据类型-数据的输出与输入
- 第一次机房收费系统—信息的输入与输出
- shell的输入与输出
- Linux_shell_shell的输入与输出
- 数据的输入与输出
- java 的输入与输出
- openFileOutput()
- Linux之ELF魔数解析
- iPhone开发【二十五】使用静态库—第1篇(使用Cocoa Touch Static Library模板)
- Spring中Log4j高级配置
- div+js实现首尾相连循环滚动效果
- ARM9的裸奔(一)——GPIO的输入与输出
- Emacs 快捷键
- 数据结构之Trie树
- 【WE START IN】我的面试经历二(签约移动,违约华为)应届生的选择! 浙江移动
- 符号三角形问题(回溯)
- Oracle RAC failover 测试(TAF方式)
- 《设计模式的艺术——软件开发人员内功修炼之道》重磅来袭!
- 单例模式(懒汉、恶汉式)
- android长度单位详解