📄 freescale
字号:
/** ###################################################################
** THIS COMPONENT MODULE IS GENERATED BY THE TOOL. DO NOT MODIFY IT.
** Filename : Uart.C
** Project : RS_485
** Processor : MC9S08JM60CLHE
** Component : AsynchroSerial
** Version : Component 02.472, Driver 01.30, CPU db: 3.00.046
** Compiler : CodeWarrior HCS08 C Compiler
** Date/Time : 2010-1-14, 21:35
** Abstract :
** This bean "AsynchroSerial" implements an asynchronous serial
** communication. The bean supports different settings of
** parity, word width, stop-bit and communication speed,
** user can select interrupt or polling handler.
** Communication speed can be changed also in runtime.
** The bean requires one on-chip asynchronous serial channel.
** Settings :
** Serial channel : SCI1
**
** Protocol
** Init baud rate : 19200baud
** Width : 8 bits
** Stop bits : 1
** Parity : none
** Breaks : Disabled
** Input buffer size : 0
** Output buffer size : 0
**
** Registers
** Input buffer : SCI1D [$003F]
** Output buffer : SCI1D [$003F]
** Control register : SCI1C1 [$003A]
** Mode register : SCI1C2 [$003B]
** Baud setting reg. : SCI1BD [$0038]
** Special register : SCI1S1 [$003C]
**
**
**
** Used pins:
** ----------------------------------------------------------
** Function | On package | Name
** ----------------------------------------------------------
** Input | 14 | PTE1_RxD1
** Output | 13 | PTE0_TxD1
** ----------------------------------------------------------
**
**
**
** Contents :
** RecvChar - byte Uart_RecvChar(Uart_TComData *Chr);
** SendChar - byte Uart_SendChar(Uart_TComData Chr);
** GetCharsInRxBuf - word Uart_GetCharsInRxBuf(void);
** GetCharsInTxBuf - word Uart_GetCharsInTxBuf(void);
**
** Copyright : 1997 - 2009 Freescale Semiconductor, Inc. All Rights Reserved.
**
** http : www.freescale.com
** mail : support@freescale.com
** ###################################################################*/
/* MODULE Uart. */
#pragma MESSAGE DISABLE C4002 /* WARNING C4002: Result not used is ignored */
#include "Uart.h"
/*
** ===================================================================
** Method : Uart_RecvChar (component AsynchroSerial)
**
** Description :
** If any data is received, this method returns one
** character, otherwise it returns an error code (it does
** not wait for data). This method is enabled only if the
** receiver property is enabled.
** [Note:] Because the preferred method to handle error and
** break exception in the interrupt mode is to use events
** <OnError> and <OnBreak> the return value ERR_RXEMPTY has
** higher priority than other error codes. As a consequence
** the information about an exception in interrupt mode is
** returned only if there is a valid character ready to be
** read.
** Parameters :
** NAME - DESCRIPTION
** * Chr - Pointer to a received character
** Returns :
** --- - Error code, possible codes:
** ERR_OK - OK
** ERR_SPEED - This device does not work in
** the active speed mode
** ERR_RXEMPTY - No data in receiver
** ERR_BREAK - Break character is detected
** (only when the <Interrupt service>
** property is disabled and the <Break
** signal> property is enabled)
** ERR_COMMON - common error occurred (the
** <GetError> method can be used for error
** specification)
** ===================================================================
*/
byte Uart_RecvChar(Uart_TComData *Chr)
{
byte Result = ERR_OK; /* Return error code */
byte StatReg = SCI1S1; /* Read status register */
if (StatReg & (SCI1S1_OR_MASK|SCI1S1_NF_MASK|SCI1S1_FE_MASK|SCI1S1_PF_MASK)) { /* Is any error set? */
Result = ERR_COMMON; /* If yes then set common error value */
} else if (!(StatReg & SCI1S1_RDRF_MASK)) { /* Is the reciver empty and no error is set? */
return ERR_RXEMPTY; /* If yes then error */
} else { /* Intentionally left empty due to compatibility with MISRA rule 60*/
}
*Chr = SCI1D; /* Read data from the receiver */
return Result; /* Return error code */
}
/*
** ===================================================================
** Method : Uart_SendChar (component AsynchroSerial)
**
** Description :
** Sends one character to the channel. If the bean is
** temporarily disabled (Disable method) SendChar method
** only stores data into an output buffer. In case of a zero
** output buffer size, only one character can be stored.
** Enabling the bean (Enable method) starts the transmission
** of the stored data. This method is available only if the
** transmitter property is enabled.
** Parameters :
** NAME - DESCRIPTION
** Chr - Character to send
** Returns :
** --- - Error code, possible codes:
** ERR_OK - OK
** ERR_SPEED - This device does not work in
** the active speed mode
** ERR_TXFULL - Transmitter is full
** ===================================================================
*/
byte Uart_SendChar(Uart_TComData Chr)
{
if (!SCI1S1_TDRE) { /* Is the transmitter empty? */
return ERR_TXFULL; /* If no then error */
}
SCI1D = (byte)Chr; /* Store char to the transmitter register */
return ERR_OK; /* OK */
}
/*
** ===================================================================
** Method : Uart_GetCharsInRxBuf (component AsynchroSerial)
**
** Description :
** Returns the number of characters in the input buffer.
** This method is available only if the receiver property is
** enabled.
** Parameters : None
** Returns :
** --- - The number of characters in the input
** buffer.
** ===================================================================
*/
/*
word Uart_GetCharsInRxBuf(void)
** This method is implemented as a macro. See header module. **
*/
/*
** ===================================================================
** Method : Uart_GetCharsInTxBuf (component AsynchroSerial)
**
** Description :
** Returns the number of characters in the output buffer.
** This method is available only if the transmitter property
** is enabled.
** Parameters : None
** Returns :
** --- - The number of characters in the output
** buffer.
** ===================================================================
*/
/*
word Uart_GetCharsInTxBuf(void)
** This method is implemented as a macro. See header module. **
*/
/*
** ===================================================================
** Method : Uart_Init (component AsynchroSerial)
**
** Description :
** Initializes the associated peripheral(s) and the bean internal
** variables. The method is called automatically as a part of the
** application initialization code.
** This method is internal. It is used by Processor Expert only.
** ===================================================================
*/
void Uart_Init(void)
{
/* SCI1C1: LOOPS=0,SCISWAI=0,RSRC=0,M=0,WAKE=0,ILT=0,PE=0,PT=0 */
setReg8(SCI1C1, 0x00); /* Configure the SCI */
/* SCI1C3: R8=0,T8=0,TXDIR=0,TXINV=0,ORIE=0,NEIE=0,FEIE=0,PEIE=0 */
setReg8(SCI1C3, 0x00); /* Disable error interrupts */
/* SCI1S2: LBKDIF=0,RXEDGIF=0,??=0,RXINV=0,RWUID=0,BRK13=0,LBKDE=0,RAF=0 */
setReg8(SCI1S2, 0x00);
/* SCI1C2: TIE=0,TCIE=0,RIE=0,ILIE=0,TE=0,RE=0,RWU=0,SBK=0 */
setReg8(SCI1C2, 0x00); /* Disable all interrupts */
SCI1BDH = 0x00; /* Set high divisor register (enable device) */
SCI1BDL = 0x4E; /* Set low divisor register (enable device) */
SCI1C2_TE = 0x01; /* Enable transmitter */
SCI1C2_RE = 0x01; /* Enable receiver */
}
/* END Uart. */
/*
** ###################################################################
**
** This file was created by Processor Expert 3.07 [04.34]
** for the Freescale HCS08 series of microcontrollers.
**
** ###################################################################
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -