历史上的今天
今天是:2024年11月08日(星期五)
2019年11月08日 | 2440裸机编程之三 通用I/O口
2019-11-08 来源:51hei
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裸机编程之四 外部中断
下一篇:2440裸机编程之十一 GPRS
史海拾趣
|
请问下有人用FLASH做过NAND系列的FLASH驱动没呢?很想问个问题~谢谢~ 最近在用一个XILINX的FPGA,用Verilog来写,要做一个nand FLASH的驱动,就是读写的控制~ 我刚学不久,所以从读ID开始做起,但是现在读ID总是读不出来,用chipscope抓了数据看都是0,我觉得时序应该没问题啊~ 我看datasheet,在读ID时也要对RB这个 ...… 查看全部问答> |
|
请教: 是这样的,直接电机的一条线接 VCC (通过改变电流的大小能改变输出力的大小) 假设电机接在 20V 的电压上 现在用 PWM 来改变电流 PWM 由单片机产生 问题1: 我要怎么接线 才能使通过单片机控制电流大小? 2: PWM 到底是控制电流大 ...… 查看全部问答> |
|
在Win CE 5.0下,首次通过局域网访问另外一台电脑的时候会弹出一个对话框,要求输入对方的用户名、密码和域名。像下图所示的: 我想知道的是,有没有这样一个函数,提供了这几个参数的接口,以便我在写程序时就可以把用户名、密码写进去,而不需 ...… 查看全部问答> |
|
学了一段时间单片机,主要是AT89C52 其中遇到了关于AT89C52内部ram和sfr是不是物理相同的部分?或者说地址为80H 到0FFH之间的特殊功能寄存器 和 RAM 中 80H到0FFH中的堆栈或数据存贮器是否相同? 一直没有搞 ...… 查看全部问答> |
|
STM32 TIM1(SPWM) 、TIM2(捕获)、TIM3(PWM)输出异常 小弟最近刚接触STM32 正在学习它的高级定时器跟通用定时器的功能 在网上看了些帖子又小研究了一下手册后,小弟把出SPWM(TIM1)、定时器捕获(TIM2)及出普通PWM(TIM3)的程序做了一下整合 整合前小弟已对他们单独做过测 ...… 查看全部问答> |
|
活动规则: https://bbs.eeworld.com.cn/viewthread.php?tid=324257&page=1&extra=page%3D1… 查看全部问答> |
|
***************************************************************************************************/ #include \"io430.h\" #include //引用本征函数需包含本头文件 #include \"nbc430.h\" #define uchar unsigned ...… 查看全部问答> |




