上传文件至 /
This commit is contained in:
350
UART.C
Normal file
350
UART.C
Normal file
@@ -0,0 +1,350 @@
|
|||||||
|
//****************************************************************************
|
||||||
|
// @Module UART (Serial Interface)
|
||||||
|
// @Filename UART.C
|
||||||
|
// @Project CL2.0.dav
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Controller Infineon XC886CLM-8FF
|
||||||
|
//
|
||||||
|
// @Compiler Keil
|
||||||
|
//
|
||||||
|
// @Codegenerator 1.3
|
||||||
|
//
|
||||||
|
// @Description: This file contains functions that use the UART module.
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Date 2024/12/12 19:56:03
|
||||||
|
//
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_General,1)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Project Includes
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
#include "MAIN.H"
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_General,2)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Macros
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_General,3)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Defines
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_General,4)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Typedefs
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_General,5)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Imported Global Variables
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_General,6)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Global Variables
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_General,7)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @External Prototypes
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_General,8)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Prototypes Of Local Functions
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_General,9)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Function void UART_vInit(void)
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Description This is the initialization function of the UART function
|
||||||
|
// library. It is assumed that the SFRs used by this library
|
||||||
|
// are in their reset state.
|
||||||
|
//
|
||||||
|
// The following SFR fields will be initialized:
|
||||||
|
// - register SCON
|
||||||
|
// - bits SMOD and ES
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Returnvalue None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Parameters None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Date 2024/12/12
|
||||||
|
//
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_Init,1)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
void UART_vInit(void)
|
||||||
|
{
|
||||||
|
// USER CODE BEGIN (UART_Init,2)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
/// -----------------------------------------------------------------------
|
||||||
|
/// UART settings
|
||||||
|
/// -----------------------------------------------------------------------
|
||||||
|
/// Pin TXD_1 (P0.2) is selected for transmission
|
||||||
|
/// Pin RXD_1 (P0.1) is selected for reception
|
||||||
|
/// Receiver enabled
|
||||||
|
/// Mode 1: 8-bit data, 1 start bit, 1 stop bit, variable baud rate
|
||||||
|
/// BRG is selected for baudrate generation
|
||||||
|
|
||||||
|
SFR_PAGE(_pp2, noSST); // switch to page 2 without saving
|
||||||
|
P0_ALTSEL0 &= ~(ubyte)0x04; // configure alternate function register 0
|
||||||
|
P0_ALTSEL1 |= (ubyte)0x04; // configure alternate function register 1
|
||||||
|
SFR_PAGE(_pp0, noSST); // switch to page 0 without saving
|
||||||
|
P0_DIR |= (ubyte)0x04; // set output direction
|
||||||
|
|
||||||
|
|
||||||
|
MODPISEL |= (ubyte)0x01; // configure peripheral input select register
|
||||||
|
BCON = 0x00; // reset baudrate timer/reload register
|
||||||
|
SCON = 0x50; // load serial channel control register
|
||||||
|
|
||||||
|
/// -----------------------------------------------------------------------
|
||||||
|
/// Baudrate generator settings
|
||||||
|
/// -----------------------------------------------------------------------
|
||||||
|
/// input clock = fPCLK
|
||||||
|
/// Fractional divider is disabled
|
||||||
|
/// baudrate = 100.0000 kbaud
|
||||||
|
|
||||||
|
BG = 0x0E; // load baudrate timer/reload register
|
||||||
|
BCON |= 0x01; // load baud rate control register
|
||||||
|
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_Init,3)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
/// UART interrupt enabled
|
||||||
|
ES = 1;
|
||||||
|
|
||||||
|
} // End of function UART_vInit
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Function void UART_viIsr(void)
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Description This is the service routine for the UART interrupt. It is
|
||||||
|
// called after each transmission (flag TI set) or reception
|
||||||
|
// (flag RI set) of a data unit.
|
||||||
|
// Please note that you have to add application specific code
|
||||||
|
// to this function.
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Returnvalue None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Parameters None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Date 2024/12/12
|
||||||
|
//
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// You have two choices for interrupt type select in Project Settings Page
|
||||||
|
// under Global Settings Section.
|
||||||
|
// If you select CHOICE 1 then ISR will be generated with push and pop.
|
||||||
|
// If you select CHOICE 2 then ISR will be generated without push and pop.
|
||||||
|
// Default choice is CHOICE 2.
|
||||||
|
// Current selection is CHOICE 2
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_Isr,1)
|
||||||
|
uint16_t char_data[25] = {0};
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
void UART_viIsr(void) interrupt UARTINT
|
||||||
|
{
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_Isr,2)
|
||||||
|
// static uint8_t i = 0;
|
||||||
|
static uint8_t cnt_sbus = 0;
|
||||||
|
static uint8_t state = 0;
|
||||||
|
static uint8_t receive = 0;
|
||||||
|
static uint8_t sbus_buff[25];
|
||||||
|
SBusData *tmp_sbus_data;
|
||||||
|
// USER CODE END
|
||||||
|
SFR_PAGE(_su0, SST0); // switch to page 0
|
||||||
|
if (TI)
|
||||||
|
{
|
||||||
|
// USER CODE BEGIN (UART_Isr,3)
|
||||||
|
|
||||||
|
TI = 0;
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
}
|
||||||
|
if (RI)
|
||||||
|
{
|
||||||
|
// USER CODE BEGIN (UART_Isr,4)
|
||||||
|
RI = 0;
|
||||||
|
|
||||||
|
char_data[0] = (ubyte)SBUF;
|
||||||
|
// UART_vSendData8(char_data[0]);
|
||||||
|
|
||||||
|
switch(state)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
if(0x0f == char_data[0])
|
||||||
|
{
|
||||||
|
receive = 0;
|
||||||
|
cnt_sbus = 0;
|
||||||
|
sbus_buff[cnt_sbus] = char_data[0];
|
||||||
|
cnt_sbus++;
|
||||||
|
state = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
state = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
if(cnt_sbus >= 24)
|
||||||
|
{
|
||||||
|
if(0x0 == char_data[0])
|
||||||
|
{
|
||||||
|
cnt_sbus = 0;
|
||||||
|
receive = 0;
|
||||||
|
sbus_buff[cnt_sbus] = char_data[0];
|
||||||
|
state = 0;
|
||||||
|
tmp_sbus_data = parseSBusData(sbus_buff);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if( (0x0f == char_data[0]) && (10 != cnt_sbus) )//<2F><>Ϊ<EFBFBD><CEAA>10<31><30><EFBFBD>ֽ<EFBFBD>Ϊ0x0F<30><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD><EFBFBD><EFBFBD>0
|
||||||
|
{
|
||||||
|
receive = 0;
|
||||||
|
cnt_sbus = 0;
|
||||||
|
sbus_buff[cnt_sbus] = char_data[0];
|
||||||
|
cnt_sbus++;
|
||||||
|
state = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sbus_buff[cnt_sbus] = char_data[0];
|
||||||
|
cnt_sbus ++;
|
||||||
|
state = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
}
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_Isr,5)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
SFR_PAGE(_su0, RST0); // restore the old page
|
||||||
|
} // End of function UART_viIsr
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Function ubyte UART_ubGetData8(void)
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Description This function returns the last received 8-bit data unit.
|
||||||
|
// Interrupt flag RI will be cleared.
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Returnvalue received data unit
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Parameters None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Date 2024/12/12
|
||||||
|
//
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
//ubyte UART_ubGetData8(void)
|
||||||
|
//{
|
||||||
|
// // Clear the receiver interrupt flag
|
||||||
|
// RI = 0;
|
||||||
|
|
||||||
|
// // Return the received data byte
|
||||||
|
// return(SBUF);
|
||||||
|
|
||||||
|
//} // End of function UART_ubGetData8
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Function void UART_vSendData8(ubyte ubData)
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Description This function transmits an 8-bit data unit. At first
|
||||||
|
// interrupt flag TI is cleared, then buffer SBUF is written.
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Returnvalue None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Parameters ubData:
|
||||||
|
// data to be transmitted
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Date 2024/12/12
|
||||||
|
//
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
//void UART_vSendData8(ubyte ubData)
|
||||||
|
//{
|
||||||
|
// // Clear the transmitter interrupt flag
|
||||||
|
// TI = 0;
|
||||||
|
|
||||||
|
// // Write the transmit data byte, this initiates the transmission.
|
||||||
|
// SBUF = ubData;
|
||||||
|
//} // End of function UART_vSendData8
|
||||||
|
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_General,10)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
127
UART.H
Normal file
127
UART.H
Normal file
@@ -0,0 +1,127 @@
|
|||||||
|
//****************************************************************************
|
||||||
|
// @Module UART (Serial Interface)
|
||||||
|
// @Filename UART.H
|
||||||
|
// @Project CL2.0.dav
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Controller Infineon XC886CLM-8FF
|
||||||
|
//
|
||||||
|
// @Compiler Keil
|
||||||
|
//
|
||||||
|
// @Codegenerator 1.3
|
||||||
|
//
|
||||||
|
// @Description: This file contains all function prototypes and macros for
|
||||||
|
// the UART module.
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Date 2024/12/12 19:56:03
|
||||||
|
//
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_Header,1)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _UART_H_
|
||||||
|
#define _UART_H_
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Project Includes
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_Header,2)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Macros
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_Header,3)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Defines
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_Header,4)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Typedefs
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_Header,5)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Imported Global Variables
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_Header,6)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Global Variables
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_Header,7)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Prototypes Of Global Functions
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
void UART_vInit(void);
|
||||||
|
ubyte UART_ubGetData8(void);
|
||||||
|
void UART_vSendData8(ubyte ubData);
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_Header,8)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Macro UART_vRxEnable()
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Description This macro releases the receive function of the UART by
|
||||||
|
// setting bit REN.
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Returnvalue None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Parameters None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Date 2024/12/12
|
||||||
|
//
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
#define UART_vRxEnable() REN = 1
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Interrupt Vectors
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
#define UARTINT 4
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART_Header,9)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
#endif // ifndef _UART_H_
|
||||||
261
UART1.C
Normal file
261
UART1.C
Normal file
@@ -0,0 +1,261 @@
|
|||||||
|
//****************************************************************************
|
||||||
|
// @Module UART1 (Serial Interface)
|
||||||
|
// @Filename UART1.C
|
||||||
|
// @Project CL2.0.dav
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Controller Infineon XC886CLM-8FF
|
||||||
|
//
|
||||||
|
// @Compiler Keil
|
||||||
|
//
|
||||||
|
// @Codegenerator 1.3
|
||||||
|
//
|
||||||
|
// @Description: This file contains functions that use the UART1 module.
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Date 2024/10/31 19:17:02
|
||||||
|
//
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_General,1)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Project Includes
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
#include "MAIN.H"
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_General,2)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Macros
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_General,3)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Defines
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_General,4)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Typedefs
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_General,5)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Imported Global Variables
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_General,6)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Global Variables
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_General,7)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @External Prototypes
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_General,8)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Prototypes Of Local Functions
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_General,9)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Function void UART1_vInit(void)
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Description This is the initialization function of the UART1 function
|
||||||
|
// library. It is assumed that the SFRs used by this library
|
||||||
|
// are in their reset state.
|
||||||
|
//
|
||||||
|
// The following SFR fields will be initialized:
|
||||||
|
// - register SCON
|
||||||
|
// - bits SMOD and EX2
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Returnvalue None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Parameters None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Date 2024/10/31
|
||||||
|
//
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_Init,1)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
void UART1_vInit(void)
|
||||||
|
{
|
||||||
|
// USER CODE BEGIN (UART1_Init,2)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
/// -----------------------------------------------------------------------
|
||||||
|
/// UART1 settings
|
||||||
|
/// -----------------------------------------------------------------------
|
||||||
|
/// Pin TXD1_1 (P3.1) is selected for transmission
|
||||||
|
/// Pin RXD1_1 (P3.2) is selected for reception
|
||||||
|
/// Receiver enabled
|
||||||
|
/// UART1 interrupt is enabled
|
||||||
|
/// Ignore Normal divider overflow interrupt
|
||||||
|
/// Mode 1: 8-bit data, 1 start bit, 1 stop bit, variable baud rate
|
||||||
|
/// Receiver interrupt flag RI_1 will only be activated if a valid stop
|
||||||
|
/// bit was received
|
||||||
|
/// BRG is selected for baudrate generation
|
||||||
|
|
||||||
|
SFR_PAGE(_pp2, noSST); // switch to page 2 without saving
|
||||||
|
P3_ALTSEL0 |= (ubyte)0x02; // configure alternate function register 0
|
||||||
|
P3_ALTSEL1 |= (ubyte)0x02; // configure alternate function register 1
|
||||||
|
SFR_PAGE(_pp0, noSST); // switch to page 0 without saving
|
||||||
|
P3_DIR |= (ubyte)0x02; // set output direction
|
||||||
|
|
||||||
|
|
||||||
|
SFR_PAGE(_su3, noSST); // switch to page 3 without saving
|
||||||
|
MODPISEL1 |= (ubyte)0x08; // configure peripheral input select register
|
||||||
|
SFR_PAGE(_su0, noSST); // switch to page 0 without saving
|
||||||
|
|
||||||
|
SET_RMAP();
|
||||||
|
|
||||||
|
UART1_BCON = 0x00; // reset baudrate timer/reload register
|
||||||
|
UART1_SCON = 0x50; // load serial channel control register
|
||||||
|
|
||||||
|
/// -----------------------------------------------------------------------
|
||||||
|
/// Baudrate generator settings
|
||||||
|
/// -----------------------------------------------------------------------
|
||||||
|
/// input clock = fPCLK
|
||||||
|
/// Fractional divider is disabled
|
||||||
|
/// baudrate = 9.6154 kbaud
|
||||||
|
|
||||||
|
UART1_BG = 0x9B; // load baudrate timer/reload register
|
||||||
|
UART1_BCON |= 0x01; // load baud rate control register
|
||||||
|
|
||||||
|
|
||||||
|
RESET_RMAP();
|
||||||
|
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_Init,3)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
} // End of function UART1_vInit
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Function ubyte UART1_ubGetData8(void)
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Description This function returns the last received 8-bit data unit.
|
||||||
|
// Interrupt flag RI_1 will be cleared.
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Returnvalue received data unit
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Parameters None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Date 2024/10/31
|
||||||
|
//
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
ubyte UART1_ubGetData8(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
ubyte ubData;
|
||||||
|
|
||||||
|
_push_(SYSCON0); // push the current RMAP
|
||||||
|
SET_RMAP();
|
||||||
|
|
||||||
|
// Clear the receiver interrupt flag
|
||||||
|
UART1_SCON &= ~(ubyte)0x01;
|
||||||
|
|
||||||
|
|
||||||
|
// Read the received data bits 0..7
|
||||||
|
ubData = (ubyte)UART1_SBUF;
|
||||||
|
|
||||||
|
|
||||||
|
_pop_(SYSCON0); // restore the old RMAP
|
||||||
|
|
||||||
|
// Return the received data byte
|
||||||
|
return(ubData);
|
||||||
|
|
||||||
|
} // End of function UART1_ubGetData8
|
||||||
|
//****************************************************************************
|
||||||
|
// @Function void UART1_vSendData8(ubyte ubData)
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Description This function transmits an 8-bit data unit. At first
|
||||||
|
// interrupt flag TI_1 is cleared, then buffer SBUF is written.
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Returnvalue None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Parameters ubData:
|
||||||
|
// data to be transmitted
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Date 2024/10/31
|
||||||
|
//
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
void UART1_vSendData8(ubyte ubData)
|
||||||
|
{
|
||||||
|
|
||||||
|
_push_(SYSCON0); // push the current RMAP
|
||||||
|
SET_RMAP();
|
||||||
|
|
||||||
|
// Clear the transmitter interrupt flag
|
||||||
|
UART1_SCON &= ~(ubyte)0x02;
|
||||||
|
|
||||||
|
// Write the transmit data byte, this initiates the transmission.
|
||||||
|
UART1_SBUF = ubData;
|
||||||
|
|
||||||
|
_pop_(SYSCON0); // restore the old RMAP
|
||||||
|
|
||||||
|
} // End of function UART1_vSendData8
|
||||||
|
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_General,10)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
153
UART1.H
Normal file
153
UART1.H
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
//****************************************************************************
|
||||||
|
// @Module UART1 (Serial Interface)
|
||||||
|
// @Filename UART1.H
|
||||||
|
// @Project CL2.0.dav
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Controller Infineon XC886CLM-8FF
|
||||||
|
//
|
||||||
|
// @Compiler Keil
|
||||||
|
//
|
||||||
|
// @Codegenerator 1.3
|
||||||
|
//
|
||||||
|
// @Description: This file contains all function prototypes and macros for
|
||||||
|
// the UART1 module.
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Date 2024/10/31 19:17:02
|
||||||
|
//
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_Header,1)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef _UART1_H_
|
||||||
|
#define _UART1_H_
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Project Includes
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_Header,2)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Macros
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_Header,3)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Defines
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_Header,4)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Typedefs
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_Header,5)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Imported Global Variables
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_Header,6)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Global Variables
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_Header,7)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Prototypes Of Global Functions
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
void UART1_vInit(void);
|
||||||
|
ubyte UART1_ubGetData8(void);
|
||||||
|
void UART1_vSendData8(ubyte ubData);
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_Header,8)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Macro UART1_vRxEnable()
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Description This macro releases the receive function of the UART1 by
|
||||||
|
// setting bit REN_1.
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Returnvalue None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Parameters None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Date 2024/10/31
|
||||||
|
//
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// RMAP should be set before calling this macro.
|
||||||
|
|
||||||
|
#define UART1_vRxEnable() REN_1 = 1
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Macro UART1_vRxDisable()
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Description This macro disables the receive function of the UART1 by
|
||||||
|
// clearing bit REN_1.
|
||||||
|
// Note: Any data that is currently being received is received
|
||||||
|
// to completion, including the setting of interrupt flag RI_1.
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Returnvalue None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Parameters None
|
||||||
|
//
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// @Date 2024/10/31
|
||||||
|
//
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
// RMAP should be set before calling this macro.
|
||||||
|
|
||||||
|
#define UART1_vRxDisable() REN_1 = 0
|
||||||
|
|
||||||
|
|
||||||
|
//****************************************************************************
|
||||||
|
// @Interrupt Vectors
|
||||||
|
//****************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
// USER CODE BEGIN (UART1_Header,9)
|
||||||
|
|
||||||
|
// USER CODE END
|
||||||
|
|
||||||
|
#endif // ifndef _UART1_H_
|
||||||
539
User.c
Normal file
539
User.c
Normal file
@@ -0,0 +1,539 @@
|
|||||||
|
#include "MAIN.H"
|
||||||
|
#include "RTC.H"
|
||||||
|
#include "temperature.H"
|
||||||
|
#include <string.h>
|
||||||
|
//can<61><6E>Ϣ
|
||||||
|
UnInfCan UnInfCan_1 = {0};
|
||||||
|
UnSwOut UnSwOut_1 = {0};
|
||||||
|
|
||||||
|
//CAN<41><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
uword CntCan_1 = 0;
|
||||||
|
bit FlgCan_1 = 0;
|
||||||
|
//<2F><>һ<EFBFBD>βɼ<CEB2><C9BC><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>ָʾ
|
||||||
|
bit FlgOneTime = 0;
|
||||||
|
|
||||||
|
uword RgCanPerid = 1000;
|
||||||
|
|
||||||
|
UnTimeOutput sleeptime = {0};
|
||||||
|
UnTimeOutput waketime = {0};
|
||||||
|
UnTimeOutput currenttime = {0};
|
||||||
|
UnTimeOutput un_time_output1 = {0};//<2F><><EFBFBD><EFBFBD><EFBFBD>趨ʱ<E8B6A8><CAB1>
|
||||||
|
UnInfCanKGFOutput un_inf_can_kgf_output2 = {0};//kgf<67><66><EFBFBD><EFBFBD>
|
||||||
|
UnInfCanKGFOutput un_inf_can_kgf_output1 = {0};//kgf<67><66><EFBFBD><EFBFBD>
|
||||||
|
UnTimeOutput waketimelast = {0};
|
||||||
|
UnTimeOutput wake_time_10min = {0};
|
||||||
|
SystemState sleepstate = STATE_INIT;
|
||||||
|
//PWM 20181227
|
||||||
|
ubyte PwmH[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
||||||
|
|
||||||
|
ubyte powerstate = 0;//<2F><>Դ״̬
|
||||||
|
|
||||||
|
ubyte vcu_can_cnt = 0; // ֡<>ۼ<EFBFBD><DBBC><EFBFBD>
|
||||||
|
ubyte vcu_can_last = 0; // ֡<>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD>ȥֵ
|
||||||
|
bool flg_wake_ecu = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD>־
|
||||||
|
bool flg_KGF = 0;//KGF<47><46><EFBFBD>ѱ<EFBFBD>־
|
||||||
|
|
||||||
|
ubyte can_error_cnt = 0;
|
||||||
|
ubyte can_error_flg = 0;
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------
|
||||||
|
//RTC<54><43>ʱ<EFBFBD><CAB1>
|
||||||
|
//-----------------------------------------------------------------------
|
||||||
|
void RTCProcess(void)
|
||||||
|
{
|
||||||
|
//************************************************************************
|
||||||
|
//////CAN<41><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
if(FlgCan_1){CntCan_1++;if(CntCan_1 >= RgCanPerid){FlgCan_1=0; CntCan_1=0;}}else{CntCan_1=0;}
|
||||||
|
|
||||||
|
//************************************************************************
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//can<61><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
void CanErrorProcess(void)
|
||||||
|
{
|
||||||
|
ubyte ubNSRL;
|
||||||
|
ubyte ubNSRH;
|
||||||
|
ubyte ubResetLEC = 0x3F;
|
||||||
|
//-------------------------------------------
|
||||||
|
EA = 0;
|
||||||
|
|
||||||
|
CAN_pushAMRegs(); // push the CAN Access Mediator Registers
|
||||||
|
SFR_PAGE(_su0, SST0); // switch to page 0
|
||||||
|
|
||||||
|
CAN_vWriteCANAddress(CAN_NSR0);
|
||||||
|
CAN_vReadEN();
|
||||||
|
ubNSRL = CAN_DATA0;
|
||||||
|
ubNSRH = CAN_DATA1;
|
||||||
|
if (ubNSRL & 0x20) // if ALERT
|
||||||
|
{
|
||||||
|
CAN_vInit();
|
||||||
|
}
|
||||||
|
if (ubNSRL & 0x07) // if LEC
|
||||||
|
{
|
||||||
|
ubResetLEC = 0x38;
|
||||||
|
}
|
||||||
|
//// Reset LEC, TXOK, RXOK, ALERT, EWRN, BOFF, LLE, LOE (if set)
|
||||||
|
CAN_vWriteCANAddress(CAN_NSR0); // Addressing CAN_NSR0
|
||||||
|
CAN_DATA0 = ~(ubNSRL & ubResetLEC); // load CAN_NSR0 status register[7-0]
|
||||||
|
CAN_DATA1 = ~(ubNSRH); // load CAN_NSR0 status register[15-8]
|
||||||
|
CAN_vWriteEN(D0_VALID+D1_VALID); // Data0 and Data1 are Valid for
|
||||||
|
|
||||||
|
SFR_PAGE(_su0, RST0); // restore the old SCU page
|
||||||
|
CAN_popAMRegs(); // restore the CAN Access Mediator Registers
|
||||||
|
|
||||||
|
EA = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CanTransmit(void)
|
||||||
|
{
|
||||||
|
//----------------- --------
|
||||||
|
// װ<><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
if(1 == flg_KGF)//<2F>ȴ<EFBFBD>KGF<47><46><EFBFBD>Ѻ<EFBFBD><D1BA>ٷ<EFBFBD><D9B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
{
|
||||||
|
CAN_waitTransmit(DF_SwTx);//<2F><><EFBFBD><EFBFBD>ǰ<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>һ֡<D2BB><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᶪ֡
|
||||||
|
CAN_vLoadData(DF_SwTx, (ulong *)(&UnInfCan_1.ArrData.Arr[0][0]));
|
||||||
|
CAN_vTransmit(DF_SwTx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void canSendTo(ubyte index,ubyte *buf)
|
||||||
|
{
|
||||||
|
ubyte CanTransmitbuf[8] = {0,0,0,0,0,0,0,0};
|
||||||
|
//----------------- --------
|
||||||
|
CanTransmitbuf[2] = buf[0];
|
||||||
|
CanTransmitbuf[3] = buf[1];
|
||||||
|
CanTransmitbuf[0] = buf[2];
|
||||||
|
CanTransmitbuf[1] = buf[3];
|
||||||
|
CanTransmitbuf[6] = buf[4];
|
||||||
|
CanTransmitbuf[7] = buf[5];
|
||||||
|
CanTransmitbuf[4] = buf[6];
|
||||||
|
CanTransmitbuf[5] = buf[7];
|
||||||
|
|
||||||
|
CAN_waitTransmit(index);//<2F><><EFBFBD><EFBFBD>ǰ<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>һ֡<D2BB><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᶪ֡
|
||||||
|
CAN_vLoadData(index, (ulong *)CanTransmitbuf);// װ<><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
CAN_vTransmit(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
//CAN<41><4E><EFBFBD><EFBFBD>һ֡
|
||||||
|
void CanTX(void)
|
||||||
|
{
|
||||||
|
//-----------------------------------
|
||||||
|
UnInfCan_1.ArrData.Arr[0][3] = currenttime.bit_data.year;
|
||||||
|
UnInfCan_1.ArrData.Arr[0][2] = currenttime.bit_data.month;
|
||||||
|
UnInfCan_1.ArrData.Arr[0][1] = currenttime.bit_data.day;
|
||||||
|
UnInfCan_1.ArrData.Arr[0][0] = currenttime.bit_data.hour;
|
||||||
|
UnInfCan_1.ArrData.Arr[0][7] = currenttime.bit_data.week;
|
||||||
|
UnInfCan_1.ArrData.Arr[0][6] = currenttime.bit_data.minute;
|
||||||
|
UnInfCan_1.ArrData.Arr[0][5] = currenttime.bit_data.second;
|
||||||
|
UnInfCan_1.ArrData.Arr[0][4] = sleepstate;
|
||||||
|
|
||||||
|
CanTransmit();
|
||||||
|
}
|
||||||
|
|
||||||
|
//<2F><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
//------------------------------------------------------------------
|
||||||
|
void SystemStateMachine(SystemState *RgSTT)
|
||||||
|
{
|
||||||
|
ubyte i = 0;
|
||||||
|
//----------------------------------------------
|
||||||
|
|
||||||
|
switch (*RgSTT)
|
||||||
|
{
|
||||||
|
//-------------------------------------------
|
||||||
|
case STATE_INIT:
|
||||||
|
if(NORMAL == flg_wake_ecu)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
{
|
||||||
|
if(STOP_PIN == ON) //<2F><>ͣ<EFBFBD><CDA3><EFBFBD>ػ<EFBFBD><D8BB><EFBFBD>
|
||||||
|
{
|
||||||
|
*RgSTT = STATE_ON; // <20><><EFBFBD><EFBFBD>ΪON<4F><4E><EFBFBD><EFBFBD><EFBFBD>빤<EFBFBD><EBB9A4>״̬
|
||||||
|
wake_time_10min.bit_data.day = 0;
|
||||||
|
wake_time_10min.bit_data.hour = 0;
|
||||||
|
wake_time_10min.bit_data.week = 0;
|
||||||
|
wake_time_10min.bit_data.minute = 10;
|
||||||
|
bm8563ClearAlarmFlag(); //<2F><><EFBFBD><EFBFBD>0
|
||||||
|
bm8563SetAlarm(&wake_time_10min);//<2F><><EFBFBD><EFBFBD>10<31><30><EFBFBD><EFBFBD>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*RgSTT = STATE_OFF; // RTC<54><43><EFBFBD>ѣ<EFBFBD>ֱ<EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BC>
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*RgSTT = STATE_INIT;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
//-------------------------------------------
|
||||||
|
case STATE_ON:
|
||||||
|
if(bm8563CheckAlarmFlag() || ( (STOP_PIN == OFF) && (POWER_STANDBY == powerstate) ) || (WAKE_UP_PIN == OFF) )//10<31><30><EFBFBD>ӵ<EFBFBD><D3B5>˻<EFBFBD><CBBB>߰<EFBFBD><DFB0>¼<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBB>߹ر<DFB9><D8B1>ܿ<EFBFBD><DCBF><EFBFBD>
|
||||||
|
{
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||||
|
bm8563ClearAlarmFlag();
|
||||||
|
bm8563SetAlarm(&sleeptime);
|
||||||
|
KGF_PIN = 0; //KGF<47><46><EFBFBD><EFBFBD>
|
||||||
|
CAN_PIN = 1; //canоƬ<D0BE><C6AC><EFBFBD><EFBFBD>
|
||||||
|
BATTERY_PIN = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*RgSTT = STATE_ON; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><D1BA><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
PS_vSetPowerDown();//<2F><><EFBFBD><EFBFBD>
|
||||||
|
}
|
||||||
|
else if( (POWER_WORKING == powerstate) || (POWER_EMERGENCY == powerstate) )//<2F><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD>״̬
|
||||||
|
{
|
||||||
|
*RgSTT = STATE_ON2; // <20><><EFBFBD><EFBFBD>STATE_ON2
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*RgSTT = STATE_ON; // <20><><EFBFBD><EFBFBD>
|
||||||
|
}
|
||||||
|
// <20><><EFBFBD><EFBFBD>ON״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
break;
|
||||||
|
//-------------------------------------------
|
||||||
|
case STATE_ON2:
|
||||||
|
if(POWER_STANDBY == powerstate)//<2F>µ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>ON<4F><4E>ʱ<EFBFBD>ж<EFBFBD>
|
||||||
|
{
|
||||||
|
*RgSTT = STATE_ON; //
|
||||||
|
wake_time_10min.bit_data.day = 0;
|
||||||
|
wake_time_10min.bit_data.hour = 0;
|
||||||
|
wake_time_10min.bit_data.week = 0;
|
||||||
|
wake_time_10min.bit_data.minute = 10;
|
||||||
|
bm8563ClearAlarmFlag(); //<2F><><EFBFBD><EFBFBD>0
|
||||||
|
bm8563SetAlarm(&wake_time_10min);//<2F><><EFBFBD><EFBFBD>10<31><30><EFBFBD><EFBFBD>
|
||||||
|
}
|
||||||
|
else if(WAKE_UP_PIN == OFF)//<2F>ܿ<EFBFBD><DCBF>عر<D8B9>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
{
|
||||||
|
bm8563ClearAlarmFlag();
|
||||||
|
bm8563SetAlarm(&sleeptime);
|
||||||
|
KGF_PIN = 0; //KGF<47><46><EFBFBD><EFBFBD>
|
||||||
|
CAN_PIN = 1; //canоƬ<D0BE><C6AC><EFBFBD><EFBFBD>
|
||||||
|
BATTERY_PIN = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*RgSTT = STATE_ON2; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><D1BA><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
PS_vSetPowerDown();//<2F><><EFBFBD><EFBFBD>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*RgSTT = STATE_ON2; // <20><><EFBFBD><EFBFBD>
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
//-------------------------------------------
|
||||||
|
case STATE_OFF:
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´λ<C2B4><CEBB><EFBFBD>
|
||||||
|
bm8563ClearAlarmFlag();
|
||||||
|
bm8563SetAlarm(&waketime);
|
||||||
|
memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
||||||
|
|
||||||
|
*RgSTT = STATE_OFF2; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBC><EFBFBD>
|
||||||
|
break;
|
||||||
|
|
||||||
|
//-------------------------------------------
|
||||||
|
case STATE_OFF2:
|
||||||
|
if (STOP_PIN == ON) //<2F>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
{
|
||||||
|
*RgSTT = STATE_ON; // <20><><EFBFBD><EFBFBD>ΪON<4F><4E><EFBFBD><EFBFBD><EFBFBD>빤<EFBFBD><EBB9A4>״̬
|
||||||
|
wake_time_10min.bit_data.day = 0;
|
||||||
|
wake_time_10min.bit_data.hour = 0;
|
||||||
|
wake_time_10min.bit_data.week = 0;
|
||||||
|
wake_time_10min.bit_data.minute = 10;
|
||||||
|
bm8563ClearAlarmFlag(); //<2F><><EFBFBD><EFBFBD>0
|
||||||
|
bm8563SetAlarm(&wake_time_10min);//<2F><><EFBFBD><EFBFBD>10<31><30><EFBFBD><EFBFBD>
|
||||||
|
}
|
||||||
|
else if(POWER_WORKING == powerstate)//<2F><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD>״̬
|
||||||
|
{
|
||||||
|
*RgSTT = STATE_ON2; // <20><><EFBFBD><EFBFBD>״̬
|
||||||
|
}
|
||||||
|
else if(0 != memcmp(&waketimelast,&waketime,sizeof(UnTimeOutput)))//<2F>Ƚ<EFBFBD>ֵ<EFBFBD>Ƿ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
{
|
||||||
|
memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
||||||
|
bm8563SetAlarm(&waketime);
|
||||||
|
*RgSTT = STATE_OFF2; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><D1BA><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
}
|
||||||
|
else if(bm8563CheckAlarmFlag()) //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD>䵽
|
||||||
|
{
|
||||||
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||||
|
bm8563ClearAlarmFlag();
|
||||||
|
bm8563SetAlarm(&sleeptime);
|
||||||
|
KGF_PIN = 0; //KGF<47><46><EFBFBD><EFBFBD>
|
||||||
|
CAN_PIN = 1; //canоƬ<D0BE><C6AC><EFBFBD><EFBFBD>
|
||||||
|
BATTERY_PIN = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
*RgSTT = STATE_OFF2; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><D1BA><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
PS_vSetPowerDown();//<2F><><EFBFBD><EFBFBD>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*RgSTT = STATE_OFF2; // <20>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// switch (*RgSTT)
|
||||||
|
// {
|
||||||
|
// //-------------------------------------------
|
||||||
|
// case STATE_INIT:
|
||||||
|
// if(1 == flgwakeecu)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// {
|
||||||
|
// if (WAKE_UP_PIN == ON) {
|
||||||
|
// *RgSTT = STATE_ON; // <20><><EFBFBD><EFBFBD>ΪON<4F><4E><EFBFBD><EFBFBD><EFBFBD>빤<EFBFBD><EBB9A4>״̬
|
||||||
|
// } else {
|
||||||
|
// *RgSTT = STATE_OFF; // <20><><EFBFBD><EFBFBD>ΪOFF<46><46>ֱ<EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BC>
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// *RgSTT = STATE_INIT;
|
||||||
|
// }
|
||||||
|
// break;
|
||||||
|
|
||||||
|
// //-------------------------------------------
|
||||||
|
// case STATE_ON:
|
||||||
|
// if( (WAKE_UP_PIN == OFF) || ( (STOP_PIN == OFF) && (POWER_STANDBY == powerstate) ) )//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD><DCBF>ضϿ<D8B6><CFBF><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>ذ<EFBFBD><D8B0><EFBFBD><EFBFBD>Ҵ<EFBFBD><D2B4><EFBFBD><EFBFBD>µ<EFBFBD>ģʽ
|
||||||
|
// {
|
||||||
|
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´λ<C2B4><CEBB><EFBFBD>
|
||||||
|
// bm8563SetAlarm(&sleeptime);
|
||||||
|
// *RgSTT = STATE_OFF; // <20><><EFBFBD><EFBFBD>ΪOFF<46><46>ֱ<EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><D7BC>
|
||||||
|
// KGF_PIN = 0; //KGF<47><46><EFBFBD><EFBFBD>
|
||||||
|
// CAN_PIN = 1; //canоƬ<D0BE><C6AC><EFBFBD><EFBFBD>
|
||||||
|
// PS_vSetPowerDown();//<2F><><EFBFBD><EFBFBD>
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// *RgSTT = STATE_ON; // <20><><EFBFBD><EFBFBD>ΪON<4F><4E><EFBFBD><EFBFBD><EFBFBD>빤<EFBFBD><EBB9A4>״̬
|
||||||
|
// }
|
||||||
|
// // <20><><EFBFBD><EFBFBD>ON״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// break;
|
||||||
|
|
||||||
|
// //-------------------------------------------
|
||||||
|
// case STATE_OFF:
|
||||||
|
// if (WAKE_UP_PIN == ON) {
|
||||||
|
// *RgSTT = STATE_ON; // <20>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>
|
||||||
|
// } else {
|
||||||
|
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´λ<C2B4><CEBB><EFBFBD>
|
||||||
|
// bm8563SetAlarm(&waketime);
|
||||||
|
//
|
||||||
|
// memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
||||||
|
//
|
||||||
|
// *RgSTT = STATE_OFF2; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBC><EFBFBD>
|
||||||
|
// }
|
||||||
|
// break;
|
||||||
|
|
||||||
|
// //-------------------------------------------
|
||||||
|
// case STATE_OFF2:
|
||||||
|
// if (WAKE_UP_PIN == ON) //<2F>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// {
|
||||||
|
// *RgSTT = STATE_ON; // <20>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>
|
||||||
|
// }
|
||||||
|
// else if(0 != memcmp(&waketimelast,&waketime,sizeof(UnTimeOutput)))//<2F>Ƚ<EFBFBD>ֵ<EFBFBD>Ƿ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// {
|
||||||
|
// memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
||||||
|
// bm8563SetAlarm(&waketime);
|
||||||
|
// *RgSTT = STATE_OFF2; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><D1BA><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// }
|
||||||
|
// else if (bm8563CheckAlarmFlag())
|
||||||
|
// {
|
||||||
|
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||||
|
// bm8563ClearAlarmFlag();
|
||||||
|
//
|
||||||
|
// bm8563SetAlarm(&sleeptime);
|
||||||
|
// KGF_PIN = 0; //KGF<47><46><EFBFBD><EFBFBD>
|
||||||
|
// CAN_PIN = 1; //canоƬ<D0BE><C6AC><EFBFBD><EFBFBD>
|
||||||
|
// *RgSTT = STATE_OFF2; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><D1BA><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
// PS_vSetPowerDown();//<2F><><EFBFBD><EFBFBD>
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// *RgSTT = STATE_OFF2; // <20>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>
|
||||||
|
// }
|
||||||
|
// break;
|
||||||
|
// default:break;
|
||||||
|
// }
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//CAN<41><4E><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
|
||||||
|
void CanRXTX(void)
|
||||||
|
{
|
||||||
|
stCAN_SWObj StrCanRx = {0};
|
||||||
|
uword tmp = 0;
|
||||||
|
ubyte i = 0,j = 0;
|
||||||
|
uword TimeTemp = 0;
|
||||||
|
uword HoursTemp = 0;
|
||||||
|
uword DaysTemp = 0;
|
||||||
|
//------------------------------------
|
||||||
|
if(CAN_ubNewData(DF_RXTIME))
|
||||||
|
{
|
||||||
|
CAN_vGetMsgObj(DF_RXTIME, &StrCanRx);
|
||||||
|
|
||||||
|
un_time_output1.arr[3] = StrCanRx.ulDATAL.ubDB[0];
|
||||||
|
un_time_output1.arr[2] = StrCanRx.ulDATAL.ubDB[1];
|
||||||
|
un_time_output1.arr[1] = StrCanRx.ulDATAL.ubDB[2];
|
||||||
|
un_time_output1.arr[0] = StrCanRx.ulDATAL.ubDB[3];
|
||||||
|
un_time_output1.arr[7] = StrCanRx.ulDATAH.ubDB[0];
|
||||||
|
un_time_output1.arr[6] = StrCanRx.ulDATAH.ubDB[1];
|
||||||
|
un_time_output1.arr[5] = StrCanRx.ulDATAH.ubDB[2];
|
||||||
|
un_time_output1.arr[4] = StrCanRx.ulDATAH.ubDB[3];
|
||||||
|
|
||||||
|
CAN_vReleaseObj(DF_RXTIME);
|
||||||
|
|
||||||
|
bm8563SetTime(&un_time_output1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if(CAN_ubNewData(DF_SwRxKGF2))//<2F>ȴ<EFBFBD>KGF<47><46><EFBFBD><EFBFBD>
|
||||||
|
{
|
||||||
|
CAN_vGetMsgObj(DF_SwRxKGF2, &StrCanRx);
|
||||||
|
|
||||||
|
CAN_vReleaseObj(DF_SwRxKGF2);
|
||||||
|
|
||||||
|
flg_KGF = 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------
|
||||||
|
if(CAN_ubNewData(DF_SwRx))
|
||||||
|
{
|
||||||
|
CAN_vGetMsgObj(DF_SwRx, &StrCanRx);
|
||||||
|
|
||||||
|
UnInfCan_1.ArrData.ArrRX[0][3] = StrCanRx.ulDATAL.ubDB[0];
|
||||||
|
UnInfCan_1.ArrData.ArrRX[0][2] = StrCanRx.ulDATAL.ubDB[1];
|
||||||
|
UnInfCan_1.ArrData.ArrRX[0][1] = StrCanRx.ulDATAL.ubDB[2];
|
||||||
|
UnInfCan_1.ArrData.ArrRX[0][0] = StrCanRx.ulDATAL.ubDB[3];
|
||||||
|
UnInfCan_1.ArrData.ArrRX[0][7] = StrCanRx.ulDATAH.ubDB[0];
|
||||||
|
UnInfCan_1.ArrData.ArrRX[0][6] = StrCanRx.ulDATAH.ubDB[1];
|
||||||
|
UnInfCan_1.ArrData.ArrRX[0][5] = StrCanRx.ulDATAH.ubDB[2];
|
||||||
|
UnInfCan_1.ArrData.ArrRX[0][4] = StrCanRx.ulDATAH.ubDB[3];
|
||||||
|
|
||||||
|
CAN_vReleaseObj(DF_SwRx);
|
||||||
|
|
||||||
|
vcu_can_cnt ++;//<2F>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><DFBC><EFBFBD><EFBFBD>ۼ<EFBFBD>
|
||||||
|
|
||||||
|
powerstate = UnInfCan_1.ArrData.ArrRX[0][4];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ״̬
|
||||||
|
|
||||||
|
//<2F>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||||
|
TimeTemp = UnInfCan_1.ArrData.ArrRX[0][0] + ((ulong)UnInfCan_1.ArrData.ArrRX[0][1] << 8) ;//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||||
|
|
||||||
|
// <20><><EFBFBD><EFBFBD> <20><> Сʱ
|
||||||
|
HoursTemp = TimeTemp / 60;
|
||||||
|
sleeptime.bit_data.minute = TimeTemp % 60;
|
||||||
|
|
||||||
|
// Сʱ <20><> <20><>
|
||||||
|
DaysTemp = HoursTemp / 24;
|
||||||
|
sleeptime.bit_data.hour = HoursTemp % 24;
|
||||||
|
|
||||||
|
if(DaysTemp >= 31)//<2F>³<EFBFBD><C2B3><EFBFBD><EFBFBD><EFBFBD>Χ
|
||||||
|
{
|
||||||
|
sleeptime.bit_data.day = 31;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sleeptime.bit_data.day = DaysTemp;
|
||||||
|
}
|
||||||
|
|
||||||
|
//<2F>趨<EFBFBD><E8B6A8><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||||
|
TimeTemp = UnInfCan_1.ArrData.ArrRX[0][2] + ((ulong)UnInfCan_1.ArrData.ArrRX[0][3] << 8);//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||||
|
|
||||||
|
// <20><><EFBFBD><EFBFBD> <20><> Сʱ
|
||||||
|
HoursTemp = TimeTemp / 60;
|
||||||
|
waketime.bit_data.minute = TimeTemp % 60;
|
||||||
|
|
||||||
|
// Сʱ <20><> <20><>
|
||||||
|
DaysTemp = HoursTemp / 24;
|
||||||
|
waketime.bit_data.hour = HoursTemp % 24;
|
||||||
|
|
||||||
|
if(DaysTemp >= 31)//<2F>³<EFBFBD><C2B3><EFBFBD><EFBFBD><EFBFBD>Χ
|
||||||
|
{
|
||||||
|
waketime.bit_data.day = 31;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
waketime.bit_data.day = DaysTemp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
UnSwSample_1.arr[2] = waketime.bit_data.minute;
|
||||||
|
UnSwSample_1.arr[1] = sleeptime.bit_data.minute;
|
||||||
|
|
||||||
|
//<2F><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
||||||
|
SystemStateMachine(&sleepstate);
|
||||||
|
|
||||||
|
|
||||||
|
//1000ms<6D><73><EFBFBD><EFBFBD>һ֡
|
||||||
|
if(!FlgCan_1)
|
||||||
|
{
|
||||||
|
FlgCan_1 = 1;
|
||||||
|
|
||||||
|
bm8563GetTime(¤ttime);//1s<31><73><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ʱ<EFBFBD><CAB1>
|
||||||
|
// CanTX();
|
||||||
|
|
||||||
|
UnSwSample_1.bit_data.temperature[1] = 0;
|
||||||
|
UnSwSample_1.bit_data.temperature[0] = 0;
|
||||||
|
|
||||||
|
if(vcu_can_cnt == vcu_can_last)//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
||||||
|
{
|
||||||
|
flg_wake_ecu = FAULT;
|
||||||
|
|
||||||
|
un_inf_can_kgf_output2.bit_data.KGF01 = 0x01;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
un_inf_can_kgf_output2.bit_data.KGF02 = 0x01;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
un_inf_can_kgf_output2.bit_data.KGF15 = 0x01;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
un_inf_can_kgf_output2.bit_data.KGF16 = 0x01;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
un_inf_can_kgf_output2.bit_data.KGF03 = 0x01;// ң<><D2A3><EFBFBD><EFBFBD>
|
||||||
|
un_inf_can_kgf_output2.bit_data.KGF05 = 0x01;// <20><><EFBFBD>罻<EFBFBD><E7BDBB><EFBFBD><EFBFBD>
|
||||||
|
un_inf_can_kgf_output2.bit_data.KGF06 = 0x01;// <20><><EFBFBD>罻<EFBFBD><E7BDBB><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
un_inf_can_kgf_output2.bit_data.KGF04 = 0x01;//KGF20<32>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
un_inf_can_kgf_output1.bit_data.KGF13 = 0x01;// <20><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
|
if(1 == flg_KGF)//<2F>ȴ<EFBFBD>KGF<47><46><EFBFBD>Ѻ<EFBFBD><D1BA>ٷ<EFBFBD><D9B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
{
|
||||||
|
canSendTo(DF_SwTxKGF2,(ubyte *)&un_inf_can_kgf_output2.arr[0]);
|
||||||
|
canSendTo(DF_SwTxKGF1,(ubyte *)&un_inf_can_kgf_output1.arr[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
flg_wake_ecu = NORMAL;
|
||||||
|
vcu_can_last = vcu_can_cnt;//<2F><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
|
||||||
|
}
|
||||||
|
|
||||||
|
GetTemp();//1s<31>ɼ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD>¶<EFBFBD>
|
||||||
|
UnSwSample_1.bit_data.emergency_stop_switch = STOP_PIN;
|
||||||
|
UnSwSample_1.bit_data.High_voltage_switch = ~WAKE_UP_PIN;
|
||||||
|
UnSwSample_1.bit_data.CH03 = flg_wake_ecu;
|
||||||
|
|
||||||
|
if(1 == flg_KGF)//<2F>ȴ<EFBFBD>KGF<47><46><EFBFBD>Ѻ<EFBFBD><D1BA>ٷ<EFBFBD><D9B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
{
|
||||||
|
canSendTo(DF_SwTxTemp,(ubyte *)&UnSwSample_1);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if( (0x40 == can_error_cnt) || (0x80 == can_error_cnt) )//20250625<32>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
||||||
|
{
|
||||||
|
can_error_flg = can_error_cnt;
|
||||||
|
CAN_vInit();
|
||||||
|
can_error_cnt = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user