S3C2440A_IOPORT_REG 中每个字段的含义是什么?

kaios1 2008-11-27 01:40:13

typedef struct {
UINT32 GPACON; // Port A - offset 0
UINT32 GPADAT; // Data
UINT32 PAD1[2];

UINT32 GPBCON; // Port B - offset 0x10
UINT32 GPBDAT; // Data
UINT32 GPBUP; // Pull-up disable
UINT32 PAD2;

UINT32 GPCCON; // Port C - offset 0x20
UINT32 GPCDAT; // Data
UINT32 GPCUP; // Pull-up disable
UINT32 PAD3;

UINT32 GPDCON; // Port D - offset 0x30
UINT32 GPDDAT; // Data
UINT32 GPDUP; // Pull-up disable
UINT32 PAD4;

UINT32 GPECON; // Port E - offset 0x40
UINT32 GPEDAT; // Data
UINT32 GPEUP; // Pull-up disable
UINT32 PAD5;

UINT32 GPFCON; // Port F - offset 0x50
UINT32 GPFDAT;
UINT32 GPFUP;
UINT32 PAD6;

UINT32 GPGCON; // Port G - offset 0x60
UINT32 GPGDAT;
UINT32 GPGUP;
UINT32 PAD7;

UINT32 GPHCON; // Port H - offset 0x70
UINT32 GPHDAT;
UINT32 GPHUP;
UINT32 PAD8;

UINT32 MISCCR; // misc control reg - offset 0x80
UINT32 DCLKCON; // DCLK0/1 control reg

UINT32 EXTINT0; // external interrupt control reg 0
UINT32 EXTINT1; // external interrupt control reg 1
UINT32 EXTINT2; // external interrupt control reg 2

UINT32 EINTFLT0; // reserved
UINT32 EINTFLT1; // reserved
UINT32 EINTFLT2; // external interrupt filter reg 2
UINT32 EINTFLT3; // external interrupt filter reg 3

UINT32 EINTMASK; // external interrupt mask reg
UINT32 EINTPEND; // external interrupt pending reg

UINT32 GSTATUS0; // external pin status
UINT32 GSTATUS1; // chip ID
UINT32 GSTATUS2; // reset status
UINT32 GSTATUS3; // inform register
UINT32 GSTATUS4; // inform register

UINT32 FLTOUT; // C0 - added by simon
UINT32 DSC0;
UINT32 DSC1;
UINT32 MSLCON;

UINT32 GPJCON; // D0
UINT32 GPJDAT;
UINT32 GPJUP;
UINT32 PDA9;

} S3C2440A_IOPORT_REG, *PS3C2440A_IOPORT_REG;

//------------------------------------------------------------------------------


比如初始化调试串口的时候有两句:

CLRREG32(&pIOPortReg->GPHCON, (3 << 8)|(3 << 10));
SETREG32(&pIOPortReg->GPHCON, (2 << 8)|(2 << 10));


在这里GPHCON这个32位的字段每一位是个什么意思?这样设置又是什么意思?
...全文
207 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaios1 2008-11-27
  • 打赏
  • 举报
回复
恩,是这么个情况
gooogleman 2008-11-27
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kaios1 的回复:]
在S3C2440的datasheet上找到详细的定义了
结贴
[/Quote]

哈哈,2440的手册过于简明,有时候很久才能找到答案。
kaios1 2008-11-27
  • 打赏
  • 举报
回复
在S3C2440的datasheet上找到详细的定义了
结贴
kaios1 2008-11-27
  • 打赏
  • 举报
回复
我知道这是位操作,也看了CLRREG32这个宏的定义,
我是想明白结构里面GPHCON和它所操作的端口是怎么对于的,
为什么给这几个位赋值就可以对串口进行初始化?

就是我想明白GPHCON这个32位的变量怎么对串口进行设置的
gooogleman 2008-11-27
  • 打赏
  • 举报
回复
你只要仔细看程序你就会发现,这样写的巧妙。
——结构体的存储方式和2440的寄存器地址紧密联系,紧密合作。
gooogleman 2008-11-27
  • 打赏
  • 举报
回复
C/C++ code
CLRREG32(&pIOPortReg->GPHCON, (3 << 8)|(3 << 10));
SETREG32(&pIOPortReg->GPHCON, (2 << 8)|(2 << 10));




在这里GPHCON这个32位的字段每一位是个什么意思?这样设置又是什么意思?
-------------------C语言的位操作啊。
看来你要好好看一下C语言才行。你可以直接赋值,但是这样不够清晰,使用了位操作很明显的知道对寄存器的哪位做了操作。

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