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

📄 main.c

📁 这是周立功LPC2200开发板的实验程序
💻 C
字号:
/****************************************Copyright (c)**************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2004-09-16
** Last Version:		1.0
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by:			Chenmingji
** Created date:		2004-09-16
** Version:				1.0
** Descriptions:		The original version
**
**------------------------------------------------------------------------------------------------------
** Modified by:			LinEnqiang
** Modified date:		2006-12-1
** Version:				
** Descriptions:		Test
**
********************************************************************************************************/
#include "config.h"
#include "LPC23xx.h"
#include"LPC2300CAN.h"

unsigned char data11[]={0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38};

/******************************************************************************************
**函数原型	:  	void	CANIntPrg(void)
**参数说明	:  	无
**返回值		:	无	
**说	明		:	CAN控制器中断处理函数
******************************************************************************************/
void	CANIntPrg(void)
{
 	unsigned char j;
	unsigned int icr,cmr;
	unsigned int regaddr;

	for(j=0;j<2;j++)				//最大CAN通道数为2 
	{
		regaddr = (unsigned long)(&CAN1ICR)+j*CANOFFSET;	
		icr=RGE(regaddr);	
		
		if((icr&(1<<0))!= 0)		//RI 接收中断
		{	
			/*用户代码*/
			icr &= ~(0x01);			//清零接收中断标志位
			RGE(regaddr) = icr;

			CANRCVANDSEND(0, 2);	// 收到并发送 参数(通道号,缓冲区号)
			CANRCVANDSEND(1, 2);	// 收到并发送 参数(通道号,缓冲区号)
			
			regaddr = (unsigned long)(&CAN1CMR)+j*CANOFFSET;				
			cmr=RGE(regaddr);
			cmr |= (1<<2);			// 	释放接收缓冲区									
			RGE(regaddr)=cmr;		
		}
		if((icr&(1<<1))!= 0)		// TI1 第一发送缓冲区发送完成中断

		{	
			/*用户代码*/
			writedetail(6,1, 0x01,data11);
			CANSend(0, 2);
			CANSend(1, 2);
		}
		if((icr&(1<<9))!= 0)		// TI2 第二发送缓冲区发送完成中断

		{
			/*用户代码*/
			writedetail(7,1, 0x02,data11);
			CANSend(0, 3);
			CANSend(1, 3);
		}
		if((icr&(1<<10))!= 0)		// TI3 第三发送缓冲区发送完成中断
		{	
			/*用户代码*/;
		}		

	}
		
	VICVectAddr = 0;	
}
/******************************************************************************************

**函数原型	:  	用户主函数
**注意		:	使用CAN1 通道时 注意硬件是否连接,且通道是否已被初始化 !!

******************************************************************************************/

int main (void)
{		
	CAN_Init(0,0x140002);								//CAN0 初始化
	CAN_Init(1,0x140002);								//CAN1 初始化
	
	while(!writedetail(5,1, 0x87654321,data11))  		//参数分别为:帧长度、FF、ID、数据
	{
		;
	}	
	CANSend(0,1);										//参数分别为:( CAN通道号,选择缓冲区(1、2、3))
	CANSend(1,1);										//参数分别为:( CAN通道号,选择缓冲区(1、2、3))
	
	while(1)
	{
		;
	}

}

/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

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