can.c文件中的程序#include "pbdata.h"
/***************************************************************************
* 函 数 名: CAN_Configuration
* 功能说明: CAN初始化
* 形 参:无
* 返 回 值: 无
***************************************************************************/
void CAN_Configuration(void)
{
//初始化CAN波特率为1M CAN_Init(CAN_MasterCtrl_AllDisabled,CAN_Mode_Normal,CAN_SynJumpWidth_1TimeQuantum,CAN_BitSeg1_11TimeQuantum,CAN_BitSeg2_4TimeQuantum,1);
//配置CAN第0组过滤器为屏蔽模式。但是屏蔽位都设置为0,所以相当于没启动屏蔽功能。 CAN_FilterInit(CAN_FilterNumber_0,ENABLE,CAN_FilterMode_IdMask,CAN_FilterScale_32Bit,0,0,0,0,0,0,0,0);
//使能CAN接收中断功能
CAN_ITConfig(CAN_IT_FMP,ENABLE);
}
/***************************************************************************
* 函 数 名: CAN_RecvData_Demo1
* 功能说明: CAN数据转发实验例程
* 形 参:无
* 返 回 值: 无
***************************************************************************/
void CAN_RecvData_Demo1(void)
{
u32 id;
CAN_Id_TypeDef ide;
CAN_RTR_TypeDef rtr;
u8 data[8];
u8 dlc,i;
CAN_Receive();//读取缓存中的数据
ide=CAN_GetReceivedIDE();//读取帧类型(标准或扩展)
rtr=CAN_GetReceivedRTR();//读取帧类型(数据或远程)
dlc=CAN_GetReceivedDLC();//读取接收到的数据字节数
for(i=0;i<dlc;i++)
{
data=CAN_GetReceivedData(i);//把接收到的数据送到自定义数组里
}
CAN_Transmit(id,ide,rtr,dlc,data);//把接收到的数据转发出去(包括ID号、帧类型和数据)
can.h文件中的程序#ifndef _CAN_H //宏定义,定义文件名称
#define _CAN_H
#include "stm8s.h"//引用STM8头文件
void CAN_Configuration(void);//CAN初始化函数
void CAN_RecvData_Demo1(void);//CAN数据转发函数
#endif //定义文件名称结束
|