2440裸机编程之三 通用I/O口

2019-11-08来源: 51hei关键字:2440  裸机编程  通用I  O口

S3C2440A 具有130 个多功能输入/输出脚,分别包含在如下9 组端口中。
●1 个25 位输出端口(端口A)。
●1 个11 位输出端口(端口B)。
●4 个16 位输入/输出端口(端口C、D、E、G)。
●1 个8 位输入/输出端口(端口F)。
●1 个9 位输入/输出端口(端口H)。
●1 个13 位输入/输出端口(端口J)。


基本上,每个端口有三个寄存器:
GPnCON:端口配置寄存器,多数端口有多种功能,所以需要这个寄存器来使某个端口确定某一功能。

GPnDAT:端口数据寄存器,当端口为输出功能时:写这个寄存器就是使端口引脚输出相应电平;当端口为输入功能时:读这个寄存器就是读端口引脚上的相应电平;

GPnUP:端口上拉寄存器,决定端口是否具有内部上拉功能。


下面做个程序,使GPF4引脚上的LED灯闪烁。

GPF4的设置
GPFCON[9:8] 00 = Input   01 = Output
            10 = EINT[4] 11 = Reserved

GPF4的设置
GPFDAT的相应位分别对应每个引脚

//********************************************************************
void Main(void)
{     
    int i;
    ……硬件初始化……

LED();
while(1);

}

void  LED(void)
{
int i;
Uart_Printf("nIO LED 实验n");
Uart_Printf("GPF4----LED1闪烁n"); 
rGPFCON = rGPFCON & ~(3<<8) | 1<<8 ;//设置GPF4为输出功能
while(1)
{ for(i=0; i<10000000; i++);  //延时
  rGPFDAT = rGPFDAT ^ 1<<4 ;//GPF4电平反转
}
}
//*******************************************************************

结果如下图:



Very good,我们又学会了用一种新的处理器点亮LED。


下面实验一个四个灯的流水灯实验,这四个灯接GPF4-GPF7

//********************************************************************
void Main(void)
{     
    int i;
    ……硬件初始化……

LED();
while(1);

}

void  LED(void)
{
int i;
Uart_Printf("nIO 流水灯 实验n"); 
rGPFCON = rGPFCON & ~(0xff<<8) | 1<<8 | 1<<10 | 1<<12 | 1<<14 ;//设置GPF4、5、6、7为输出功能
rGPFDAT &= ~ ( 1<<4 | 1<<5 | 1<<6 | 1<<7 ) ;//GPF4电平反转
while(1)
{ for(i=0; i<20000000; i++);  //延时
  rGPFDAT = rGPFDAT ^ 1<<4 ;//GPF4电平反转
  
  for(i=0; i<20000000; i++);  //延时
  rGPFDAT = rGPFDAT ^ 1<<5 ;//GPF5电平反转
  
  for(i=0; i<20000000; i++);  //延时
  rGPFDAT = rGPFDAT ^ 1<<6 ;//GPF6电平反转
  
  for(i=0; i<20000000; i++);  //延时
  rGPFDAT = rGPFDAT ^ 1<<7 ;//GPF7电平反转
}
}

//*******************************************************************

运行:四个灯轮流亮


关键字:2440  裸机编程  通用I  O口 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479391.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:2440裸机编程之四 外部中断
下一篇:2440裸机编程之十一 GPRS

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

S3C2440 启动代码分析
启动代码是系统上电或复位以后运行的第一段代码,它的作用是在用户程序运行之前对系统硬件及软件运行环境进行必要的初始化并在最后使程序跳转到用户程序,它直接面对ARM 处理器内核及硬件控制器进行编程,所执行的操作与具体的目标系统紧密相关。S3C2440 支持两种方式的启动:Nor Flash 启动和Nand Flash 启动。Nor Flash 和Nand Flash 都是非易失性存储器,Nor Flash 的特点是芯片内执行,程序可以直接在其中运行,而不必将程序读取到RAM 中运行。Nor Flash 虽然具有这个优点,但是它的性价比远低于Nand Flash,因而很多系统采用Nand Flash 启动。Nand Flash 的特点是
发表于 2019-11-14
TQ2440开发板 Linux第一个驱动--点灯
我用的是TQ2440开发板,这个程序是参考韦东山的.4盏LED灯以下是驱动程序#include <linux/module.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/init.h>#include <linux/delay.h>#include <asm/uaccess.h>#include <asm/irq.h>#include <asm/io.h>#include <asm/arch/regs-gpio.h>#include <
发表于 2019-11-14
ARM9之2440之os-ii
  ,  10     10 , 11    11  , 10   10 , 10   10 , 10    10    rGPHCON = 0x2afaaa;    rGPHUP  = 0x7ff;    // The pull up function is disabled GPH[10:0]    // Added for S3C2440, DonGo    //PORT J GROUP   
发表于 2019-11-13
ARM9之2440时钟
其实ARM9并没有什么了不起的,和ARM7,6基本是一样的,裸奔起来并没有什么不同,个人感觉八错!倒是那万能的C语言却是真的! U32 val;U8 m, p, s;val = rMPLLCON;m = (val>>12)&0xff;p = (val>>4)&0x3f;s = val&3;//(m+8)*FIN*2 不要超出32位数!FCLK = ((m+8)*(FIN/100)*2)/((p+2)*(1<<s))*100;val = rCLKDIVN;m = (val>>1)&3;p = val&1;     &n
发表于 2019-11-13
ARM2440的启动模式
。好了,知道这两个指令的区别之后我们来看代码是如何实现的从SRAM到SDRAM的跳转,首先需要指出,2440的开发板有SRAM和SDRAM,SRAM是从地址0x00000000开始的4KB内存空间,SDRAM是从0x30000000开始的64M空间。无论用ADS编译还是用arm-linux-gcc编译都会将代码链接到0x30000000以后(也就是SDRAM中),ADS用户可以通过查看ADS的工程配置,其中有项配置是RO起始地址是0x30000000,linux用户在链接时需要用-T指定代码的其实地址为0x30000000。根据编译原理,在链接阶段程序中函数的地址就已经确定了,也就是说函数的实际地址都在0x30000000之后,而程序
发表于 2019-11-12
S3C2440裸奔之环境搭建
首先需要搭建一个可以编译代码的环境。从一开始我就不想用ADS(安装完ADS后会产生一个CodeWarrior for ARM Developer Suite的工具,可以编译和调试代码),虽然它是个很好的工具,但是它却隐藏了很多的细节,不利于新手去深度学习。所以我还是希望从Makefile入手,一步一步弄懂所有的细节。第一步:需要先搭建一个Linux环境,我是安装在虚拟机上面的。安装好Linux后,再从网上下载arm-linux-gcc,一般解压后之后就可以直接使用了,但需要先设置好环境参数。二步:编写代码,然后在Linux系统上进行编译。代码在后面会给出。第三步:需要把编译好的bin文件烧写到板子上。这个需要使用J-Link烧录器,
发表于 2019-11-11
S3C2440裸奔之环境搭建
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved