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

📄 uart.c

📁 瑞萨CAN通讯单片机程序
💻 C
📖 第 1 页 / 共 3 页
字号:
/*""FILE COMMENT""*****************************************************
 *	M32R C Programming		Rev. 1.00
 *		< Sample Program for Serial I/O (UART) >
 *
 *	Copyright (c) 2003 Renesas Technology Corporation
 *			   And Renesas Solutions Corporation
 *			   All Rights Reserved
 *********************************************************************/

/************************************************************************/
/*		Include file						*/
/************************************************************************/

#include		"..\inc\sfr32170_pragma.h"

/************************************************************************/
/*		Function prototype declaration				*/
/************************************************************************/

	void		SIO0_init( void);			/* Initialize SIO0 */
	void		SIO1_init( void);			/* Initialize SIO1 */
	void		SIO2_init( void);			/* Initialize SIO2 */
	void		SIO3_init( void);			/* Initialize SIO3 */
	void		SIO4_init( void);			/* Initialize SIO4 */
	void		SIO5_init( void);			/* Initialize SIO5 */
	void		SIO0_Tr( unsigned char *, unsigned int);	/* Transmit from SIO0 */
	void		SIO1_Tr( unsigned char *, unsigned int);	/* Transmit from SIO1 */
	void		SIO2_Tr( unsigned char *, unsigned int);	/* Transmit from SIO2 */
	void		SIO3_Tr( unsigned char *, unsigned int);	/* Transmit from SIO3 */
	void		SIO4_Tr( unsigned char *, unsigned int);	/* Transmit from SIO4 */
	void		SIO5_Tr( unsigned char *, unsigned int);	/* Transmit from SIO5 */
	void		SIO0_RcvInt(void);			/* SIO0 receive interrupt */
	void		SIO1_RcvInt(void);			/* SIO1 receive interrupt */
	void		SIO2_RcvInt(void);			/* SIO2 receive interrupt */
	void		SIO3_RcvInt(void);			/* SIO3 receive interrupt */
	void		SIO4_RcvInt(void);			/* SIO4 receive interrupt傒 */
	void		SIO5_RcvInt(void);			/* SIO5 receive interrupt */
	void		IntHand_SIO23(void);			/* SIO2,3 transmit/receive interrupt handler */
	void		IntHand_SIO45();			/* SIO4,5 transmit/receive interrupt handler */

/************************************************************************/
/*		Externally referenced variable				*/
/************************************************************************/

extern	unsigned char	RcvBuf0[];				/* Receive buffer */
extern	unsigned char	RcvBuf1[];				/* Receive buffer */
extern	unsigned char	RcvBuf2[];				/* Receive buffer */
extern	unsigned char	RcvBuf3[];				/* Receive buffer */
extern	unsigned char	RcvBuf4[];				/* Receive buffer */
extern	unsigned char	RcvBuf5[];				/* Receive buffer */
extern	unsigned char	rx_cnt0;				/* Pointer to receive buffer */
extern	unsigned char	rx_cnt1;				/* Pointer to receive buffer */
extern	unsigned char	rx_cnt2;				/* Pointer to receive buffer */
extern	unsigned char	rx_cnt3;				/* Pointer to receive buffer */
extern	unsigned char	rx_cnt4;				/* Pointer to receive buffer */
extern	unsigned char	rx_cnt5;				/* Pointer to receive buffer */

/************************************************************************/
/*		Define macro						*/
/************************************************************************/

/* Setting port operation mode */
							/* 0123 4567	*/
#define	P8MOD_SCI0	(unsigned char)0x30		/* 0011 0000B	P8 operation mode register	*/
							/* |||| |||+--- P87			*/
							/* |||| ||+---- P86			*/
							/* |||| |+----- P85			*/
							/* |||| +------ P84			*/
							/* |||+-------- RXD0			*/
							/* ||+--------- TXD0			*/
							/* ++---------- don't care		*/

							/* 0123 4567	*/
