【无标题】111

#ifndef XCP_CFG_H

#define XCP_CFG_H

#include "ifxStm_reg.h"

/* Data types */

typedef unsigned char vuint8;

typedef signed char vsint8;

typedef unsigned short vuint16;

typedef signed short vsint16;

typedef unsigned long vuint32;

typedef signed long vsint32;

#define BYTEPTR unsigned char *

#define MEMORY_ROM

#define MTABYTEPTR BYTEPTR

#define V_MEMROM0

/* XCP message length /
#define kXcpMaxCTO 8 /
Maximum CTO Message Lenght /
#define kXcpMaxDTO 8 /
Maximum DTO Message Lenght /
#define kXcpDaqMemSize (1024
2) /* Use 2K for XCP */

#define XCP_TRANSPORT_LAYER_VERSION 0x0100

#define XCP_ENABLE_COMM_MODE_INFO

#define XCP_ENABLE_SERV_TEXT

#define XCP_ENABLE_SERV_TEXT_PUTCHAR

#define XCP_ENABLE_SERV_TEXT_PRINT

#define XCP_CPUTYPE_LITTLEENDIAN /* Intel */

#define XCP_DISABLE_PARAMETER_CHECK

#define XCP_DISABLE_SEED_KEY

#define XCP_DISABLE_USER_COMMAND

#define XCP_ENABLE_SEND_EVENT

#define XCP_ENABLE_USE_BYTE_ACCESS

#define XCP_ENABLE_CALIBRATION

#define XCP_ENABLE_SHORT_DOWNLOAD

#define XCP_ENABLE_SHORT_UPLOAD

#define XCP_ENABLE_BLOCK_UPLOAD

#define XCP_ENABLE_BLOCK_DOWNLOAD

#define XCP_ENABLE_CHECKSUM

#define kXcpChecksumMethod XCP_CHECKSUM_TYPE_ADD14

#define XCP_DISABLE_CALIBRATION_PAGE

#define XCP_DISABLE_SEGMENT_INFO

#define XCP_DISABLE_PAGE_INFO

#define XCP_DISABLE_PAGE_FREEZE

#define XCP_DISABLE_STIM

#define XCP_ENABLE_DAQ

#define XCP_DISABLE_UNALIGNED_MEM_ACCESS

#define XCP_DISABLE_DAQ_HDR_ODT_DAQ

#define XCP_ENABLE_DAQ_PRESCALER

#define XCP_ENABLE_DAQ_OVERRUN_INDICATION

#define XCP_ENABLE_DAQ_PROCESSOR_INFO

#define XCP_ENABLE_DAQ_RESOLUTION_INFO

#define XCP_ENABLE_WRITE_DAQ_MULTIPLE

/* Memory space reserved for DAQ */

#define XCP_ENABLE_SEND_QUEUE

#define XCP_DISABLE_SEND_BUFFER

#endif /* XCP_CFG_H */

#include "xcp_if.h"

#include "xcpBasic.h"

void ApplXcpSend(vuint8 len, const BYTEPTR msg)

{

uint32 txData32kXcpMaxDTO / 4u = {0u};

uint32 word = 0u;

uint32 byteIdx = 0u;

uint8 wordNum = 0u;

复制代码
if(len > (uint8)kXcpMaxDTO)
{
    len = (uint8)kXcpMaxDTO;
}

wordNum = (uint8)(((uint16)len + 3u) / 4u);

for(uint8 i = 0u; i < wordNum; i++)
{
    word = 0u;
    for(uint8 j = 0u; j < 4u; j++)
    {
        byteIdx = (uint32)i * 4u + (uint32)j;
        if(byteIdx < (uint32)len)
        {
            word |= (uint32)msg[byteIdx] << ((uint32)j * 8u);
        }
    }
    txData32[i] = word;
}
CHA_Can_Sent(XCP_ID_DTO, len, txData32, 0u, 0u, 0u);
XcpSendCallBack();

}

void Xcp_Init(void)

{

XcpInit();

}

void Xcp_Recv(uint32* data)

{

uint8 xcpBufkXcpMaxCTO = {0u};

(void)memcpy(xcpBuf, data, sizeof(xcpBuf));

XcpCommand((void*)&xcpBuf0);

}

void Xcp_TasksSend5ms(void)

{

static uint8 u8XCPEvent5msCnt = 0;

u8XCPEvent5msCnt++; //5ms

复制代码
XcpEvent(1u);

if((u8XCPEvent5msCnt % 2u) == 0u)   { XcpEvent(2u);}           //10ms
if((u8XCPEvent5msCnt % 20u) == 0u)  { XcpEvent(3u);}           //100ms
if((u8XCPEvent5msCnt % 100u) == 0u) { XcpEvent(4u);}           //500ms
if((u8XCPEvent5msCnt % 200u) == 0u) { XcpEvent(5u);}           //1s

XcpBackground();

if (u8XCPEvent5msCnt >= 200u)
{
    u8XCPEvent5msCnt = 0u;
}

}

void ApplXcpSendFlush()

{

}

uint8 ApplXcpSendStall( void )

{

return( (uint8) 1u );

}

void ApplXcpInterruptEnable(void)

{

}

void ApplXcpInterruptDisable(void)

{

}

void ApplXcpBackground(void)

{

}

MTABYTEPTR ApplXcpGetPointer( uint8 addr_ext, uint32 addr )

{

return (MTABYTEPTR)addr;

}

void ApplXcpInit( void )

{

}

相关推荐
元器件BOM超人1 小时前
GD32E230C8T6 兆易创新Cortex-M23超值型MCU解析:规格参数、替代选型与常见问题
单片机·嵌入式硬件
StarsGreen2 小时前
Android 启动流程详解
android·linux·单片机·嵌入式硬件
en.en..2 小时前
AFE:模拟前端,模拟世界通往 MCU 的信号桥梁
单片机·嵌入式硬件
小鳄鱼电气2 小时前
感应电机直接转矩控制传动(AC4 200 HP)仿真说明书
单片机·嵌入式硬件
Dev_XH16 小时前
【成品设计】基于单片机的家用智能浇花系统的设计与实现
stm32·单片机·嵌入式硬件·物联网
意法半导体STM3218 小时前
【官方原创】LAT1717 STM32N6 如何使用单个XSPI驱动双片相同HyperRAM
stm32·单片机·嵌入式硬件·mcu·stm32n6·hyperram
木子单片机18 小时前
基于单片机的直流电机调速系统设计
单片机·嵌入式硬件·51单片机·nosql·keil
Zwawa19 小时前
两根线怎么挂住一堆设备:I2C 协议原理
c语言·单片机·嵌入式
倔强的胡萝卜21 小时前
基于STM32F103C8T6的温度报警器设计
stm32·单片机·嵌入式硬件