打印

小女子含泪跪求:有关44B0 串口中断问题!~~

[复制链接]
2875|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sophia719|  楼主 | 2007-8-8 10:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
soso| | 2007-8-8 10:54 | 只看该作者

通读S3C44B0的UART控制器这块。

   重点看找出并理解UART CONTROL REGISTER,UART FIFO CONTROL REGISTER两个寄存器。如果采用中断方式的话,就是设置FIFO的触发级,比如RX接收时设置FIFO的触发级为四个,如果只要接收到四个就产生中断。
   

使用特权

评论回复
板凳
wangkj| | 2007-8-8 13:39 | 只看该作者

是裸奔吧?

找51的参考,都差不多。应该有免费的开源的软件可借鉴

使用特权

评论回复
地板
sophia719|  楼主 | 2007-8-8 14:21 | 只看该作者

谢谢各位好心的大侠们~~~~~

各位的发言给了我很大的启迪,可是。。。。。偶的基础有点差,是个不折不扣的菜鸟,希望大家再说详细一点,大家尽情发言吧!~~~~~期待ing......

使用特权

评论回复
5
wangkj| | 2007-8-8 14:25 | 只看该作者

.....................................

使用特权

评论回复
6
孤独泪| | 2007-8-8 14:27 | 只看该作者

用不着含泪跪求吧

使用特权

评论回复
7
soso| | 2007-8-8 15:09 | 只看该作者

看看代码吗

下面的程序是串口初始化程序,采用的是查寻与等待来接收字符方式,就是把FIFO disable,把它改成中断方式。然后设置一下中断入口子程序的地址。满足条件时进入中断程序处理接收到的字符。这个可要自己做了。
void Uart_Init(int mclk,int baud)
{
    int i;
    if(mclk==0)
    mclk=MCLK;
    rUFCON0=0x0;     //FIFO disable
    rUFCON1=0x0;
    rUMCON0=0x0;
    rUMCON1=0x0;
//UART0
    rULCON0=0x3;     //Normal,No parity,1 stop,8 bit
//    rULCON0=0x7;     //Normal,No parity,2 stop,8 bit
    rUCON0=0x245;    //rx=edge,tx=level,disable timeout int.,enable rx error int.,normal,interrupt or polling
    rUBRDIV0=( (int)(mclk/16./baud + 0.5) -1 );
//UART1
//    rULCON1=0x7;     //Normal,No parity,2 stop,8 bit
    rULCON1=0x3;
    rUCON1=0x245;
    rUBRDIV1=( (int)(mclk/16./baud + 0.5) -1 );

    for(i=0;i<100;i++);
}

使用特权

评论回复
8
sophia719|  楼主 | 2007-8-8 18:20 | 只看该作者

高手啊!!!~~~~~

flyingzpy大侠,请问愿不愿私下继续点拨本菜鸟!?
  请留下你的联系方式,不甚感激啊!!!
  

使用特权

评论回复
9
wangkj| | 2007-8-8 18:36 | 只看该作者

小心恐龙

使用特权

评论回复
10
52lxs| | 2007-8-8 18:39 | 只看该作者

wangkj

有人好刻薄啊,呵呵

使用特权

评论回复
11
xwj| | 2007-8-8 19:14 | 只看该作者

恐龙不算可怕,比恐龙更可怕的是..

人妖

使用特权

评论回复
12
平常人| | 2007-8-8 22:10 | 只看该作者

技术论坛怎么变成科普学校了?

一句“菜鸟”变成了偷懒的借口,晕~~~~~

使用特权

评论回复
13
computer00| | 2007-8-9 00:01 | 只看该作者

多看几本书吧,慢慢来,别急

使用特权

评论回复
14
soso| | 2007-8-9 08:07 | 只看该作者

如果在北京,可以联系我。

    我邮箱是zhangpy@yeah.net。
    To Wangkj,我自己的公司已经完成迁址,在北师大南门的一个写字楼里租了一个小房间,这周我要去太原给人家培训,等我那里设施齐全了,网站发布了,找个时间,我们大家一起坐下聊聊。

使用特权

评论回复
15
wangkj| | 2007-8-9 08:27 | 只看该作者

我家在人大附近的万柳社区

有空多交流

使用特权

评论回复
16
soso| | 2007-8-9 09:08 | 只看该作者

收到

有空多多交流。

使用特权

评论回复
17
sophia719|  楼主 | 2007-8-9 09:13 | 只看该作者

谢谢大家!~~~

    可是本人是在南昌就读的一名学生,而且马上要开学了,无法赶去北京面谈啊。。。。。
    “平常人”的一席话说得我心里羞愧不已,大家的指点只能给我一个方向,关键的是还得自己多看几本书多花点时间,无论如何再次谢谢各位大侠的热心帮助,谢谢!!!~~~~~~~

使用特权

评论回复
18
cahwlx1982| | 2007-8-10 08:38 | 只看该作者

你在南昌?

 可是本人是在南昌就读的一名学生,而且马上要开学了,无法赶去北京面谈啊。。。。。
你在南昌啊?什么学校的啊?
你可以到网上找一下UART的源代码啊!然后你再根据自己所需求改一下,关键是看懂数据手册哦.我也做这个东西,不难的!不要着急,自己多调试以下就会学会的!

使用特权

评论回复
19
wangharry| | 2007-8-10 09:05 | 只看该作者

需要看44b0手册

需要看44b0手册
uint32 UART_Init(SERIAL_DEV *s) 
{
     uint32    rUARTBRD;

     /* UART interrupt off */
     UARTRxIntOff(s->com_port);
     UARTTxIntOff(s->com_port);

     /* Initialize UART transmit & receive Queue */
     TxQInit(s->com_port);
     RxQInit(s->com_port);

     /* default baud rate will be set. sysconf.h */
     rUARTBRD = U_BaudRate[BaudRateVal(s->baud_rate)].div;

     if(s->com_port) 
     {   
          /* Interrupt service routine setup */
        SysSetInterrupt(nUART1_TX_INT, Uart1TxLisr);
        SysSetInterrupt(nUART1_RX_ERR_INT, Uart1RxErrLisr);

        UARTLCON1 = s->data_bits|s->stop_bits|s->parity|s->clk_sel;
        UARTCONT1 = s->data_mode;
        UARTBRD1  = rUARTBRD;
     } 
     else 
     {
        /* Interrupt service routine setup */
        //SysSetInterrupt(nUART0_TX_INT, Uart0TxLisr);
        //SysSetInterrupt(nUART0_RX_ERR_INT, Uart0RxErrLisr);
        /* UART mode, default baud rate setup */
        UARTLCON0 = s->data_bits|s->stop_bits|s->parity|s->clk_sel;
        UARTCONT0 = s->data_mode;
        UARTBRD0  = rUARTBRD; 
     }

     //UARTRxIntOn(s->com_port);
     //UARTTxIntOn(s->com_port);

     return(SUCCESS);
}

使用特权

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

本版积分规则

2

主题

6

帖子

1

粉丝