第一范文网 - 专业文章范例文档资料分享平台

ARM9(S3C2440)之二IO口的理论知识及程序实例

来源:用户分享 时间:2025/5/25 13:19:19 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

二 ARM9(S3C2440)的IO口——理论知识及程序实例

转载自:骨Zi里德骄傲

概述

S3C2440A 包含了130 个多功能输入/输出口引脚并且它们为如下显示的八个端口:

– 端口A(GPA):25 位输出端口 – 端口B(GPB):11 位输入/输出端口 – 端口C(GPC):16 位输入/输出端口 – 端口D(GPD):16 位输入/输出端口 – 端口E(GPE):16 位输入/输出端口 – 端口F(GPF):8 位输入/输出端口 – 端口G(GPG):16 位输入/输出端口 – 端口H(GPH):9 位输入/输出端口 – 端口J(GPJ):13 位输入/输出端口

每个端口都可以简单的由软件配置为各种系统配置和设计要求。你必须在开始主程序前定义使用的每个引脚的功能。如果没有使用某个引脚的复用功能,这个引脚可以配置为I/O 口。

端口控制描述

端口配置寄存器(GPACON 至GPJCON) S3C2440A 中,大多数端口为复用引脚。因此要决定每个引脚选择哪项功能。PnCON(引脚控制寄存器)决定了每个引脚使用哪项功能。

如果在掉电模式中PE0 至PE7 用于唤醒信号,这些端口必须配置为输入模式。 端口数据寄存器(GPADAT 至GPJDAT)如果端口配置为输出端口,可以写入数据到PnDAT 的相应位。如果端口配置为输入端口,可以从PnDAT 的相应位读取数据。

端口上拉寄存器(GPBUP 至GPJUP)

端口上拉寄存器控制每个端口组的使能/禁止上拉电阻。当相应位为0 时使能引脚的上拉电阻。当为1 时禁止上拉电阻。 如果使能了上拉电阻,那么上拉电阻与引脚的功能设置无关(输入、输出、DATAn、EINTn 等等) 杂项控制寄存器

此寄存器控制睡眠模式,USB 引脚和CLKOUT 选择的数据端口上拉电阻。 外部中断控制寄存器

24 个外部中断由各种信号方式触发。EXTINT 寄存器为外部中断请求配置信号触发方式为低电平触发、高电平触发、下降沿触发、上升沿触发或双边沿触发。由于每个外部中断引脚包含一个数字滤波器,中断控制可以确认请求信号是否长于3 个时钟。

EINT[15:0]用于唤醒源

下面是结合具体的程序(用的是FL2440开发板): 一般步骤:

上拉寄存器和控制寄存器设置",

I/O口上拉寄存器和控制寄存器设置比较简单,首先确定I/O 口工作模式,如果

是工作在第二功能状态,则上拉电阻功能禁止,即 GPBUP~GPHUP 中相应位置 1;如果工作在基本输入 /输出状态,则上拉电阻功能允许,此时因上电或复位时 GPBUP~GPHUP 初值为 0,所以在程序中不用设置。 ",

I/O口数据寄存器中每一位输入 /输出功能大多由 I/O 口控制寄存器中两位控制,如 GPHDATA[0],即 GPH0 的

输入 /输出功能,由 GPHCON[1:0] 控制, GPHCON[1:0]=0 0,该位作输入;GPHCON[1:0]=0 1 ,该位作输出; GPHCON[1:0]=1 0 ,该位作nCTS0;GPHCON[1 :0]=1 1,系统保留没用。其他各口与此相同,编写 I/O 程序时一定注意 GPnCON 和GPnDATA 中位的对应关系。 ",

I/O口与外围设备连接一般要通过光电隔离或其他隔离器件,直接相连一定要确认负载不能超过 4个与非门。光电隔离一是可保护微处理器;二是可进行电平转换;三是可对某些信号进行分配,所以在一般情况下都要加。 #define GPBCON (*(volatile unsigned *)0x56000010) #define GPBDAT (*(volatile unsigned *)0x56000014) #define GPBUP (*(volatile unsigned *)0x56000018) #define uchar unsigned char #define uint unsigned int

void Delay(int x);

void Delay(int x) {

int k, j; while(x) {

for (k=0;k<=0xff;k++) for(j=0;j<=0xff;j++); x--; } }

int ledMain(void) {

GPBCON = 0x1dd7fc; // GPB5,GPB6,GPB8,GPB10设置为输出 GPBDAT = ((1<<5)|(1<<6)|(1<<8)|(1<<10)); //使LED全灭 GPBDAT&=0xffe; //关闭蜂鸣器

GPBUP = 0x00; //使能上拉寄存器,因为作为输出口所以要使能上拉

while (1) // 死循环 {

GPBDAT = ~(1<<5); //LED0亮 Delay(500);

GPBDAT = ~(1<<6); //LED1亮 Delay(500);

GPBDAT = ~(1<<8); //LED2亮 Delay(500);

GPBDAT = ~(1<<10); //LED3亮 Delay(500); }

return 0; }

ARM9(S3C2440)之二IO口的理论知识及程序实例.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c49zo69j4ib8jj329nac4_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top