📄 pelirtos.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 = 0x30;
TH0 = 0xf8;
TR0 = 1;
ET0 = 1;
TF0 = 0;
}
/*
************************************************************************************************************************
** 微处理器初始化
************************************************************************************************************************
*/
void CpuInit(void)
{
CKCON=1; //应用6clock
SJA_CS_Point =&CAN1_SJA_BaseAdr; //重置操作指针
P_structDisplayLedApp=&structDisplayLedApp;
P_CanIntFlagApp =&CanIntFlagApp;
P_Can1IntFlagApp =(P_CAN_INT_FLAG)(&CAN1_SJA_BaseAdr+REG_CAN_IR);
P_Can2IntFlagApp =(P_CAN_INT_FLAG)(&CAN2_SJA_BaseAdr+REG_CAN_IR);
}
/*
************************************************************************************************************************
** main
************************************************************************************************************************
*/
void main(void)
{
CpuInit();
TMOD = (TMOD & 0XF0) | 0X01;
TL0 = 0x30;
TH0 = 0xf8;
TR0 = 1;
ET0 = 1;
TF0 = 0;
OSStart();//启动small rtos
}
/*
************************************************************************************************************************
** can control send task
************************************************************************************************************************
*/
void send(void)
{ unsigned char data status;
unsigned char i;
unsigned char xdata *p =&CAN1_SJA_BaseAdr+REG_CAN_SR ;
unsigned char xdata *p1;
status=SJAInitConfig(); //初始化can控制器
if(status!=0){
OSSendSignal(2);
}
P_SJAFrameStructApp =(P_SJAFrameStruct )&BufCan2[0];
IT0 =0; //电平触发模式
EX0=1; //使能can中断
BufCan2[0]=0x88;
P_SJAFrameStructApp->FrameID=0x11111111;
while(1){
OSWait(K_TMO,2);
P_SJAFrameStructApp->FrameID++;
p1=(unsigned char xdata *)&P_SJAFrameStructApp->FrameID;
for(i=0;i<4;i++) //发送测试数据
BufCan2[1+i] =*(p1+i);// 0x55;
for(i=0;i<4;i++)
BufCan2[5+i] =*(p1+i);// 0x55;
for(i=0;i<4;i++)
BufCan2[9+i] =*(p1+i);// 0x55;
status=SJASendData(BufCan2,0x10);//启动can发送
if(status!=0)
OSSendSignal(2);
}
}
/*
************************************************************************************************************************
** display task
************************************************************************************************************************
*/
void display(void)
{
while(1){
OSWait(K_TMO,1);
Show_LED(); //dp51 led显示处理
}
}
/*
************************************************************************************************************************
** error task
************************************************************************************************************************
*/
void error(void)
{
static unsigned int xdata ErrInfo;
while(1){
OSWait(K_SIG,0);
P_structDisplayLedApp->DisplayBuf[1]=0x0E;
P_structDisplayLedApp->DisplayBuf[2]=0x12;
P_structDisplayLedApp->DisplayBuf[4]=(unsigned char)ErrInfo&0x0f;
P_structDisplayLedApp->DisplayBuf[3]=((unsigned char)ErrInfo&0xf0)>>4;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -