打印

请教STR912的UART FIFO的使用!

[复制链接]
2966|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yxmcu|  楼主 | 2007-6-19 16:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序中需要使用UART,初始化了UART,使用了UART的FIFO,且FIFO的深度设为1/2,发送和接收都使用中断,可是发送就是死活都不产生,请指点一下!如果不使用FIFO,即FIFO深度为1字节,那么发送、接收中断都正常。

附初始化程序

void UART0_Init(void)
{
    UART_InitTypeDef  UART_InitStructure;
    
    /* UART0 configuration -------------------------------------------------------*/
    /* UART0 configured as follow:
        - Word Length = 8 Bits
        - One Stop Bit
        - No parity
        - BaudRate = 9600 baud
        - Hardware flow control enabled (RTS and CTS signals)
        - Receive and transmit enabled
        - Receive and transmit FIFOs are enabled
        - Transmit and Receive FIFOs levels have 8 bytes depth
    */
    UART_InitStructure.UART_WordLength = UART_WordLength_8D;
    UART_InitStructure.UART_StopBits = UART_StopBits_1;
    UART_InitStructure.UART_Parity = UART_Parity_No ;
    UART_InitStructure.UART_BaudRate = 9600;
    UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_RTS_CTS;
    UART_InitStructure.UART_Mode = UART_Mode_Tx_Rx;
    UART_InitStructure.UART_FIFO = UART_FIFO_Enable;
    UART_InitStructure.UART_TxFIFOLevel = UART_FIFOLevel_1_8; /* FIFO size 16 bytes, FIFO level 8 bytes */
    UART_InitStructure.UART_RxFIFOLevel = UART_FIFOLevel_1_2; /* FIFO size 16 bytes, FIFO level 8 bytes */

    UART_DeInit(UART0);
    UART_Init(UART0, &UART_InitStructure);

    /*------------------------------------------------
    Setup UART0 Interrupt, UART0_ITLine = 16 
    ------------------------------------------------*/
    VIC1->VAiR[2] = (unsigned int)&UART0_irq;         
    VIC1->INTSR  &= ~(0x01 << (UART0_ITLine - 16));  
    VIC1->VCiR[2] =    0x20 | (UART0_ITLine - 16);    
    VIC1->INTER  |=  (0x01 << (UART0_ITLine - 16));   

    UART_ITConfig(UART0, UART_IT_Transmit,  ENABLE);  // 使能发送中断
    UART_ITConfig(UART0, UART_IT_Receive | UART_IT_ReceiveTimeOut,  ENABLE);

    /* Enable the UART0 */
    UART_Cmd(UART0, ENABLE);
}

沙发
stf| | 2007-6-26 11:01 | 只看该作者

一个例子

yxmcu你好

这个例子用FIFO。

STR9用中断收数据,在中断函数里面str9会再发送每一个字节。

Best Regards,
Stephane
相关链接:https://bbs.21ic.com/upfiles/img/20076/2007626105737470.zip

使用特权

评论回复
板凳
centimetre| | 2007-6-27 09:42 | 只看该作者

yxmcu问题你解决了没有?

我也碰到这个问题,用中断方式发送(fifo enable),不知如何处理
stf给的例子和用中断方式发送的方式不同

使用特权

评论回复
地板
centimetre| | 2007-6-27 10:39 | 只看该作者

912的串口FIFO异常变态,发送fifo只能设置1/8 full

不能设置为一个byte触发,而且触发中断时候必须是transition,而不是level

使用特权

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

本版积分规则

4

主题

8

帖子

1

粉丝