裸机系列——2440串口通信2程序代码

2011-04-04

关于一些串口通信的知识已经在上一篇文章中做了总结,这里主要讲程序的问题。

首先是直接通信,即不使用FIFO和中断的通信

代码

代码写的有点乱,开始没有主要风格。

下面的是没有FIFO的中断代码

最后的是使用FIFO的中断代码,一般发送没必要使用中断,我只使用了接受中断,中断处理也很简单

主要是熟悉串口通信原理。

代码如下

最后总结几句关于这次的串口通信程序,引用赵老师的。

1. 对于 s3c2440 来说,接收数据是被动的,发送数据是主动的,因此一般来说,接收数据用中断方式,发送数据用查询方式较好;

2. 在中断方式下,当接收到数据时,尽管可能该数据无用,但也一定要读取它,否则下次再接收数据时,不会再引起中断,因为接收数据缓存器被上次接收到的数据所霸占,只要没有读取它,它就永远在那里;

3. 由于 UART 中断涉及到 SUBSRCPND 寄存器,因此在中断处理程序中不仅要清 SRCPND 寄存器,还要清 SUBSRCPND 寄存器,它们的顺序一定是先清 SUBSRCPND 寄存器,再清 SRCPND 寄存器,否则就会引起一个中断两次响应的问题。因为是否中断由 SRCPND 寄存器决定,而 SRCPND 寄存器的相关状态位由 SUBSRCPND 寄存器决定,如果先清 SRCPND 寄存器,而还没有清 SUBSRCPND 寄存器的话, SRCPND 寄存器的相关位还是会被置 1 ,而一旦被置 1 ,则一定还会引起中断

4.使用FIFO时相应的状态寄存器应该使用UFSTAT FIFO状态寄存器来查看FIFO中的数据,不用FIFO是直接查看接收发送寄存器UTRSTAT。21:30:00


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值