📄 rs485.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 + -