打印
[ZLG-ARM]

串口0不能产生中断

[复制链接]
1408|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jxlxh|  楼主 | 2007-4-23 15:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题:
  U0IER寄存器不能初始化,不能赋值,我想产生发送中断,数据能发送,但不能产生中断,查看后发现U0IER始终是0,为什么?CPSR已设置好,在AXD中强行修改U0IER后,继续运行则能产生中断。
周工能否指教?

串口初始化程序如下:
void uart0_config(void)
{
    uint16 ui1;
    
    // baudrate
    uart0_baudrate = 9600;
    
    // 8/n/1,dlab=1
    U0LCR = 0x83;
    ui1 = Fpclk/(uart0_baudrate*16);
    U0DLL = ui1%256;
    U0DLM = ui1/256;
    // 0--> dlab
    U0LCR = 0x03;
    
    // fifo
    U0FCR = 0x81;
    
    // p0.0 set as txd,01-->pinsel0<1:0>
    // p0.1 set as rxd,01-->pinsel0<3:2>
    PINSEL0 |= 0x01;
    
    // interrupt vic
    // uart0 --> irq
    VICIntSelect = 0;
    // uart0 isr
    VICVectAddr0 = (uint32)uart0isr;
    // uart0 --> slot0
    VICVectCntl0 = 0x26;
    // enable uart0
    VICIntEnable = 0x40;
    
    // interrupt
    // THRE enable
    U0IER = 0x02;
    
    // enable uart0
    PCONP |= 0x08;
}

相关帖子

沙发
zlgARM| | 2007-4-23 21:08 | 只看该作者

jxlxh

你的DLAB没设置好。

使用特权

评论回复
板凳
jxlxh|  楼主 | 2007-4-24 07:52 | 只看该作者

DLAB在前面设置好了呀

DLAB在前面不是清零了吗?不会是要置1把?
U0LCR = 0x03;

使用特权

评论回复
地板
kernel99| | 2007-4-24 13:14 | 只看该作者

U0IER = 0x02的设置

个人认为:U0IER = 0x02不太合适.在<<深入浅出ARM7--LPC213X/4X>>这本书里的P168,如设置U0IER = 0x02,理解上是觉得使能THRE中断,该中断状态可以从U0LSR.5中读出. (个人认为)U0LSR.5(THRE)置1 就只代表 U0THR为空,并不代表UART T0的移位寄存器U0TSR也为空.所以就不能确定数据已经通过串行输出引脚TxD发送出了,所以不能产生有效的串口发送中断.

使用特权

评论回复
5
jxlxh|  楼主 | 2007-4-24 17:58 | 只看该作者

解决

通过试验发现,要先使能串口,然后再设置,则一切OK;
在使能串口前设置串口波特率,也出现不能设置现象,但有时候好像又可以设置,如我第一次设置UART0波特率为9600,就成功了,后来想该波特率的时候,就出现不能修改的情况,请ZLGARM予以解释!
ZLGARM前面的答复不能令人满意啊!

使用特权

评论回复
6
jxlxh|  楼主 | 2007-4-24 18:04 | 只看该作者

to:kernal99

首先谢谢你的回答!
数据手册中写的明白,U0IIR中的THRE中断标志在UART0 THR FIFO为空时就激活,它和TSR没有关系。

使用特权

评论回复
7
zlgARM| | 2007-4-24 20:54 | 只看该作者

jxlxh

您是自己摸索着写UART程序?请您找来例程对照,一看就明白了。把部件的寄存器和操作原理先搞清楚,才能写出正确的程序。
不能改波特率,肯定不是你的芯片的问题。同样的芯片我们都用得很好。你说你不能改波特率,很可能是你的使用方式不对的问题。这样的话,我就不知如何解释了。
还是建议您找来例程看一下。KEIL的UART例程不错,可去其网站上下载来看。
如果您对例程有看不懂,对UART的数据手册说明有看不懂的地方,可以提出来,我试着为您解答。

使用特权

评论回复
8
zlgARM| | 2007-4-24 21:23 | 只看该作者

jxlxh

您也可以参照一下我们的LPC2300 数据手册 UART 波特率初始化部分。

使用特权

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

本版积分规则

3

主题

7

帖子

0

粉丝