Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
H
haoJin750TFT
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
时昊
haoJin750TFT
Commits
0e4e8eb5
Commit
0e4e8eb5
authored
Jul 11, 2024
by
时昊
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
✨
feat:增加can功能,外发,接收,初始化
parent
0fb7e3f4
Changes
6
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
272 additions
and
266 deletions
+272
-266
Can_User.c
Firmware/Source/Application/Can_User.c
+229
-229
Can_User.h
Firmware/Source/Application/Can_User.h
+33
-33
CommonInterface.c
Firmware/Source/Application/CommonInterface.c
+1
-1
Components.h
Firmware/Source/Component/Components.h
+2
-0
PowerManag_user.c
Firmware/Source/Component/PowerManagement/PowerManag_user.c
+5
-3
Sys_Task_List.c
Firmware/Source/System/Sys_Task_List.c
+2
-0
No files found.
Firmware/Source/Application/Can_User.c
View file @
0e4e8eb5
//
#include "Can_User.h"
//
#include <string.h>
//
#include "can.h"
//
#include "RTE.h"
//
#include "CAN_CH0_CAN_Communication_Matrix.h"
//
__align(4)
//
uint32_t pRXBuff[CAN_RX_MSG_Block * CAN_CH0_ID_TOTAL_MAX];
//
uint32_t pTXBuff[CAN_TX_MSG_Block * CAN_CH0_ID_SEND_TOTAL];
//
static RSCAN0BusoffMonitorStruct RSCAN0Busoff;
//
void Can_Init(void)
//
{
//
can_config_st_t Can_Config;
//
Can_Config.ch = CAN_CH_0;
//
Can_Config.freq = CAN_500Kbps;
//
Can_Config.MASK[0] = 0x001fffffU;
//
Can_Config.MASK[1] = 0x000fffffU;
//
Can_Config.MASK[2] = 0x1fffffffU;
//
Can_Config.MASK[3] = 0x1fffffffU;
//
Can_Config.rx_callback = Can_Rx_Cak;
//
COM_CAN_Init();
//
rte_can_init(&Can_Config);
//
Can_Tx_Apply_Buff();
//
Can_RX_Apply_Buff();
//
RTE_GPIO_Set_Level(RTE_GPIO_PORT05_PIN02,RTE_GPIO_LEVEL_LOW);
//
}
/
/ /
**
//
* @brief 用于申请RXBUFF CAN0MSG00~CAN0MSG07
//
*
//
*/
//
void Can_RX_Apply_Buff(void)
//
{
//
CAN_RecvMsg.Id = 0x101;
//
CAN_RecvMsg.IDE = CAN_Id_Standard;
//
CAN_RecvMsg.CacheType = CAN_CacheType_Rx_NoMask;
//
CAN_RecvMsg.RTR = CAN_RTR_Data;
//
CAN_RecvMsg.Interrupt = ENABLE;
//
CAN_MessageCache_DeInit(CAN0MSG01);
//
CAN_MessageCache_Init(CAN0MSG01, &CAN_RecvMsg);
//
CAN_MessageCache_OverWriteConfig(CAN0MSG01, ENABLE);
//
// CAN_RecvMsg.Id = DIAG_ID_Rx_PHY;
//
// CAN_RecvMsg.IDE = CAN_Id_Standard;
//
// CAN_RecvMsg.CacheType = CAN_CacheType_Rx_NoMask;
//
// CAN_RecvMsg.RTR = CAN_RTR_Data;
//
// CAN_RecvMsg.Interrupt = ENABLE;
//
// CAN_MessageCache_DeInit(CAN0MSG03);
//
// CAN_MessageCache_Init(CAN0MSG03, &CAN_RecvMsg);
//
// CAN_MessageCache_OverWriteConfig(CAN0MSG03, ENABLE);
//
// CAN_RecvMsg.Id = DIAG_ID_Rx_FUN;
//
// CAN_RecvMsg.IDE = CAN_Id_Standard;
//
// CAN_RecvMsg.CacheType = CAN_CacheType_Rx_NoMask;
//
// CAN_RecvMsg.RTR = CAN_RTR_Data;
//
// CAN_RecvMsg.Interrupt = ENABLE;
//
// CAN_MessageCache_DeInit(CAN0MSG04);
//
// CAN_MessageCache_Init(CAN0MSG04, &CAN_RecvMsg);
//
// CAN_MessageCache_OverWriteConfig(CAN0MSG04, ENABLE);
//
}
/
/ /
**
//
* @brief 用于申请TXBUFF
//
*
//
*/
//
void Can_Tx_Apply_Buff(void)
//
{
//
CanTxRxMsg CAN_SendMsg;
//
CanTxRxMsg CAN_SendMsg_Diag_Tx;
//
CAN_SendMsg.Id = 0x500;
//
CAN_SendMsg.IDE = CAN_Id_Standard;
//
CAN_SendMsg.CacheType = CAN_CacheType_Tx;
//
CAN_SendMsg.RTR = CAN_RTR_Data;
//
CAN_RecvMsg.Interrupt = DISABLE;
//
CAN_SendMsg.DLC = 8;
//
for (uint8_t i = 0; i < CAN_SendMsg.DLC; i++)
//
{
//
CAN_SendMsg.Data[i] = 0;
//
}
//
CAN_MessageCache_DeInit(CAN0MSG08);
//
CAN_MessageCache_Init(CAN0MSG08, &CAN_SendMsg);
//
// CAN_SendMsg_Diag_Tx.Id = DIAG_ID_Tx;
//
// CAN_SendMsg_Diag_Tx.IDE = CAN_Id_Standard;
//
// CAN_SendMsg_Diag_Tx.CacheType = CAN_CacheType_Tx;
//
// CAN_SendMsg_Diag_Tx.RTR = CAN_RTR_Data;
//
// CAN_SendMsg_Diag_Tx.Interrupt = DISABLE;
//
// CAN_SendMsg_Diag_Tx.DLC = 8;
//
// for (uint8_t i = 0; i < CAN_SendMsg_Diag_Tx.DLC; i++)
//
// {
//
// CAN_SendMsg_Diag_Tx.Data[i] = 0;
//
// }
//
// CAN_MessageCache_DeInit(CAN0MSG09);
//
// CAN_MessageCache_Init(CAN0MSG09, &CAN_SendMsg_Diag_Tx);
//
}
/
/ /
**
//
* @brief 用于接收回调函数
//
* @code
//
*/
//
void Can_Rx_Cak(CanTxRxMsg *Msg)
//
{
//
Co_Can_Buff_Set(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(Msg->Id), Msg->DLC, Msg->Data);
//
if ((Msg->Id == DIAG_ID_Rx_FUN) || (Msg->Id == DIAG_ID_Rx_PHY))
//
{
//
DoCAN_L_Data_Indication(Msg->Id, Msg->DLC, Msg->Data);
//
}
//
}
/
/ /
**
//
* @brief CAN库初始化TX/RX
//
*
//
*/
//
void COM_CAN_Init(void)
//
{
//
memset(pRXBuff, 0, sizeof(pRXBuff));
//
CAN_CH0_CanMsgOp.CAN_MSG_Analysis = (st_CANMsgStruct *)pRXBuff;
//
CAN_CH0_CanMsgOp.pAttrubute = CAN_CH0_CAN_MSG_CONST_ARRAY;
//
CAN_CH0_CanMsgOp.Total_Msg = CAN_CH0_ID_TOTAL_MAX;
//
CAN_CH0_CanMsgOp.u8CAN_RX_ENABLE = CAN_N_RX_Enable;
//
Can_RX_BuffInit(&CAN_CH0_CanMsgOp, CAN_CH0_CAN_MSG_CONST_ARRAY, CAN_CH0_ID_TOTAL_MAX);
//
CAN_RX_SetEnable(&CAN_CH0_CanMsgOp, CAN_N_RX_Enable);
//
memset(pTXBuff, 0, sizeof(pTXBuff));
//
CAN_CH0_CanMsgTxOp.CanMsg = (st_CAN_SendOperation *)pTXBuff;
//
Can_TX_BuffInit(&CAN_CH0_CanMsgTxOp, CAN_CH0_CANSendAttr, CAN_CH0_ID_SEND_TOTAL, COM_APP_Process);
//
CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Enable);
//
}
/
/ /
**
//
* @brief Buff恢复函数
//
* @param deltaTime 调用时间 单位ms 10MS调用
//
*/
//
void Can_BusOff_Recover(uint8_t deltaTime)
//
{
//
if (get_can_busoff(CAN_CH_0) == 2)
//
{
//
if (RSCAN0Busoff.Status == RSCAN0_BUS_STABLE)
//
{
//
RSCAN0Busoff.Status = RSCAN0_BUS_OFF_LV1;
//
}
//
if (RSCAN0Busoff.Status == RSCAN0_BUS_OFF_LV1)
//
{
//
RSCAN0Busoff.Timer++;
//
if (RSCAN0Busoff.Timer >= RSCAN0_BUS_OFF_LV1_RECOVERY_TIME / deltaTime)
//
{
//
RSCAN0Busoff.Timer = 0U;
//
RSCAN0Busoff.Cnt++;
//
if (RSCAN0Busoff.Cnt >= 10U)
//
{
//
RSCAN0Busoff.Cnt = 0U;
//
RSCAN0Busoff.Status = RSCAN0_BUS_OFF_LV2;
//
}
//
reset_busoff(CAN_CH_0);
//
}
//
}
//
else if (RSCAN0Busoff.Status == RSCAN0_BUS_OFF_LV2)
//
{
//
RSCAN0Busoff.Timer++;
//
if (RSCAN0Busoff.Timer >= RSCAN0_BUS_OFF_LV2_RECOVERY_TIME / deltaTime)
//
{
//
RSCAN0Busoff.Timer = 0U;
//
reset_busoff(CAN_CH_0);
//
}
//
}
//
else
//
{
//
}
//
}
//
else /* 总线正常,没有Bus-off发生*/
//
{
//
}
//
}
/
/ /
**
//
* @brief 获取busoff状态
//
* @return 0 没有busoff
//
* 1 错误的操作
//
* 2 busoff
//
*/
//
uint8_t Get_Busoff_Status(void)
//
{
//
return get_can_busoff(CAN_CH_0);
//
}
//
uint8_t COM_APP_Process(st_CAN_Msg *Msg)
//
{
//
Can_Write((st_CAN_Msg *)Msg);
//
return 0;
//
}
//
void Can_Write(st_CAN_Msg *Msg)
//
{
//
uint32_t i = 0;
//
CanTxRxMsg CAN_SendMsg;
//
CAN_SendMsg.Id = Msg->MsgID; /* ID */
//
CAN_SendMsg.DLC = Msg->MsgDLC; /* Len */
//
CAN_SendMsg.RTR = Msg->MsgRTR; /* Default 0 */
//
CAN_SendMsg.IDE = CAN_Id_Standard; /* Stand 0 Ext 1 */
//
CAN_SendMsg.CacheType = CAN_CacheType_Tx;
//
for (i = 0; i < CAN_SendMsg.DLC; i++) /* 获取数据 */
//
{
//
CAN_SendMsg.Data[i] = Msg->Msg[i];
//
}
//
switch (CAN_SendMsg.Id)
//
{
//
case 0x500:
//
CAN_Transmit(CAN0MSG08, &CAN_SendMsg);
//
break;
//
default:
//
break;
//
}
//
}
#include "Can_User.h"
#include <string.h>
#include "can.h"
#include "RTE.h"
#include "CAN_CH0_CAN_Communication_Matrix.h"
__align
(
4
)
uint32_t
pRXBuff
[
CAN_RX_MSG_Block
*
CAN_CH0_ID_TOTAL_MAX
];
uint32_t
pTXBuff
[
CAN_TX_MSG_Block
*
CAN_CH0_ID_SEND_TOTAL
];
static
RSCAN0BusoffMonitorStruct
RSCAN0Busoff
;
void
Can_Init
(
void
)
{
can_config_st_t
Can_Config
;
Can_Config
.
ch
=
CAN_CH_0
;
Can_Config
.
freq
=
CAN_500Kbps
;
Can_Config
.
MASK
[
0
]
=
0x001fffffU
;
Can_Config
.
MASK
[
1
]
=
0x000fffffU
;
Can_Config
.
MASK
[
2
]
=
0x1fffffffU
;
Can_Config
.
MASK
[
3
]
=
0x1fffffffU
;
Can_Config
.
rx_callback
=
Can_Rx_Cak
;
COM_CAN_Init
();
rte_can_init
(
&
Can_Config
);
Can_Tx_Apply_Buff
();
Can_RX_Apply_Buff
();
RTE_GPIO_Set_Level
(
RTE_GPIO_PORT05_PIN02
,
RTE_GPIO_LEVEL_LOW
);
}
/**
* @brief 用于申请RXBUFF CAN0MSG00~CAN0MSG07
*
*/
void
Can_RX_Apply_Buff
(
void
)
{
CAN_RecvMsg
.
Id
=
0x101
;
CAN_RecvMsg
.
IDE
=
CAN_Id_Standard
;
CAN_RecvMsg
.
CacheType
=
CAN_CacheType_Rx_NoMask
;
CAN_RecvMsg
.
RTR
=
CAN_RTR_Data
;
CAN_RecvMsg
.
Interrupt
=
ENABLE
;
CAN_MessageCache_DeInit
(
CAN0MSG01
);
CAN_MessageCache_Init
(
CAN0MSG01
,
&
CAN_RecvMsg
);
CAN_MessageCache_OverWriteConfig
(
CAN0MSG01
,
ENABLE
);
// CAN_RecvMsg.Id = DIAG_ID_Rx_PHY;
// CAN_RecvMsg.IDE = CAN_Id_Standard;
// CAN_RecvMsg.CacheType = CAN_CacheType_Rx_NoMask;
// CAN_RecvMsg.RTR = CAN_RTR_Data;
// CAN_RecvMsg.Interrupt = ENABLE;
// CAN_MessageCache_DeInit(CAN0MSG03);
// CAN_MessageCache_Init(CAN0MSG03, &CAN_RecvMsg);
// CAN_MessageCache_OverWriteConfig(CAN0MSG03, ENABLE);
// CAN_RecvMsg.Id = DIAG_ID_Rx_FUN;
// CAN_RecvMsg.IDE = CAN_Id_Standard;
// CAN_RecvMsg.CacheType = CAN_CacheType_Rx_NoMask;
// CAN_RecvMsg.RTR = CAN_RTR_Data;
// CAN_RecvMsg.Interrupt = ENABLE;
// CAN_MessageCache_DeInit(CAN0MSG04);
// CAN_MessageCache_Init(CAN0MSG04, &CAN_RecvMsg);
// CAN_MessageCache_OverWriteConfig(CAN0MSG04, ENABLE);
}
/**
* @brief 用于申请TXBUFF
*
*/
void
Can_Tx_Apply_Buff
(
void
)
{
CanTxRxMsg
CAN_SendMsg
;
CanTxRxMsg
CAN_SendMsg_Diag_Tx
;
CAN_SendMsg
.
Id
=
0x500
;
CAN_SendMsg
.
IDE
=
CAN_Id_Standard
;
CAN_SendMsg
.
CacheType
=
CAN_CacheType_Tx
;
CAN_SendMsg
.
RTR
=
CAN_RTR_Data
;
CAN_RecvMsg
.
Interrupt
=
DISABLE
;
CAN_SendMsg
.
DLC
=
8
;
for
(
uint8_t
i
=
0
;
i
<
CAN_SendMsg
.
DLC
;
i
++
)
{
CAN_SendMsg
.
Data
[
i
]
=
0
;
}
CAN_MessageCache_DeInit
(
CAN0MSG08
);
CAN_MessageCache_Init
(
CAN0MSG08
,
&
CAN_SendMsg
);
// CAN_SendMsg_Diag_Tx.Id = DIAG_ID_Tx;
// CAN_SendMsg_Diag_Tx.IDE = CAN_Id_Standard;
// CAN_SendMsg_Diag_Tx.CacheType = CAN_CacheType_Tx;
// CAN_SendMsg_Diag_Tx.RTR = CAN_RTR_Data;
// CAN_SendMsg_Diag_Tx.Interrupt = DISABLE;
// CAN_SendMsg_Diag_Tx.DLC = 8;
// for (uint8_t i = 0; i < CAN_SendMsg_Diag_Tx.DLC; i++)
// {
// CAN_SendMsg_Diag_Tx.Data[i] = 0;
// }
// CAN_MessageCache_DeInit(CAN0MSG09);
// CAN_MessageCache_Init(CAN0MSG09, &CAN_SendMsg_Diag_Tx);
}
/**
* @brief 用于接收回调函数
* @code
*/
void
Can_Rx_Cak
(
CanTxRxMsg
*
Msg
)
{
Co_Can_Buff_Set
(
&
CAN_CH0_CanMsgOp
,
Co_Can_ConvertSubID_CAN_CH0
(
Msg
->
Id
),
Msg
->
DLC
,
Msg
->
Data
);
//
if ((Msg->Id == DIAG_ID_Rx_FUN) || (Msg->Id == DIAG_ID_Rx_PHY))
//
{
//
DoCAN_L_Data_Indication(Msg->Id, Msg->DLC, Msg->Data);
//
}
}
/**
* @brief CAN库初始化TX/RX
*
*/
void
COM_CAN_Init
(
void
)
{
memset
(
pRXBuff
,
0
,
sizeof
(
pRXBuff
));
CAN_CH0_CanMsgOp
.
CAN_MSG_Analysis
=
(
st_CANMsgStruct
*
)
pRXBuff
;
CAN_CH0_CanMsgOp
.
pAttrubute
=
CAN_CH0_CAN_MSG_CONST_ARRAY
;
CAN_CH0_CanMsgOp
.
Total_Msg
=
CAN_CH0_ID_TOTAL_MAX
;
CAN_CH0_CanMsgOp
.
u8CAN_RX_ENABLE
=
CAN_N_RX_Enable
;
Can_RX_BuffInit
(
&
CAN_CH0_CanMsgOp
,
CAN_CH0_CAN_MSG_CONST_ARRAY
,
CAN_CH0_ID_TOTAL_MAX
);
CAN_RX_SetEnable
(
&
CAN_CH0_CanMsgOp
,
CAN_N_RX_Enable
);
memset
(
pTXBuff
,
0
,
sizeof
(
pTXBuff
));
CAN_CH0_CanMsgTxOp
.
CanMsg
=
(
st_CAN_SendOperation
*
)
pTXBuff
;
Can_TX_BuffInit
(
&
CAN_CH0_CanMsgTxOp
,
CAN_CH0_CANSendAttr
,
CAN_CH0_ID_SEND_TOTAL
,
COM_APP_Process
);
CAN_TX_SetEnable
(
&
CAN_CH0_CanMsgTxOp
,
CAN_N_TX_Enable
);
}
/**
* @brief Buff恢复函数
* @param deltaTime 调用时间 单位ms 10MS调用
*/
void
Can_BusOff_Recover
(
uint8_t
deltaTime
)
{
if
(
get_can_busoff
(
CAN_CH_0
)
==
2
)
{
if
(
RSCAN0Busoff
.
Status
==
RSCAN0_BUS_STABLE
)
{
RSCAN0Busoff
.
Status
=
RSCAN0_BUS_OFF_LV1
;
}
if
(
RSCAN0Busoff
.
Status
==
RSCAN0_BUS_OFF_LV1
)
{
RSCAN0Busoff
.
Timer
++
;
if
(
RSCAN0Busoff
.
Timer
>=
RSCAN0_BUS_OFF_LV1_RECOVERY_TIME
/
deltaTime
)
{
RSCAN0Busoff
.
Timer
=
0U
;
RSCAN0Busoff
.
Cnt
++
;
if
(
RSCAN0Busoff
.
Cnt
>=
10U
)
{
RSCAN0Busoff
.
Cnt
=
0U
;
RSCAN0Busoff
.
Status
=
RSCAN0_BUS_OFF_LV2
;
}
reset_busoff
(
CAN_CH_0
);
}
}
else
if
(
RSCAN0Busoff
.
Status
==
RSCAN0_BUS_OFF_LV2
)
{
RSCAN0Busoff
.
Timer
++
;
if
(
RSCAN0Busoff
.
Timer
>=
RSCAN0_BUS_OFF_LV2_RECOVERY_TIME
/
deltaTime
)
{
RSCAN0Busoff
.
Timer
=
0U
;
reset_busoff
(
CAN_CH_0
);
}
}
else
{
}
}
else
/* 总线正常,没有Bus-off发生*/
{
}
}
/**
* @brief 获取busoff状态
* @return 0 没有busoff
* 1 错误的操作
* 2 busoff
*/
uint8_t
Get_Busoff_Status
(
void
)
{
return
get_can_busoff
(
CAN_CH_0
);
}
uint8_t
COM_APP_Process
(
st_CAN_Msg
*
Msg
)
{
Can_Write
((
st_CAN_Msg
*
)
Msg
);
return
0
;
}
void
Can_Write
(
st_CAN_Msg
*
Msg
)
{
uint32_t
i
=
0
;
CanTxRxMsg
CAN_SendMsg
;
CAN_SendMsg
.
Id
=
Msg
->
MsgID
;
/* ID */
CAN_SendMsg
.
DLC
=
Msg
->
MsgDLC
;
/* Len */
CAN_SendMsg
.
RTR
=
Msg
->
MsgRTR
;
/* Default 0 */
CAN_SendMsg
.
IDE
=
CAN_Id_Standard
;
/* Stand 0 Ext 1 */
CAN_SendMsg
.
CacheType
=
CAN_CacheType_Tx
;
for
(
i
=
0
;
i
<
CAN_SendMsg
.
DLC
;
i
++
)
/* 获取数据 */
{
CAN_SendMsg
.
Data
[
i
]
=
Msg
->
Msg
[
i
];
}
switch
(
CAN_SendMsg
.
Id
)
{
case
0x500
:
CAN_Transmit
(
CAN0MSG08
,
&
CAN_SendMsg
);
break
;
default:
break
;
}
}
Firmware/Source/Application/Can_User.h
View file @
0e4e8eb5
//
#ifndef _CAN_USER_H_
//
#define _CAN_USER_H_
//
#include "RTE.h"
//
#include "Components.h"
#ifndef _CAN_USER_H_
#define _CAN_USER_H_
#include "RTE.h"
#include "Components.h"
/
/ /
******************************************************************************
//
Bus-off
//
******************************************************************************/
//
#define RSCAN0_BUS_STABLE 0x00U
//
#define RSCAN0_BUS_OFF_LV1 0x01U
//
#define RSCAN0_BUS_OFF_LV2 0x02U
//
#define RSCAN00_BUS_LIMP 0x03U
/
/ /
******************************************************************************
//
Bus-off
//
******************************************************************************/
/******************************************************************************
Bus-off
******************************************************************************/
#define RSCAN0_BUS_STABLE 0x00U
#define RSCAN0_BUS_OFF_LV1 0x01U
#define RSCAN0_BUS_OFF_LV2 0x02U
#define RSCAN00_BUS_LIMP 0x03U
/******************************************************************************
Bus-off
******************************************************************************/
//
#define RSCAN0_BUS_OFF_LV1_RECOVERY_TIME 90U
//
#define RSCAN0_BUS_OFF_LV2_RECOVERY_TIME 1000U
#define RSCAN0_BUS_OFF_LV1_RECOVERY_TIME 90U
#define RSCAN0_BUS_OFF_LV2_RECOVERY_TIME 1000U
//
typedef struct
//
{
//
uint8_t Status;
//
uint8_t Timer;
//
uint8_t Cnt;
//
uint8_t ReportDTCCnt;
//
} RSCAN0BusoffMonitorStruct;
typedef
struct
{
uint8_t
Status
;
uint8_t
Timer
;
uint8_t
Cnt
;
uint8_t
ReportDTCCnt
;
}
RSCAN0BusoffMonitorStruct
;
//
extern void Can_Tx_Apply_Buff(void);
//
extern void Can_RX_Apply_Buff(void);
//
extern void Can_BusOff_Recover(uint8_t deltaTime);
//
extern void COM_CAN_Init(void);
//
extern void Can_Init(void);
//
extern void Can_Rx_Cak(CanTxRxMsg *Msg);
//
extern void Busoff(void);
//
extern uint8_t COM_APP_Process(st_CAN_Msg *Msg);
//
extern void Can_Write(st_CAN_Msg *Msg);
extern
void
Can_Tx_Apply_Buff
(
void
);
extern
void
Can_RX_Apply_Buff
(
void
);
extern
void
Can_BusOff_Recover
(
uint8_t
deltaTime
);
extern
void
COM_CAN_Init
(
void
);
extern
void
Can_Init
(
void
);
extern
void
Can_Rx_Cak
(
CanTxRxMsg
*
Msg
);
extern
void
Busoff
(
void
);
extern
uint8_t
COM_APP_Process
(
st_CAN_Msg
*
Msg
);
extern
void
Can_Write
(
st_CAN_Msg
*
Msg
);
//
#endif
#endif
Firmware/Source/Application/CommonInterface.c
View file @
0e4e8eb5
...
...
@@ -4,7 +4,7 @@
uint32_t
PowerIgnOnTimeLine
;
uint32_t
PowerIgnOffTimeLine
;
uint32_t
PowerIgnOffTimeLine
;
static
uint32_t
PowerSocTimeLine
;
...
...
Firmware/Source/Component/Components.h
View file @
0e4e8eb5
...
...
@@ -28,5 +28,7 @@
#include "Data_VSpeed.h"
#include "BackLight.h"
#include "RTC\RTE_RTC.h"
#include "CAN_Signal\CAN_Lib.h"
#include "CAN_CH0_CAN_Communication_Matrix.h"
#endif
Firmware/Source/Component/PowerManagement/PowerManag_user.c
View file @
0e4e8eb5
...
...
@@ -64,14 +64,13 @@ static void Power_KL30_Init(void)
g_stRTCInformation
.
u8RTCYear
=
20
;
//RTE_RTC_Init(g_stRTCInformation);
Menu_User_Init
();
Can_Init
();
Protocol_KL30_Wakeup_Init
();
RTE_DEEPSLEEP_GPIO_Interrupt_Enable
(
KL15_AD_IN
,
Trigger_Rising
);
}
//extern uint32_t PowerIgnOffTimeLine;
static
void
Power_Wakeup_Init
(
void
)
{
// PowerIgnOffTimeLine = 0;
Gpio_Init
(
Gpio_WakeUp_Init
);
eeprom_StoreInfo_Init
();
Analog_Signal_Conv_Init
();
...
...
@@ -89,6 +88,7 @@ static void Power_Wakeup_Init(void)
//Telltales_Init();
Key_KL30_Init_EXample
();
Menu_User_WAKEUP
();
Can_Init
();
Protocol_KL30_Wakeup_Init
();
RTE_DEEPSLEEP_GPIO_Interrupt_Enable
(
KL15_AD_IN
,
Trigger_Rising
);
}
...
...
@@ -184,6 +184,7 @@ static Power_Status_em Power_Stay_Protect(void)
/* 关闭所有外设,坪保留AD采集,电溝状思切�? */
{
TimerM_PWM_set_duty
(
TIMERM_COUNTER1
,
TIMERM_CHB
,
0
);
CAN_TX_SetEnable
(
&
CAN_CH0_CanMsgTxOp
,
CAN_N_TX_Disable
);
}
u8PowerSts
=
EM_IGN_OFF_Init
;
/* 电溝模弝正常 */
...
...
@@ -196,6 +197,7 @@ static Power_Status_em Power_Stay_Protect(void)
if
(
SYS_OPR_STAT_RUN
)
{
CAN_TX_SetEnable
(
&
CAN_CH0_CanMsgTxOp
,
CAN_N_TX_Enable
);
return
u8PowerSts
;
}
...
...
Firmware/Source/System/Sys_Task_List.c
View file @
0e4e8eb5
...
...
@@ -15,6 +15,8 @@ void Sys_2ms_Tasks(void)
Sys_Status_Update_Service
();
Analog_Signal_Conv_Service
();
AMT630H_Main
();
Can_Write_Fun
(
&
CAN_CH0_CanMsgTxOp
,
2000u
);
CanMSg_XMS_Analysis
(
&
CAN_CH0_CanMsgOp
,
2u
);
}
void
Sys_5ms_Tasks
(
void
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment