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

📄 dma_sio_rcv.c

📁 瑞萨CAN通讯单片机程序
💻 C
字号:
/*  FILE COMMENT   **************************************************** *	M32R C Programming		Rev. 1.00 *		 < Sample Program for Serial I/O (UART) DMAC Receive > * *	Copyright (c) 2003 Renesas Technology Corporation *			   And Renesas Solutions Corporation *			   All Rights Reserved **********************************************************************//************************************************************************//*		Include file						*//************************************************************************/#include		"..\inc\sfr32170_pragma.h"/************************************************************************//*		Definition of external reference			*//************************************************************************/extern	void		DisInt( void );				/* Interrupt disable function */extern	void		EnInt( void );				/* Interrupt enable function *//************************************************************************//*		Function prototype declaration				*//************************************************************************/	void		main(void);				/* Main function */	void		init_func(void);			/* Initial setup function */	void		port_init(void);			/* Initialize port */	void		dma_init(void);				/* Initialize DMA */	void		sio0rcv_init( void);			/* Initial setup serial I/O *//************************************************************************//*		Define macro						*//************************************************************************//* Setting serial IO */						/* 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	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 baud rate (Be sure to check actually set value when using) */#define	XIN		10			/* 10MHz */#define	BAUD_19200	(unsigned char)(XIN * 2000000 / 16 / 19200 - 1)	/* 19200bps *//* DMAC setting data */						/* 0123 4567	*/#define	DMA4_INIT	(unsigned char)0x2d	/* 0010 1101B	DMA4 channel control register		*/						/* |||| |||+---	Destination address incremented		*/						/* |||| ||+----	Source address fixed			*/						/* |||| |+-----	Transfer size of 8-bit			*/						/* |||| +------	Transfer enabled			*/						/* ||++--------	10: Start upon completion of serial I/O 0 reception */						/* |+----------	No transfer request			*/						/* +-----------	Normal mode				*//************************************************************************//*		Global variable					*//************************************************************************/	unsigned char	RcvBuf0[256];				/* Receive buffer *//*""FUNC COMMENT""******************************************************* * Function name : init_func() *----------------------------------------------------------------------- * Description	: Initialize ICU *----------------------------------------------------------------------- * Argument	: - *----------------------------------------------------------------------- * Returns	: - *----------------------------------------------------------------------- * Notes	: *""FUNC COMMENT END""***************************************************/void init_func(void){	port_init();						/* Initialize those related to port 	*/	dma_init();						/* Initialize DMA  			*/	sio0rcv_init();						/* Initial setup serial I/O 		*/}/*""FUNC COMMENT""******************************************************* * Function name :port_init() *----------------------------------------------------------------------- * Description	:Initialize port *----------------------------------------------------------------------- * Argument	: - *----------------------------------------------------------------------- * Returns	: - *----------------------------------------------------------------------- * Notes	: *""FUNC COMMENT END""***************************************************/void port_init(void){	PIEN = PIEN0;						/* Enable port input *//*** LED output port ***/	P11DATA = 0x00;						/* Output data (must be set prior to mode) */	P11DIR = 0xff; 						/* P110-P117 : Output mode */	P11MOD = 0x00; 						/* P110-P117 : Input/output port */}/*""FUNC COMMENT""******************************************************* * Function name : dma_init() *----------------------------------------------------------------------- * Description	: - Initialize DMAC *		:   DMA4: Transfer received data of the SIO0 receive  *		:   buffer to the internal RAM *----------------------------------------------------------------------- * Argument	: - *----------------------------------------------------------------------- * Returns	: - *----------------------------------------------------------------------- * Notes	: Restart is required if the transfers size is 256 bytes or more *""FUNC COMMENT END""***************************************************/void dma_init(void){/*** DMA4 initial setting ***/	DM04ITST = ~DMITST4;					/* Clear DMA4 interrupt request */	DM04ITMK |= DMITMK4;					/* Inhibit DMA4 interrupt */	DM4SA = (unsigned short)&S0RXB_L;			/* Source address -> SIO0 receive buffer */	DM4DA = (unsigned short)&RcvBuf0;			/* Destination address -> RAM buffer */	DM4TCT = 0xff;						/* Number of DMA4 transfer (256 times) */	DM4CNT = DMA4_INIT;					/* Start upon the completion of the serial I/O0 reception, enable transfer */}/*""FUNC COMMENT""******************************************************* * Function name : sio0rcv_init() *----------------------------------------------------------------------- * Description	: Set 8-bit UART reception for SIO0 *----------------------------------------------------------------------- * Argument	: - *----------------------------------------------------------------------- * Returns	: - *----------------------------------------------------------------------- * Notes	: Port input function must be enabled *		: No transmission setting has done *		: For M32R/E#1,2,3, PnMOD cannot be accessed for R/M/W *		: The function must be executed while interrupt is inhibited *""FUNC COMMENT END""***************************************************/void	sio0rcv_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_19200;					/* Set baud rate *//*** interrupt related settings ***/	ISIO0RXCR = (unsigned char)7;				/* Set SIO0 receive interrupt priority level */	SI03SEL &= ~ISR0;					/* Select receive-finished interrupt */	SI03MASK &= ~R0MASK;					/* Enable SIO0 receive interrupt request *//*** Starting reception ***/	S0RCNT |= REN;						/* Enable reception */}/*""FUNC COMMENT""******************************************************* * Function name : main() *----------------------------------------------------------------------- * Description	: Serial receive data is stored in RAM by DMA transfer *		: - Start DMA4 upon reception of serial I/O0 *		: - Receive data is stored in buffer by DMA *		: - Output DMA4's transfer counter  *		:   (number of receive bytes) to LED (PORT11) *----------------------------------------------------------------------- * Argument	: - *----------------------------------------------------------------------- * Returns	: - *----------------------------------------------------------------------- * Notes	: Interrupt is not actually used  *		: LED display is (255-number of receive bytes) *""FUNC COMMENT END""***************************************************/void main(void){/*** Initialize microcomputer ***/	DisInt();						/* Disable interrupt */	init_func();	EnInt();						/* Enable interrupt */	while(1) {		P11DATA = DM4TCT;	}}

⌨️ 快捷键说明

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