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