打印
[ZLG-ARM]

请教UART0的问题

[复制链接]
1227|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zzyszl|  楼主 | 2007-10-24 23:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
 当UART0发送数据时,有下面语句:

                .......
                
                LDR  R0,=U0THR
                LDR  R1,=0X12             
                STR  R1,[R0]
                .......
                

当数据发送完以后没有经过其他任何操作,U0THR 和 U0TSR 中的值分别是什么?

相关帖子

沙发
zlgarm| | 2007-10-25 10:49 | 只看该作者

U0THR为空,U0TSR为0x12

如题~~~

使用特权

评论回复
板凳
ppz2005| | 2007-10-25 10:58 | 只看该作者

与之前的发送有关

如果这些指令执行之前刚刚发送过,就是刚才发送的数据还没发完,那么U0TSR中就是刚刚先发的那个数,U0THR中就是新发的数据0x12.经过一段时间后,U0THR变为空。如果之前未发任何数据,则自然,U0THR就是空的,这个写入的数据到U0TSR中去了。

使用特权

评论回复
地板
zzyszl|  楼主 | 2007-10-25 20:16 | 只看该作者

请教学习方法!

明白!谢谢!

我是初学 ARM7 ,也在用ARM,但是总感觉浮在上面!

现在我自己现在想法是搞精通一款ARM芯片,包括最底层的硬件怎么动作,这样再看其他芯片只要稍微看看不同点就可以了,以后在学操作系统等等其他外围东西,不知道这种思路是否可行!我觉的“zlgarm”、“ppz2005”是俩位高人, 能否给点意见?包括按照什么样的步骤学,什么资料比较适合?等等,我想有高人指点可能少走弯路,能达到事半功倍的效果!

我的邮件地址是:zhengliangshen@163.com

如有什么好的文档请帮忙发给我!谢了!以后还有什么不懂之处还要请教各位!

使用特权

评论回复
5
zzyszl|  楼主 | 2007-10-25 21:48 | 只看该作者

还有一问题不明白!

周立功著《ARM 微控制器基础与实战》第二版中有:

P 135:U0LSR的TEMT位解释:
                            0:U0THR和/或U0TSR包含有效数据.
                            1:U0THR和U0TSR空。

当U0THR和U0TSR 都为空时,TEMT置位,当U0TSR或U0THR包含有效数据时,TEMT清零。

P138:有这么一段程序:
            ……….
            SENDBYTE
                    LDR    R0,=U0THR
                    STR        R1,[R0]
                    LDR    R0,=U0LSR
            SENDBYTE_L1
                    LDR    R1,[R0]
                    ANDS    R1,R1,#0X40     ;//U0LSR.6<----->TEMT
                    BEQ    SENDBYTE_L1    ;// TEMT位为1时跳到SENDBYTE_L1
                    MOV    PC,LR
            ……….
有上面程序和两位解释我有些不明白的地方:
TEMT位为1时跳到SENDBYTE_L1,但是按照上面两位的解释,其实U0TSR和U0THR中永远是有有效数据的。这样只要有过一次发送,TEMT就永远为0,那么上面的程序就不对了,但是程序运行确实正确。
后来我又想是不是问题出在“有效”上,如果数据发送完了就叫“无效”的话,那么TEMT在发送时为0,而发送完了为1,这又与程序意思相反。我理解一下发送过程,是不是下面意思:

芯片复位――>第1次发送――>。。。。。。――>第N开始发送――>第N次发送
U0THR=0           U0THR=0                   ……..                        U0THR=N            U0THR=0
U0TSR=0           U0TSR=1                  ……..                        U0TSR=N-1       U0TSR=N
TEMT=1            TEMT=0                      ……..                        TEMT=0               TEMT=0

不知到我的分析哪出了问题?请指点指点!

使用特权

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

本版积分规则

16

主题

37

帖子

1

粉丝