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

📄 initial.h

📁 使用MC9S12DP256写的CAN转串口程序。
💻 H
字号:
#pragma CODE_SEG DEFAULT

//SCI 初始化   (有两个串口0和1)
//注意:倍频的时候,实际波特率为这里设置的2倍
void SCI_Initial(void)
{
	//13位的波特率设置 : SCI baud rate = SCI module clock / (16 *SCIBR[12:0])
//	SCI0BDH	=0x03;		//(*  Page 396  *)
//	SCI0BDL	=0x41;		//(*  Page 396  *)//16M钟振,波特率600

	//倍频的时候计算公式-波特率57600
	SCI0BDL = (unsigned char)((16000000UL /* OSC freq */ / 2) / (57600/2)/* baud rate */ / 16/*factor*/); 	
	//SCI Control Register 1,2
	SCI0CR1	=0x00;		//(*  Page 397  *)
	SCI0CR2	=0x2c;		//(*  Page 399  *)	
	
	//倍频的时候计算公式-波特率57600
	SCI1BDL = (unsigned char)((16000000UL /* OSC freq */ / 2) / (57600/2)/* baud rate */ / 16/*factor*/); 	
	//SCI Control Register 1,2
	SCI1CR1	=0x00;		//(*  Page 397  *)
	SCI1CR2	=0x2c;		//(*  Page 399  *)		
}

//实时中断初始化
void RTIInit(void)
{
  //48*1.024 ms
  RTICTL = 0x7B; //set RTI prescaler 
  CRGINT = 0x80; //enable RTI interrupts 
}

void CAN0_Initial(void) 
{
	//CAN pin定义
	MODRR = 0x00;
	DDRM = 0xFF;  
	
	//CAN控制0设定, 初始化模式请求, CAN模块使能
	CAN0CTL0 |= 0x01;

	while (!(CAN0CTL0 & 0x01));//******注意,是否需要修改

	//标识符控制设置 
	CAN0IDAC = 0x00;    //2个32 位接收滤波器

	//标识符接收设置
	CAN0IDAR0 = 0xFF;
	CAN0IDAR1 = 0xFF;
	CAN0IDAR2 = 0xFF;
	CAN0IDAR3 = 0xFF;

	CAN0IDAR4 = 0xFF;
	CAN0IDAR5 = 0xFF;
	CAN0IDAR6 = 0xFF;
	CAN0IDAR7 = 0xFF;

	//标识符过滤设置
	CAN0IDMR0 = 0xff;
	CAN0IDMR1 = 0xff;
	CAN0IDMR2 = 0xff;
	CAN0IDMR3 = 0xff;
	CAN0IDMR4 = 0xff;
	CAN0IDMR5 = 0xff;
	CAN0IDMR6 = 0xff;
	CAN0IDMR7 = 0xff;

	//总线定时设置
	CAN0BTR0 = 0x83;
	CAN0BTR1 = 0xD8; //250kbps

	//CAN控制1, 模式设置, CAN模块使能
	CAN0CTL1 = 0x80;     //CAN0 普通模式

	//清INITRQ, 进入普通模式
	CAN0CTL0 &= 0xfe;

	while (CAN0CTL1 & 0x01);//******注意,是否需要修改

	//接收中断使能
	CAN0RIER = 0x01;
	//发送缓冲区清空
	CAN0TFLG = 0x07;
}

void CAN1_Initial(void) 
{
	//CAN pin定义
	MODRR = 0x00;
	DDRM = 0xFF;  
	
	//CAN控制0设定, 初始化模式请求, CAN模块使能
	CAN1CTL0 |= 0x01;

	while (!(CAN1CTL0 & 0x01));//******注意,是否需要修改

	//标识符控制设置 
	CAN1IDAC = 0x00;    //2个32 位接收滤波器

	//标识符接收设置
	CAN1IDAR0 = 0xFF;
	CAN1IDAR1 = 0xFF;
	CAN1IDAR2 = 0xFF;
	CAN1IDAR3 = 0xFF;

	CAN1IDAR4 = 0xFF;
	CAN1IDAR5 = 0xFF;
	CAN1IDAR6 = 0xFF;
	CAN1IDAR7 = 0xFF;

	//标识符过滤设置
	CAN1IDMR0 = 0xff;
	CAN1IDMR1 = 0xff;
	CAN1IDMR2 = 0xff;
	CAN1IDMR3 = 0xff;
	CAN1IDMR4 = 0xff;
	CAN1IDMR5 = 0xff;
	CAN1IDMR6 = 0xff;
	CAN1IDMR7 = 0xff;

	//总线定时设置
	CAN1BTR0 = 0x83;
	CAN1BTR1 = 0xD8; //250kbps

	//CAN控制1, 模式设置, CAN模块使能
	CAN1CTL1 = 0x80;     //CAN1 普通模式

	//清INITRQ, 进入普通模式
	CAN1CTL0 &= 0xfe;

	while (CAN1CTL1 & 0x01);//******注意,是否需要修改

	//接收中断使能
	CAN1RIER = 0x0f;
	//发送缓冲区清空
	CAN1TFLG = 0x07;
}

⌨️ 快捷键说明

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