#define	P8MOD_SCI1	(unsigned char)0x06		/* 0000 0110B	P8 operation mode register	*/
							/* |||| |||+--- P87			*/
							/* |||| ||+---- RXD1			*/
							/* |||| |+----- TXD1			*/
							/* |||| +------ P84			*/
							/* |||+-------- P83			*/
							/* ||+--------- P82			*/
							/* ++---------- don't care		*/

							/* 0123 4567	*/
#define	P17MOD_SCI2	(unsigned char)0x0c		/* 0000 1100B	P17 operation mode register	*/
							/* |||| |||+--- P177			*/
							/* |||| ||+---- P176			*/
							/* |||| |+----- RXD2			*/
							/* |||| +------ TXD2			*/
							/* |||+-------- P173			*/
							/* ||+--------- P172			*/
							/* ++---------- don't care		*/

							/* 0123 4567	*/
#define	P17MOD_SCI3	(unsigned char)0x03		/* 0000 0011B	P17 operation mode register	*/
							/* |||| |||+--- RXD3			*/
							/* |||| ||+---- TXD3			*/
							/* |||| |+----- P175			*/
							/* |||| +------ P174			*/
							/* |||+-------- P173			*/
							/* ||+--------- P172			*/
							/* ++---------- don't care		*/

							/* 0123 4567	*/
#define	P20MOD_SCI4	(unsigned char)0xc0		/* 1100 0000B	P20 operation mode register	*/
							/* |||| ++++--- don't care		*/
							/* |||+-------- P203			*/
							/* ||+--------- P202			*/
							/* |+---------- RXD4			*/
							/* +----------- TXD4			*/

							/* 0123 4567	*/
#define	P20MOD_SCI5	(unsigned char)0x30		/* 0011 0000B	P20 operation mode register	*/
							/* |||| ++++--- don't care		*/
							/* |||+-------- RXD5			*/
							/* ||+--------- TXD5			*/
							/* |+---------- P201			*/
							/* +----------- P200			*/

/* Setting serial IO */

							/* 0123 4567	*/
#define	SnTCNT_INI	(unsigned char)0x00		/* 0000 0000B	SIOn transmit control register	*/
							/* |||| |||+--- Disable transmission	*/
							/* |||| +++---- don't care		*/
							/* ||++-------- f(BCLK)			*/
							/* ++---------- don't care		*/

							/* 0123 4567	*/
#define	SnMOD_INI	(unsigned char)0x20		/* 0010 0000B	SIOn mode register	*/
							/* |||| |||+--- Sleep function disabled	*/
							/* |||| ||+---- Parity inhibited	*/
							/* |||| |+----- don't care(odd)		*/
							/* |||| +------ 1 stop bit		*/
							/* |||+-------- Internal clock		*/
							/* +++--------- 8-bit UART		*/

/* Setting interrupt priority level */

#define	SioILEVEL	(unsigned char)1		/* Serial IO transmit/receive interrupt priority level	*/

/* Setting baud rate (Be sure to check actually set value when using) */

#define	XIN		10				/* 10MHz */

#define	BAUD_62_5	(unsigned char)(XIN * 2000000 / 16 / 62500 - 1)	/* 62.5Kbps */
#define	BAUD_15_6	(unsigned char)(XIN * 2000000 / 16 / 15600 - 1)	/* 15.6Kbps */
#define	BAUD_9615	(unsigned char)(XIN * 2000000 / 16 / 9615 - 1)	/* 9615bps */


/*""FUNC COMMENT""*******************************************************
 * Function name: SIO0_init()
 *-----------------------------------------------------------------------
 * Description	: Sets SIO0 for 8-bit UART
 * 		: - Reception by interrupt
 * 		: - Program transmission
 *-----------------------------------------------------------------------
 * Argument	: -
 *-----------------------------------------------------------------------
 * Returns	: -
 *-----------------------------------------------------------------------
 * Notes	: Port input function must be enabled
 * 		: Must be executed while interrupts are disabled
 *""FUNC COMMENT END""***************************************************/
void	SIO0_init( void)
{

/*** Setting transfer mode */

	S0RCNT = 0x00;						/* Disable reception */
	S0TCNT = SnTCNT_INI;					/* f(BCLK) and disable transmission */
	P8MOD |= P8MOD_SCI0;					/* Set P8 for SCIO mode */
	S0MOD = SnMOD_INI;					/* Set data format */
	S0BAUR = BAUD_62_5;					/* Set baud rate */

/*** Interrupt related settings ***/

	ISIO0TXCR = (unsigned char)7;				/* Set SIO0 transmit interrupt priority level */
	ISIO0RXCR = SioILEVEL;					/* Set SIO0 receive interrupt priority level */
	SI03SEL &= ~ISR0;					/* Select receive-finished interrupt */
	SI03MASK &= ~T0MASK;					/* Disable SIO0 transmit interrupt request */
	SI03MASK |= R0MASK;					/* Enable SIO0 receive interrupt request */

/*** Starting transmission/reception ***/

	S0TCNT |= TEN;						/* Enable transmission */
	S0RCNT |= REN;						/* Enable reception */
}

/*""FUNC COMMENT""*******************************************************
 * Function name: SIO1_init()
 *-----------------------------------------------------------------------
 * Description	: Sets SIO1 for 8-bit UART
 * 		: - Reception by interrupt
 * 		: - Program transmission
 *-----------------------------------------------------------------------
 * Argument	: -
 *-----------------------------------------------------------------------
 * Returns	: -
 *-----------------------------------------------------------------------
 * Notes	: Port input function must be enabled
 * 		: Must be executed while interrupts are disabled
 *""FUNC COMMENT END""***************************************************/
void	SIO1_init( void)
{

/*** Setting transfer mode */

	S1RCNT = 0x00;						/* Disable reception */
	S1TCNT = SnTCNT_INI;					/* f(BCLK) and disable transmission */
	P8MOD |= P8MOD_SCI1;					/* Set P8 for SCI1 mode */
	S1MOD = SnMOD_INI;					/* Set data format */
	S1BAUR = BAUD_62_5;					/* Set baud rate */

/*** Interrupt related settings ***/

	ISIO1TXCR = (unsigned char)7;				/* Set SIO1 transmit interrupt priority level */
	ISIO1RXCR = SioILEVEL;					/* Set SIO1 receive interrupt priority level */
	SI03SEL &= ~ISR1;					/* Select receive-finished interrupt */
	SI03MASK &= ~T1MASK;					/* Disable SIO1 transmit interrupt request */
	SI03MASK |= R1MASK;					/* Enable SIO1 receive interrupt request */

/*** Starting transmission/reception ***/

	S1TCNT |= TEN;						/* Enable transmission */
	S1RCNT |= REN;						/* Enable reception */
}

/*""FUNC COMMENT""*******************************************************
 * Function name: SIO2_init()
 *-----------------------------------------------------------------------
 * Description	: Sets SIO2 for 8-bit UART
 * 		: - Reception by interrupt
 * 		: - Program transmission
 *-----------------------------------------------------------------------
 * Argument	: -
 *-----------------------------------------------------------------------
 * Returns	: -
 *-----------------------------------------------------------------------
 * Notes	: Port input function must be enabled
 * 		: Must be executed while interrupts are disabled
 * 		: Interrupt priority levels are common to both SIO2,3 transmission and reception
 *""FUNC COMMENT END""***************************************************/
void	SIO2_init( void)
{

/*** Setting transfer mode */

	S2RCNT = 0x00;						/* Disable reception */
	S2TCNT = SnTCNT_INI;					/* f(BCLK) and disable transmission */
	P17MOD |= P17MOD_SCI2;					/* Set P17 for SCI2 mode */
	S2MOD = SnMOD_INI;					/* Set data format */
	S2BAUR = BAUD_62_5;					/* Set baud rate */

/*** Interrupt related settings ***/

	ISIO23CR = SioILEVEL;			/* Set SIO2,3 transmission and reception interrupt priority level */

⌨️ 快捷键说明

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