[原创] 5.【学习LPC1768库函数】之485实验

cxmdz   2019-7-31 09:19 楼主

485(一般称作RS485、EIA-485)是属于OSI模型物理层的电器特性,规定位2线,半双工,多点通信的标准。它的电气特性和RS232不一样。RS485的电气特性:以两个线间的电压差为+(2~6)V表示逻辑“1”;以两线间的电压差为-(2~6)表示逻辑“0”。接口信号电平比RS232降低了,不易损坏接口电路芯片,而且于TTl电平兼容,可以方便与TTLD电路连接。

 

151703ez51e5u6q1uea7ig.png

/************************************************************************************************
** 函数名: void UARTInit( uint32_t PortNum, uint32_t baudrate)
** 函数功能:串口初始化程序
** 输入参数:  UARTNum 选择串口号,baudrate串口波特率大小
** 输出参数 :无
** 返回值:无
*************************************************************************************************/
void UARTInit( uint32_t UARTNum, uint32_t baudrate)
{


  if ( UARTNum == 0 )
  {
                

                        Chip_IOCON_PinMux(LPC_IOCON, 0, 2, IOCON_MODE_INACT, IOCON_FUNC1);//设置P0.2为串口功能管脚
                        Chip_IOCON_PinMux(LPC_IOCON, 0, 3, IOCON_MODE_INACT, IOCON_FUNC1);        //设置P0.3为串口功能管脚
                        Chip_UART_Init(LPC_UART0);//初始化串口0
                        Chip_UART_SetBaud(LPC_UART0, baudrate);//设置波特率
                        Chip_UART_ConfigData(LPC_UART0, UART_LCR_WLEN8 | UART_LCR_SBS_1BIT | UART_LCR_PARITY_DIS);// 8 bits, 无校验, 1 个停止位 
                        Chip_UART_TXEnable(LPC_UART0);//使能发送

  }
  else if ( UARTNum == 2 )
  {
                 
                        Chip_IOCON_PinMux(LPC_IOCON, 0, 10, IOCON_MODE_INACT, IOCON_FUNC1);//设置P0.10为串口功能管脚
                        Chip_IOCON_PinMux(LPC_IOCON, 0, 11, IOCON_MODE_INACT, IOCON_FUNC1);                //设置P0.11为串口功能管脚        
                        Chip_UART_Init(LPC_UART2);//初始化串口2
                        Chip_UART_SetBaud(LPC_UART2, baudrate);//设置波特率
                        Chip_UART_ConfigData(LPC_UART2, UART_LCR_WLEN8 | UART_LCR_SBS_1BIT | UART_LCR_PARITY_DIS); // 8 bits, 无校验, 1 个停止位 
                        Chip_UART_TXEnable(LPC_UART2);//使能发送

  }
        
          else if ( UARTNum == 3 )
  {
                 
<span style="color: rgb(102, 102, 102); font-family: Monaco, Consolas, &quot;Lucida Console&quot;, &quot;Courier New&quot;, serif; font-size: 12px;">//第一步 设置P4.28 P4.29为串口功能</span>
                        Chip_IOCON_PinMux(LPC_IOCON, 4, 28, IOCON_MODE_INACT, IOCON_FUNC3);//设置P4.28为串口功能管脚
                        Chip_IOCON_PinMux(LPC_IOCON, 4, 29, IOCON_MODE_INACT, IOCON_FUNC3);                //设置P4.29为串口功能管脚        
/************************************************************************************************
** 函数名: int UART2_GetChar (void) 
** 函数功能:串口2接收字节数据
** 输入参数:无
** 输出参数 :无
** 返回值:一个字节数据
*************************************************************************************************/
int UART3_GetChar (void) 
{
//判断接收线是否有数据,没有数据,则等待。有数据,则读出
        while (!(Chip_UART_ReadLineStatus(LPC_UART3) & UART_LSR_RDR));
          return Chip_UART_ReadByte(LPC_UART3);        
}
SET_DIR(1);//设置发送
SET_DIR(0);//设置接收

【05】LPC1768_RS485实验.rar (249.2 KB)
(下载次数: 13, 2019-7-31 09:19 上传)


此内容由EEWORLD论坛网友cxmdz原创,如需转载或用于商业用途需征得作者同意并注明出处

回复评论 (1)

谢谢共享,学习了

点赞  2019-11-12 13:02
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复