1754|0

2015

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

分享C6713的外设URAT实例代码 [复制链接]

C6713的外设URAT实例代码

部分关键函数:                                                   

[mw_shl_code=c,true]extern Uint32 UART_open(UartId uart)
{
        Uint32 ret_data;
        if(uart == 0)
        {        
                ret_data = 0x00000000;
                return ret_data;
        }
        if(uart ==1)
        {
                ret_data = 0x00040000;
                return  ret_data;
        }
        ret_data = 0xFFFFFFFF;
        return ret_data;
}
/********************************************************************************/

/*******************************************************************************\
\*UART_setup()        -UART setup.
\*Parameters:
\*                channel: Channel NO. UART A or UART B.
\*                UartBaud: UART baudrate.
\*                   UartWordLen: UART word length.
\*                 UartStopBits: UART stop bits.                                          
\*                   UartParity:        UART parity.                                            
\*                   UartFifoControl: UART FIFO control.                                       
\*                   UartLoopway: UART loop.
\********************************************************************************/
void UART_setup(Uint32 channel,
                                                        Uint16 UartBaud,
                                                        Uint8 UartWordLen,
                                                        Uint8 UartStopBits,
                                                        Uint8 UartParity,
                                                        Uint8 UartFifoControl,
                                                        Uint8 UartLoopway)
{
        Uint8 baudratel,baudrateh,uartdata;
        /* Set clock divisor as "1" */
        UART_rset(channel,UART_LCR,0xBF);
        UART_rset(channel,UART_EFR,0x10);
        UART_rset(channel,UART_LCR,0x00);
        UART_rset(channel,UART_MCR,0x00);        
        /* Set baudrate. */
        UART_rset(channel,UART_LCR,0x80);

        baudratel = (UartBaud & 0x00ff);
        UART_rset(channel,UART_DLL,baudratel);

        baudrateh = (UartBaud & 0xff00) >> 8;
        UART_rset(channel,UART_DLH,baudrateh);

        UART_rset(channel,UART_LCR,0x00);
        /* Set word length. */
        uartdata = UartWordLen + UartStopBits + UartParity;
        UART_rset(channel,UART_LCR,uartdata);
        /* Set FIFO parameters. */
        UART_rset(channel,UART_FCR,FIFO_rreset);
        UART_rset(channel,UART_FCR,UartFifoControl);

        UART_rset(channel,UART_MCR,UartLoopway);
        //UART_rset(channel,UART_IER,0x01);// added 2005.4.26
}
/********************************************************************************/

/********************************************************************************\
\*UART_receive_single()        -UART serial data receiving function.
\*Parameters:
\*                channel: Channel NO. UART A or UART B.
\*                rec_dada_add: Start Add for storing reveived data.
\*Return: 0,Finish Receiveng.
                  1,Data not ready.
                  0xFFFF,Port error.
                  2,Interrupt timeout.
\********************************************************************************/
Uint16 UART_receive_single(Uint32 channel)
{
        Uint16 revdata;
        revdata = UART_rget(channel,UART_RHR);
        return(revdata&0xFF);        
}
/********************************************************************************/

/********************************************************************************\
\*UART_send_single()        -Send a set of data.
\*Parameters:
\*                channel: Channel NO. UART A or UART B.
\*                send_data: To be sent data.
\*Return: No.
\********************************************************************************/
void UART_send_single(Uint32 channel,Uint8 send_data)
{
        Uint16 lsrdata;

        do
        {
        lsrdata = UART_rget(channel,UART_LSR);
        }
        while((lsrdata & 0x40) != 0x40);
        UART_rset(channel,UART_THR,send_data);        
}
/********************************************************************************/

/********************************************************************************\
\*UART_send()                -Send data function.
\*Parameters:
\*                channel: Channel NO. UART A or UART B.
\*                length:        Data buffer length.
\*                send_data_add: To be sent data start address.
\********************************************************************************/
void UART_send(Uint32 channel,Uint16 BaudRate,Uint16 length,Uint8 *send_data)
{
        Uint16 i;
        for(i=0;i         {
                UART_send_single(channel,*send_data++);
                DEC6713_wait((BaudRate/baud_38k4)*2026);
                //DEC6713_wait(8065);
        }
}
/********************************************************************************\
\* UART_IntSetup() - Setup UART interrupt. *\
\* Parameters:
\* Returns:
\********************************************************************************/
void UART_IntSetup(Uint32 channel,Uint8 UartIntn)
{
        UART_rget(channel,UART_LSR);
        UART_rset(channel,UART_IER,UartIntn);
        UART_rset(channel,UART_MCR,0x49);

}[/mw_shl_code]


点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表