⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rs485.c

📁 LM3S_uCOS2 for 485总线源代码
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzhou ZHIYUAN electronics Co.,LTD.
**                                     
**                                 http://www.embedtools.com
**
**--------------File Info-------------------------------------------------------------------------------
** File Name:          Main.c
** Last modified Date: 2006-11-18
** Last Version:       v1.0
** Description:        串口驱动主文件
** 
**------------------------------------------------------------------------------------------------------
** Created By:         Zhou Shaogang
** Created date:       2006-11-18
** Version:            v1.0
** Descriptions:
**
**------------------------------------------------------------------------------------------------------
** Modified by:        Kang qinhua
** Modified date:      2008.01.21
** Version:            v1.1
** Description:
**
********************************************************************************************************/

#include"includes.h"
#include"queue.h"
#include"Uart1.h"
#include"config.h"
uint32 UartTmr=0;

void Timer1Init(uint32 Tick, uint8 Prio)
{
  SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1);                         //使能定时器1系统外设
  TimerConfigure(TIMER1_BASE, TIMER_CFG_32_BIT_PER);                    //设置定时器1为32位
  TimerLoadSet(TIMER1_BASE, TIMER_A, Tick);                             //设置中断周期
  IntEnable(INT_TIMER1A);                                               //使能定时器1系统中断
  TimerIntEnable(TIMER1_BASE, TIMER_TIMA_TIMEOUT);                      //使能超时中断
  IntPrioritySet(INT_TIMER1A, Prio);                                    //设置中断优先级
  TimerEnable(TIMER1_BASE, TIMER_A);                                    //打开定时器1
}

void Timer1A_ISR(void)
{
  UartTmr++;                                                            //串口计时器加1
  TimerIntClear(TIMER1_BASE, TIMER_TIMA_TIMEOUT);                       //清除中断标志
}

int RS485(void)
{
  #define TRA_BUF_LEN   200
  uint32 i;
  uint8 TraBuf[TRA_BUF_LEN];
  uint8 rec[6];
  float REC[3];
  uint8 Buf[8]={0x01,0x03,0x00,0x00,0x00,0x03,0x05,0xcb};
  int mn=0,nm=0;
  
  for(i=0; i<0x000FFFF; i++);                                           //复位消颤
	  
                                                                        //系统时钟从6MHz晶振直接引入
  SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
              SYSCTL_XTAL_6MHZ);

  IntMasterEnable();                                                    //使能全局中断

  UART1Init(9600,1);                                                   //初始化串口0,波特率115200,中断优先级为1                         
  
   UART1Send(Buf, 8);
  while(1)
  { 
  mn++;
 
    if( QueueNData(UART1_Rec_Queue)>0 )
    {
       i=0;
       while( (i<TRA_BUF_LEN) && (QueueNData(UART1_Rec_Queue)>0) )
       {
          QueueRead(TraBuf+i, UART1_Rec_Queue);
          i++;
       }
      for(int j=0;j<=6;j++)
        rec[j]=TraBuf[j+3];
       
       REC[0]=rec[0]*256+rec[1];
       REC[0]=REC[0]/100;
       REC[1]=rec[2]*256+rec[3];
       REC[1]=(REC[1]-27315)/100;
       REC[2]=rec[4]*256+rec[5];
       REC[2]=(REC[2]-27315)/100;
    nm++;
    }
  }
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -