| 
 
| 本人正在用ARM通过max485对台达变频器通讯,<br />大家看看程序有没有问题<br />/****************************************************************************<br />* 文件名:SENDSTR.C<br />* 功能:向串口发送数据。<br /><br />****************************************************************************/<br />#include  "config.h"<br /><br />#define  INT8U   unsigned char   <br />#define  UART_BPS    19200            /* 定义通讯波特率 */<br />INT8U  OUT_BUF2[17]={0x3a, 0x30,0x31, 0x30,0x36, 0x32,0x30,0x30,0x31, 0x30,0x30,0x31,0x32, 0x43,0x37, 0x0D,0x0A};//通讯协议<br />/****************************************************************************<br />* 名称:DelayNS()<br />* 功能:长软件延时<br />* 入口参数:dly        延时参数,值越大,延时越久<br />* 出口参数:无<br />****************************************************************************/<br />void  DelayNS(uint32  dly)<br />{  uint32  i;<br /><br />   for(; dly>0; dly--) <br />      for(i=0; i<5000; i++);<br />}<br /><br /><br />//#define  UART_BPS    19200            /* 定义通讯波特率 */<br />/****************************************************************************<br />* 名称:UART0_Ini()<br /><br />****************************************************************************/<br />void  UART1_Ini(void)<br />{  uint16 Fdiv;<br /><br />   U1LCR = 0x87;                    // DLAB = 1,可设置波特率<br />   Fdiv = (Fpclk / 16) / UART_BPS;  // 设置波特率<br />   U1DLM = Fdiv / 256;                            <br />   U1DLL = Fdiv % 256;                        <br />   U1LCR = 0x07;<br />}<br />                <br /><br />/****************************************************************************<br />* 名称:UART0_SendByte()<br />* 功能:向串口发送字节数据,并等待发送完毕。<br />* 入口参数:data        要发送的数据<br />* 出口参数:无<br />****************************************************************************/<br />void  UART1_SendByte(uint8 data)<br />{  <br />    U1THR = data;        // 发送数据<br />       while( (U1LSR&0x40)==0 );        // 等待数据发送完毕<br />}<br /><br /><br />/****************************************************************************<br />* 名称:UART0_SendStr()<br />* 功能:向串口发送一字符串<br />****************************************************************************/<br />void  UART1_SendStr()<br />{  <br />     INT8U  i;<br />    <br />     for(i=0;i<17;i++)<br />     {<br />          IO0SET|=0x10;<br />          UART1_SendByte(OUT_BUF2);<br />          IO0CLR|=0x10;<br />     }<br />    <br />}<br /><br /><br /><br />/****************************************************************************<br />* 名称:main()<br />* 功能:<br />****************************************************************************/<br />int  main(void)<br />{  <br />    PINSEL0 = 0x00050000;// 设置I/O连接到P0.4(收发控制IO)<br />       IO0DIR=0x10;                            <br />         UART1_Ini();<br /><br />       while(1)    <br />       { <br />          UART1_SendStr();<br />          DelayNS(10);<br />       }<br />       return(0);<br />}<br /><br /><br />不知道发送程序有没有问题,调试到<br />          U1THR = data;        // 发送数据<br />       while( (U1LSR&0x40)==0 );        // 等待数据发送完毕<br /><br />变频器就显示通讯错误。<br /> | 
 |