ARM9(S3C2440)的IO口--LED流水灯
– 端口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 位输入/输出端口
IO口控制寄存器
端口配置寄存器(GPACON 至GPJCON)
定了每个引脚使用哪项功能。
端口数据寄存器(GPADAT 至GPJDAT)
应位读取数据。
端口上拉寄存器(GPBUP 至GPJUP)
杂项控制寄存器
外部中断控制寄存器
步骤:
1.IO口初始化,设置GPBCON,GPBUP寄存器。
在这里PB口的GPB5-PGB8作为通用IO口使用,实现输出功能,所以GPBCON的GPB5-PGB8位应分别都为01,即GPBCON[17:10] 为 01010101;GPBUP初始状态全为0,即使能上拉电阻功能,可不用设置,此处进行了设置。
I/O口与外围设备连接一般要通过光电隔离或其他隔离器件,直接相连一定要确认负载不能超过 4个与非门。光电隔离一是可保护微处理器;二是可进行电平转换;三是可对某些信号进行分配,所以在一般情况下都要加。
2.控制思路比较简单,让PB口的5-8位循环变为低电平(其他时间均为高电平),即可实现流水灯,在两次电平变换中间加入延时。
3.程序
#define rGPBCON
#define rGPBDAT
#define rGPBUP
#define
#define
#define
#define
#define
#define
#define
#define
void Delay(void)
{
}
int Main()
{
}
4.程序说明,程序中对寄存器的设置采用了#define LED1_ON (rGPBDAT &=~(1<5)) 这种方法,相比直接赋值的方法,这种表示方法比较容易观察出是寄存器的哪一位发生了变化,并且保证除了需要改变的位发生变化之外,其他位保持不变!
ARM9S3C2440IO口LED流水 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)