test_can.c

来自「这是在linux下的key驱动,很不错的.」· C语言 代码 · 共 83 行

C
83
字号
#include <stdlib.h>#define cana_addr 0xeb300000#define canb_addr 0xeb308000struct CanControl {   unsigned short CR; //控制寄存器   unsigned short CMR;//命令寄存器   unsigned short SR; //状态寄存器    unsigned short IR;//中断寄存器   unsigned short ACR;//验收寄存器   unsigned short AMR;//屏蔽寄存器   unsigned short BTR0;   unsigned short BTR1;   unsigned short OCR;   unsigned short TR; // 寄存器00..09   unsigned short TxDSCR[2],TxData[8];//发送ID,数据 10..19   unsigned short RxDSCR[2],RxData[8];//接收ID,数据 20..29   unsigned short XX30,CDR;//31 时钟驱动 30..31};static struct CanControl *pcana=cana_addr;static struct CanControl *pcanb=canb_addr;int main(int argc,char *argv[]){	int volatile *p;	short volatile *p1;	short tmp;	int i,j=0;		pcana->CDR = tmp|0x03;	pcana->CR=0x0f;  pcana->CMR=0;  pcana->ACR=0x07;  pcana->AMR=0xff;  pcana->OCR=0xfa;	pcana->BTR0=0x01;	pcana->BTR1=0x14;		pcanb->CDR = tmp|0x03;  pcanb->CR=0x0f;  pcanb->CMR=0;  pcanb->ACR=0x07;  pcanb->AMR=0xff;  pcanb->OCR=0xfa;	pcanb->BTR0=0x01;	pcanb->BTR1=0x14;	//pcanb->BTR0=0x01;	//pcanb->BTR1=0x14;	getchar();	printf(" 8bit read on 8bit device:%x,%x\n",pcana->BTR0&0xff,pcana->BTR1&0xff);	printf(" 8bit read on 8bit device:%x,%x\n",pcanb->BTR0&0xff,pcanb->BTR1&0xff);	printf("we can test\n");	pcana->CR = 0x0e;	pcanb->CR = 0x0e;	printf("RxDsCR is %x,%x\n",pcanb->RxDSCR[0],pcanb->RxDSCR[1]);	for(i=0;i<8;i++) printf("the data %x is %x\n",i,pcanb->RxData[i]);	getchar();	while(1)	{		j++;		//pcana->CR &= 0xfe;		//pcana->CR &= 0xfe;		printf("CR=%x\n",pcana->CR&0xff);		pcana->TxDSCR[0] = 0x00;	  pcana->TxDSCR[1] = 0x08;	  for(i=0;i<8;i++) pcana->TxData[i]=i+j;	  printf("the length is %x\n",pcana->TxDSCR[1]);	  for(i=0;i<8;i++) printf("the data %x is %x\n",i,pcana->TxData[i]);	  printf("wait for key\n");	  pcana->CMR=0x01;	  getchar();	  printf("CANA:\n");	  printf(" is %x,%x\n",pcanb->RxDSCR[0],pcanb->RxDSCR[1]);	  printf("CANB:\n");	  printf("RxDsCR is %x,%x\n",pcanb->RxDSCR[0],pcanb->RxDSCR[1]);	  for(i=0;i<8;i++) printf("the data %x is %x\n",i,pcanb->RxData[i]);	  pcanb->CMR= 0x04;	}	return 0;}

⌨️ 快捷键说明

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