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

📄 pelirtos.c

📁 SJA1000与单片机系统测试程序.完成通信功能.没有定协议层.
💻 C
字号:
/*
 ********************************************************************************************************************
 *描述:    独立的CAN 控制器SJA1000PeliCAN在small rtos中的应用示例
 *文件名:   PELIRTOS.c
 *应用语言: KEIL C51
 *应用系统:	small rtos
 *版本 :    V1.0
 *广州周立功单片机发展有限公司 保留所有的版权
 ********************************************************************************************************************
 */
#define		 _TIME_MODULE_H
#define		_SERIAL_H

/*
************************************************************************************************************************
**                           导入头文件
************************************************************************************************************************
*/

#include	"..\inc\INCLUDES.h"

/*
************************************************************************************************************************
**                          	系统定时中断处理
************************************************************************************************************************
*/
void UserTickTimer(void)
{
	TMOD = (TMOD & 0XF0) | 0X01;
	TL0 = 0x80;
	TH0 = 0xfa;
	TR0 = 1;
	ET0 = 1;
	TF0 = 0;
}
/*
************************************************************************************************************************
**                          	微处理器初始化
************************************************************************************************************************
*/
void	CpuInit(void)
{	
	CKCON=1;				//应用6clock
}

/*
************************************************************************************************************************
**                          main
************************************************************************************************************************
*/

void		main(void)
{	
	CpuInit();
	TMOD = (TMOD & 0XF0) | 0X01;
	TL0 = 0x80;
	TH0 = 0xfc;
	TR0 = 1;
	ET0 = 1;
	TF0 = 0;
    OSStart();//启动small rtos
}

/*
************************************************************************************************************************
**                          can control  send task
************************************************************************************************************************
*/
static	unsigned	char  CanRcvBuf[10];
static	unsigned	char  CanSendBuf[10];
unsigned	int		*p;
static	unsigned	char	ErrorData;

void	send(void)
{
	if(BCAN_HW_INIT(00,0xff,0x0e,0xaa, 0x40))	//初始化
	{
		ErrorData=0xff;
		OSSendSignal(3);
	}
	CanSendBuf[0]=0x00;
	CanSendBuf[1]=0x08;
	
	while(1)
	{
		OSWait(K_TMO+K_SIG,100);
		p=(unsigned int *)CanSendBuf;
		(*p)++;
		p=(unsigned int *)&CanSendBuf[2];
		(*p)++;
		SJASendData(CanSendBuf,0x01);
	}

}


/*
************************************************************************************************************************
**                           display task
************************************************************************************************************************
*/
void	display(void)
{

	while(1){
			OSWait(K_TMO,2);
			Show_LED();		//dp51 led显示处理
	}
}

/*
************************************************************************************************************************
**                           error task
************************************************************************************************************************
*/
void	error(void)
{
 	while(1){
			OSWait(K_SIG,0);
			P_structDisplayLedApp->DisplayBuf[1]=0x0E;
			P_structDisplayLedApp->DisplayBuf[2]=0x12;
	    	P_structDisplayLedApp->DisplayBuf[4]=(unsigned char)ErrorData&0x0f;
			P_structDisplayLedApp->DisplayBuf[3]=((unsigned char)ErrorData&0xf0)>>4;    	
	}

}

/*
************************************************************************************************************************
**                           error task
************************************************************************************************************************
*/


void	CanRcv(void)
{
   	while(1)
	{
		OSWait(K_TMO,2);
		if(SJARcvData(CanRcvBuf) == 0)
		{
			structDisplayLedApp.DisplayBuf[1]=CanRcvBuf[2]>>4;
			structDisplayLedApp.DisplayBuf[2]=CanRcvBuf[2]&0x0f;
			structDisplayLedApp.DisplayBuf[3]=CanRcvBuf[3]>>4;
			structDisplayLedApp.DisplayBuf[4]=CanRcvBuf[3]&0x0f;
			memcpy(CanSendBuf,CanRcvBuf,10);
			OSSendSignal(0);
			ErrorData =0;
		 }
	}
}

⌨️ 快捷键说明

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