打印

文档有些看不明白,请高手指教

[复制链接]
1363|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huzixian|  楼主 | 2010-4-28 16:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在LPC2131_2132_2138-user_cn.pdf文档中(英文版也一样),管脚值寄存器IOPIN 前面说只读,后面则说可写,不知道应相信哪一条?另外,列出的语句中,&&(||)是逻辑与(或),而要达到目的应该用按位与(或)吧,有请高手指教.

表55 GPIO 寄存器映射
通用名称                               描述                                        访问                             复位值          PORT0

IOPIN GPIO 管脚值寄存器。不管方向和模式如何设            只读                                  NA         0xE0028000
                                            定,管脚的当前状态都
                                           可从该寄存器中读出。

IO1PIN下面的代码所实现的功能是:P0.[31:16]和P0.[7:0]输出保持不变的同时将P0.[15:8]设置成0xA5,不管
P0.[15:8]之前是何值:
IO0PIN=(IO0PIN && # 0xFFFF00FF)‖# 0x0000A500
写IOSET/IOCLR 和IOPIN
写IOSET/IOCLR 寄存器很容易使所选输出管脚的状态同时变为高/低电平。只有IOSET/IOCLR 中被写
入1 的位对应的管脚才能设置为高/低电平,写入0 的位对应的管脚的状态不发生改变。但是,仅通过写
IOSET 或IOCLR 寄存器是不可能使一个GPIO 口同时输出包含0 和1 的任意二进制数。
写IOPIN 寄存器使能并行GPIO 输出所需的瞬时值。写入IOPIN 寄存器的二进制数据将影响整个并行
口的所有输出配置管脚:IOPIN 的位为0 时使管脚输出低电平,IOPIN 的位为1 时使管脚输出高电平。为
了改变一组端口管脚的输出,必须将IOPIN 读出的内容和一个值相与(该值使要改变的管脚对应的位用0
来屏蔽,其它管脚对应的位为1)。最后,再将相与的结果和期望得到的管脚输出对应的二进制数相或并将
相或的结果存回IOPIN 寄存器。上面例2 的等式中实现的功能是P0.15~P0.8 输出0xA5,P0 口的其它位的
状态保持不变。

相关帖子

沙发
北京户口| | 2010-4-28 16:45 | 只看该作者
可以写,但是容易出错,所以推荐用户不用些IOPIN

使用特权

评论回复
板凳
米其林r| | 2010-4-28 16:46 | 只看该作者
如果不写IOPIN,有些功能不能实现.如"实现P0.15~P0.8 输出0xA5,P0 口的其它位的状态保持不变"。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

262

主题

1534

帖子

2

粉丝