解决温度采集延时问题

This commit is contained in:
2025-11-18 15:40:38 +08:00
parent 4f4a1635ab
commit daa4fd6bd3
12 changed files with 581 additions and 156 deletions

76
CAN.C
View File

@@ -283,6 +283,7 @@ void CAN_vInit(void)
CAN_vSetListCommand(0x010B0002); // MO11 for list 1 CAN_vSetListCommand(0x010B0002); // MO11 for list 1
CAN_vSetListCommand(0x010C0002); // MO12 for list 1 CAN_vSetListCommand(0x010C0002); // MO12 for list 1
CAN_vSetListCommand(0x010D0002); // MO13 for list 1 CAN_vSetListCommand(0x010D0002); // MO13 for list 1
CAN_vSetListCommand(0x010E0002); // MO14 for list 1
/// ----------------------------------------------------------------------- /// -----------------------------------------------------------------------
/// Configuration of the CAN Message Objects 0 - 31: /// Configuration of the CAN Message Objects 0 - 31:
@@ -1004,7 +1005,80 @@ void CAN_vInit(void)
/// ----------------------------------------------------------------------- /// -----------------------------------------------------------------------
/// Configuration of Message Object 14: /// Configuration of Message Object 14:
/// ----------------------------------------------------------------------- /// -----------------------------------------------------------------------
/// - message object 14 is not valid /// - message object 14 is valid
/// - message object is used as receive object
/// - this message object is assigned to list 1 (node 0)
//--------------MOCTR14 = 0x00A00000---------------------------------------
CAN_vWriteCANAddress(CAN_MOCTR14); // Addressing MO14 control register
CAN_vWriteAMData(0x00A00000); // load MO14 control register
// CAN Address pointing to the CAN_MOAR14
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
/// - priority class 3; transmit acceptance filtering is based on the list
/// order (like class 1)
/// - extended 29-bit identifier
/// - identifier 29-bit: 0x11000003
//--------------MOAR14 = 0xF1000003---------------------------------------
CAN_vWriteAMData(0xF1000003); // load MO14 arbitration register
// CAN Address pointing to the CAN_MODATAH14
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
//--------------MODATAH14 = 0x00000000---------------------------------------
CAN_vWriteAMData(0x00000000); // load MO14 data register high
// CAN Address pointing to the CAN_MODATAL14
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
//--------------MODATAL14 = 0x00000000---------------------------------------
CAN_vWriteAMData(0x00000000); // load MO14 data register low
// CAN Address pointing to the CAN_MOAMR14
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
/// - only accept receive frames with matching IDE bit
/// - acceptance mask 29-bit: 0x1FFFFFFF
//--------------CAN_MOAMR14 = 0x3FFFFFFF------------------------------------
CAN_vWriteAMData(0x3FFFFFFF); // load MO14 acceptance mask register
// CAN Address pointing to the CAN_MOIPR14
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
/// - use message pending register 0 bit position 14
//--------------MOIPR14 = 0x00000E00---------------------------------------
CAN_vWriteAMData(0x00000E00); // load MO14 interrupt pointer register
// CAN Address pointing to the CAN_MOFGPR14
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
//--------------MOFGPR14 = 0x00000000---------------------------------------
CAN_vWriteAMData(0x00000000); // load MO14 FIFO/gateway pointer register
// CAN Address pointing to the CAN_MOFCR14
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
/// - this object is a STANDARD MESSAGE OBJECT
/// - 8 valid data bytes
//--------------MOFCR14 = 0x08000000---------------------------------------
CAN_vWriteAMData(0x08000000); // load MO14 function control register
/// ----------------------------------------------------------------------- /// -----------------------------------------------------------------------
/// Configuration of Message Object 15: /// Configuration of Message Object 15:
/// ----------------------------------------------------------------------- /// -----------------------------------------------------------------------

File diff suppressed because one or more lines are too long

12
IO.C
View File

@@ -188,10 +188,8 @@ void IO_vInit(void)
/// - is used as general input /// - is used as general input
/// - pull-up device is assigned /// - pull-up device is assigned
/// P1.4: /// P1.4:
/// - is used as general purpose output /// - is used as general input
/// - push/pull output is selected /// - pull-up device is assigned
/// - the pin status is low level
/// - pull device is disabled (tristate)
/// P1.5: /// P1.5:
/// - is used as general input /// - is used as general input
/// - pull-up device is assigned /// - pull-up device is assigned
@@ -201,13 +199,11 @@ void IO_vInit(void)
/// - the pin status is low level /// - the pin status is low level
/// - pull device is disabled (tristate) /// - pull device is disabled (tristate)
SFR_PAGE(_pp1, noSST); // switch to page 1 SFR_PAGE(_pp1, noSST); // switch to page 1
P1_PUDSEL = 0xFF; // load pullup/pulldown select register P1_PUDEN = 0xBF; // load pullup/pulldown enable register
P1_PUDEN = 0xAF; // load pullup/pulldown enable register
SFR_PAGE(_pp0, noSST); // switch to page 0 SFR_PAGE(_pp0, noSST); // switch to page 0
P1_DIR = 0x50; // load direction register P1_DIR = 0x40; // load direction register
/// ----------------------------------------------------------------------- /// -----------------------------------------------------------------------
/// Configuration of Port P2: /// Configuration of Port P2:

16
MAIN.C
View File

@@ -235,13 +235,27 @@ void main(void)
// SetConfig(1,CFG_MPS_Single,CFG_Repeatbility_High); // SetConfig(1,CFG_MPS_Single,CFG_Repeatbility_High);
RomNum = Search_ROM(romid); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD>ROM ID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>romid<69><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD> // RomNum = Search_ROM(romid); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD>ROM ID<49><44><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>romid<69><64><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD>
// if(1 == power_state)//<2F><><EFBFBD><EFBFBD>ѲŸ<D1B2><C5B8><EFBFBD>ʱ<EFBFBD><CAB1> // if(1 == power_state)//<2F><><EFBFBD><EFBFBD>ѲŸ<D1B2><C5B8><EFBFBD>ʱ<EFBFBD><CAB1>
// { // {
bm8563SetTime(&inittime);//20250802 <20><>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊʱ<CEAA><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> bm8563SetTime(&inittime);//20250802 <20><>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊʱ<CEAA><EFBFBD>Ե<EFBFBD><D4B5><EFBFBD><EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// } // }
//E3<45><33>ʼ<EFBFBD><CABC> 20251117
un_inf_can_kgf_output1.bit_data.KGF01 = 0x01; // E3
un_inf_can_kgf_output1.bit_data.KGF02 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
un_inf_can_kgf_output1.bit_data.KGF03 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
un_inf_can_kgf_output1.bit_data.KGF05 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
un_inf_can_kgf_output1.bit_data.KGF06 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
un_inf_can_kgf_output1.bit_data.KGF07 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
un_inf_can_kgf_output1.bit_data.KGF08 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
un_inf_can_kgf_output1.bit_data.KGF09 = 0 ; // <20><><EFBFBD><EFBFBD>
un_inf_can_kgf_output1.bit_data.KGF11 = 0x01; // <20><>װ
un_inf_can_kgf_output1.bit_data.KGF12 = 0x01; // <20><>װ
un_inf_can_kgf_output1.bit_data.KGF14 = 0 ; // <20><>
un_inf_can_kgf_output1.bit_data.KGF15 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
un_inf_can_kgf_output1.bit_data.KGF16 = 0x01; // ң<><D2A3><EFBFBD><EFBFBD>
while(1) while(1)
{ {

View File

@@ -133,9 +133,10 @@ void SHINT_vInit(void)
IEN0 |= 0x20; // load interrupt enable register 0 IEN0 |= 0x20; // load interrupt enable register 0
/// - Timer21 Interrupt is Selected
IEN1 |= 0x00; // load interrupt enable register 1 IEN1 |= 0x04; // load interrupt enable register 1
// USER CODE BEGIN (SHINT_Init,3) // USER CODE BEGIN (SHINT_Init,3)
@@ -306,6 +307,86 @@ RTCProcess();
} // End of function SHINT_viXINTR5Isr } // End of function SHINT_viXINTR5Isr
//****************************************************************************
// @Function void SHINT_viXINTR8Isr(void)
//
//----------------------------------------------------------------------------
// @Description This is the service routine for the shared interrupt node
// XINTR8. XINTR8 ISR Node is shared by External Interrupt
// 2,Timer 21,CORDIC,UART1,UART1 Fractional Divider(BRG
// Interrupt), and MDU[1:0]. Depending on the selected module
// interrupt it is called.
// EXT2 - It is called for the External interrupt 2.
// T21 - Depending on the selected operating mode it is called
// when TF2 is set by an overflow or underflow of the timer 21
// register or when EXF2 is set by a negative transition on
// T2EX.
// UART1 - It is called after the BRG timer overflows and sets
// the NDOV bit.
// It is called after each transmission (flag TI_1 set) or
// reception (flag RI_1 set) of a data unit.
// Please note that you have to add application specific code
// to this function.
//
//----------------------------------------------------------------------------
// @Returnvalue none
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2025/11/17
//
//****************************************************************************
// 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 (SHINT_XINTR8Isr,1)
// USER CODE END
void SHINT_viXINTR8Isr(void) interrupt XINTR8INT
{
// USER CODE BEGIN (SHINT_XINTR8Isr,2)
// USER CODE END
EA = 0; // disable global interrupt
_push_(SYSCON0); // push the current RMAP
SET_RMAP(); // sets RMAP
// Timer 21 interrupt handling section...
if (TF2)
{
// a timer 21 overflow has occured
TF2 = 0;
// USER CODE BEGIN (SHINT_XINTR8Isr,4)
// USER CODE END
}
// USER CODE BEGIN (SHINT_XINTR8Isr,9)
// USER CODE END
_pop_(SYSCON0); // restore the old RMAP
EA = 1; // enable global interrupt
} // End of function SHINT_viXINTR8Isr
// USER CODE BEGIN (SHARED_INT_General,10) // USER CODE BEGIN (SHARED_INT_General,10)
// USER CODE END // USER CODE END

View File

@@ -96,6 +96,8 @@ void SHINT_vInit(void);
#define XINTR5INT 5 #define XINTR5INT 5
#define XINTR8INT 8
// USER CODE BEGIN (SHARED_INT_Header,9) // USER CODE BEGIN (SHARED_INT_Header,9)
// USER CODE END // USER CODE END

181
T21.C Normal file
View File

@@ -0,0 +1,181 @@
//****************************************************************************
// @Module Timer 21
// @Filename T21.C
// @Project CL2.0.dav
//----------------------------------------------------------------------------
// @Controller Infineon XC886CLM-8FF
//
// @Compiler Keil
//
// @Codegenerator 1.3
//
// @Description: This file contains functions that use the T21 module.
//
//----------------------------------------------------------------------------
// @Date 2025/11/17 18:48:53
//
//****************************************************************************
// USER CODE BEGIN (T21_General,1)
// USER CODE END
//****************************************************************************
// @Project Includes
//****************************************************************************
#include "MAIN.H"
// USER CODE BEGIN (T21_General,2)
// USER CODE END
//****************************************************************************
// @Macros
//****************************************************************************
// USER CODE BEGIN (T21_General,3)
// USER CODE END
//****************************************************************************
// @Defines
//****************************************************************************
// USER CODE BEGIN (T21_General,4)
// USER CODE END
//****************************************************************************
// @Typedefs
//****************************************************************************
// USER CODE BEGIN (T21_General,5)
// USER CODE END
//****************************************************************************
// @Imported Global Variables
//****************************************************************************
// USER CODE BEGIN (T21_General,6)
// USER CODE END
//****************************************************************************
// @Global Variables
//****************************************************************************
// USER CODE BEGIN (T21_General,7)
// USER CODE END
//****************************************************************************
// @External Prototypes
//****************************************************************************
// USER CODE BEGIN (T21_General,8)
// USER CODE END
//****************************************************************************
// @Prototypes Of Local Functions
//****************************************************************************
// USER CODE BEGIN (T21_General,9)
// USER CODE END
//****************************************************************************
// @Function void T21_vInit(void)
//
//----------------------------------------------------------------------------
// @Description This is the initialization function of the Timer 21
// function library. It is assumed that the SFRs used by this
// library are in their reset state.
//
// The following SFRs and SFR fields will be initialized:
// T21_RC2H/RC2L - reload/capture timer 21 register
// T21_T2H/T2L - timer 21 register
// EX2 - timer 21 interrupt enable
// T21_T2MOD - timer 21 mode register
// CP/RL2 - Capture/Reload select
// EXEN2 - External enable control
// TR2 - Timer21 run control
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2025/11/17
//
//****************************************************************************
// USER CODE BEGIN (T21_Init,1)
// USER CODE END
void T21_vInit(void)
{
// USER CODE BEGIN (T21_Init,2)
// USER CODE END
// -----------------------------------------------------------------------
// Operating Mode
// -----------------------------------------------------------------------
/// 16-bit timer function with automatic reload when timer 21 overflows
/// Prescaler enabled - input clock = fPCLK
/// the timer 21 resolution is .042 ?s
/// the timer 21 overflow is 1.000 ?s
/// timer 21 interrupt: enabled
/// timer 21 will be started
// -----------------------------------------------------------------------
// Register Initialization
// -----------------------------------------------------------------------
SET_RMAP();
T21_T2L = 0xE8; // load timer 21 register, low byte
T21_T2H = 0xFF; // load timer 21 register, high byte
T21_RC2L = 0xE8; // load timer 21 reload/capture register,
// low byte
T21_RC2H = 0xFF; // load timer 21 reload/capture register,
// high byte
T21_T2MOD = 0x10; // load timer 21 mode register
/// Timer 21 Interrupt enable bit is set in SHINT_vInit() function
// USER CODE BEGIN (T21_Init,3)
// USER CODE END
TR2 = 1; // start timer
RESET_RMAP();
} // End of function T21_vInit
// USER CODE BEGIN (T21_General,10)
// USER CODE END

104
T21.H Normal file
View File

@@ -0,0 +1,104 @@
//****************************************************************************
// @Module Timer 21
// @Filename T21.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 T21 module.
//
//----------------------------------------------------------------------------
// @Date 2025/11/17 18:48:53
//
//****************************************************************************
// USER CODE BEGIN (T21_Header,1)
// USER CODE END
#ifndef _T21_H_
#define _T21_H_
//****************************************************************************
// @Project Includes
//****************************************************************************
// USER CODE BEGIN (T21_Header,2)
// USER CODE END
//****************************************************************************
// @Macros
//****************************************************************************
// USER CODE BEGIN (T21_Header,3)
// USER CODE END
//****************************************************************************
// @Defines
//****************************************************************************
// USER CODE BEGIN (T21_Header,4)
// USER CODE END
//****************************************************************************
// @Typedefs
//****************************************************************************
// USER CODE BEGIN (T21_Header,5)
// USER CODE END
//****************************************************************************
// @Imported Global Variables
//****************************************************************************
// USER CODE BEGIN (T21_Header,6)
// USER CODE END
//****************************************************************************
// @Global Variables
//****************************************************************************
// USER CODE BEGIN (T21_Header,7)
// USER CODE END
//****************************************************************************
// @Prototypes Of Global Functions
//****************************************************************************
void T21_vInit(void);
// USER CODE BEGIN (T21_Header,8)
// USER CODE END
//****************************************************************************
// @Interrupt Vectors
//****************************************************************************
// Shared interrupt vector definitions are defined in SHARED_INT.H
// USER CODE BEGIN (T21_Header,9)
// USER CODE END
#endif // ifndef _T21_H_

46
User.c
View File

@@ -1,4 +1,4 @@
#include "MAIN.H"- #include "MAIN.H"
#include "RTC.H" #include "RTC.H"
#include "temperature.H" #include "temperature.H"
#include <string.h> #include <string.h>
@@ -39,7 +39,7 @@ ubyte can_error_flg = 0;
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
//RTC<54><43>ʱ<EFBFBD><CAB1> 890-= //RTC<54><43>ʱ<EFBFBD><CAB1>
//----------------------------------------------------------------------- //-----------------------------------------------------------------------
void RTCProcess(void) void RTCProcess(void)
{ {
@@ -241,6 +241,24 @@ void CanRXTX(void)
} }
if(CAN_ubNewData(DF_SwZFKGF1))//<2F><><EFBFBD><EFBFBD>E3<45><33>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
CAN_vGetMsgObj(DF_SwZFKGF1, &StrCanRx);
un_inf_can_kgf_output1.arr[2] = StrCanRx.ulDATAL.ubDB[0];
un_inf_can_kgf_output1.arr[3] = StrCanRx.ulDATAL.ubDB[1];
un_inf_can_kgf_output1.arr[0] = StrCanRx.ulDATAL.ubDB[2];
un_inf_can_kgf_output1.arr[1] = StrCanRx.ulDATAL.ubDB[3];
un_inf_can_kgf_output1.arr[6] = StrCanRx.ulDATAH.ubDB[0];
un_inf_can_kgf_output1.arr[7] = StrCanRx.ulDATAH.ubDB[1];
un_inf_can_kgf_output1.arr[4] = StrCanRx.ulDATAH.ubDB[2];
un_inf_can_kgf_output1.arr[5] = StrCanRx.ulDATAH.ubDB[3];
CAN_vReleaseObj(DF_SwZFKGF1);
}
//---------------------------------------------------------- //----------------------------------------------------------
@@ -343,30 +361,6 @@ void CanRXTX(void)
{ {
flg_wake_ecu = FAULT; 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.KGF01 = 0x01; // E3
un_inf_can_kgf_output1.bit_data.KGF02 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
un_inf_can_kgf_output1.bit_data.KGF03 = 0 ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
un_inf_can_kgf_output1.bit_data.KGF05 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
un_inf_can_kgf_output1.bit_data.KGF06 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
un_inf_can_kgf_output1.bit_data.KGF07 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
un_inf_can_kgf_output1.bit_data.KGF08 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
un_inf_can_kgf_output1.bit_data.KGF09 = 0x01; // <20><>װ
un_inf_can_kgf_output1.bit_data.KGF11 = 0x01; // <20><>װ
un_inf_can_kgf_output1.bit_data.KGF12 = 0x01; // <20><><EFBFBD><EFBFBD>
un_inf_can_kgf_output1.bit_data.KGF15 = 0x01; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
un_inf_can_kgf_output1.bit_data.KGF16 = 0x01; // ң<><D2A3><EFBFBD><EFBFBD>
if(1 == flg_KGF)//<2F>ȴ<EFBFBD>KGF<47><46><EFBFBD>Ѻ<EFBFBD><D1BA>ٷ<EFBFBD><D9B7><EFBFBD><EFBFBD><EFBFBD><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_SwTxKGF2,(ubyte *)&un_inf_can_kgf_output2.arr[0]);

View File

@@ -281,12 +281,12 @@ BOOL ReadTempWaiting(uword *iTemp)
} }
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>ǰ8<C7B0><38><EFBFBD>ֽڵ<D6BD>У<EFBFBD><D0A3><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յĵ<D5B5>9<EFBFBD><39>CRC<52>ֽڱȽϡ<C8BD>*/ /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>ǰ8<C7B0><38><EFBFBD>ֽڵ<D6BD>У<EFBFBD><D0A3><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յĵ<D5B5>9<EFBFBD><39>CRC<52>ֽڱȽϡ<C8BD>*/
UnSwSample_1.bit_data.temperature[1] = scrb[8]; // UnSwSample_1.bit_data.temperature[1] = scrb[8];
// if(scrb[8] != MY_OW_CRC8(scrb, 8)) if(scrb[8] != MY_OW_CRC8(scrb, 8))
// { {
// return FALSE; /*CRC<52><43>֤δͨ<CEB4><CDA8>*/ return FALSE; /*CRC<52><43>֤δͨ<CEB4><CDA8>*/
// } }
// UnSwSample_1.bit_data.temperature[1] = *iTemp; // UnSwSample_1.bit_data.temperature[1] = *iTemp;
/*<2A><><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽںϳ<DABA>Ϊ16λ<36>֡<EFBFBD>*/ /*<2A><><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽںϳ<DABA>Ϊ16λ<36>֡<EFBFBD>*/
*iTemp = ((uword)(scr->T_msb) << 8) | scr->T_lsb; *iTemp = ((uword)(scr->T_msb) << 8) | scr->T_lsb;

View File

@@ -36,7 +36,7 @@
#define CFG_Repeatbility_High 0x02 #define CFG_Repeatbility_High 0x02
#define MAXNUM 5 /*总线级联最大芯片数量*/ #define MAXNUM 5 /*<EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
typedef enum { typedef enum {
FALSE = 0, FALSE = 0,
@@ -48,7 +48,7 @@ typedef struct
{ {
char Tha_set_lsb; char Tha_set_lsb;
char Tla_set_lsb; char Tla_set_lsb;
ubyte Cfg; /*系统配置寄存器, RW*/ ubyte Cfg; /*ϵͳ<EFBFBD><EFBFBD><EFBFBD>üĴ<EFBFBD><EFBFBD><EFBFBD>, RW*/
} M601_SCRATCHPAD_WRITE; } M601_SCRATCHPAD_WRITE;
@@ -74,14 +74,14 @@ typedef enum
/*SRAM scratchpad*/ /*SRAM scratchpad*/
typedef struct typedef struct
{ {
ubyte T_lsb; /*The LSB of 温度结果, RO*/ ubyte T_lsb; /*The LSB of <EFBFBD>¶Ƚ<EFBFBD><EFBFBD><EFBFBD>, RO*/
ubyte T_msb; /*The MSB of 温度结果, RO*/ ubyte T_msb; /*The MSB of <EFBFBD>¶Ƚ<EFBFBD><EFBFBD><EFBFBD>, RO*/
ubyte C1_lsb; /*The LSB of 电容通道C1, RO*/ ubyte C1_lsb; /*The LSB of <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>C1, RO*/
ubyte C1_msb; /*The MSB of 电容通道C1, Ro*/ ubyte C1_msb; /*The MSB of <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>C1, Ro*/
ubyte Tha_set_lsb; ubyte Tha_set_lsb;
ubyte Tla_set_lsb; ubyte Tla_set_lsb;
ubyte Cfg; /*系统配置寄存器, RW*/ ubyte Cfg; /*ϵͳ<EFBFBD><EFBFBD><EFBFBD>üĴ<EFBFBD><EFBFBD><EFBFBD>, RW*/
ubyte Status; /*系统状态寄存器, RO*/ ubyte Status; /*ϵͳ״̬<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD>, RO*/
ubyte crc_scr; /*CRC for byte0-7, RO*/ ubyte crc_scr; /*CRC for byte0-7, RO*/
} M601_SCRATCHPAD_READ; } M601_SCRATCHPAD_READ;
@@ -89,64 +89,64 @@ typedef struct
//20250116 增加温度采集字节 //20250116 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶Ȳɼ<EFBFBD><EFBFBD>ֽ<EFBFBD>
typedef struct _StrSwSample typedef struct _StrSwSample
{ {
unsigned int emergency_stop_switch : 1; // 通道1急停开关 unsigned int emergency_stop_switch : 1; // ͨ<EFBFBD><EFBFBD>1<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned int High_voltage_switch : 1; // 通道2高压开关 unsigned int High_voltage_switch : 1; // ͨ<EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned int CH03 : 1; // 通道3 unsigned int CH03 : 1; // ͨ<EFBFBD><EFBFBD>3
unsigned int CH04 : 1; // 通道4 unsigned int CH04 : 1; // ͨ<EFBFBD><EFBFBD>4
unsigned int CH05 : 1; // 通道5 unsigned int CH05 : 1; // ͨ<EFBFBD><EFBFBD>5
unsigned int CH06 : 1; // 通道6 unsigned int CH06 : 1; // ͨ<EFBFBD><EFBFBD>6
unsigned int CH07 : 1; // 通道7 unsigned int CH07 : 1; // ͨ<EFBFBD><EFBFBD>7
unsigned int CH08 : 1; // 通道8 unsigned int CH08 : 1; // ͨ<EFBFBD><EFBFBD>8
unsigned int CH09 : 1; // 通道9 unsigned int CH09 : 1; // ͨ<EFBFBD><EFBFBD>9
unsigned int CH10 : 1; // 通道10 unsigned int CH10 : 1; // ͨ<EFBFBD><EFBFBD>10
unsigned int CH11 : 1; // 通道11 unsigned int CH11 : 1; // ͨ<EFBFBD><EFBFBD>11
unsigned int CH12 : 1; // 通道12 unsigned int CH12 : 1; // ͨ<EFBFBD><EFBFBD>12
unsigned int CH13 : 1; // 通道13 unsigned int CH13 : 1; // ͨ<EFBFBD><EFBFBD>13
unsigned int CH14 : 1; // 通道14 unsigned int CH14 : 1; // ͨ<EFBFBD><EFBFBD>14
unsigned int CH15 : 1; // 通道15 unsigned int CH15 : 1; // ͨ<EFBFBD><EFBFBD>15
unsigned int CH16 : 1; // 通道16 unsigned int CH16 : 1; // ͨ<EFBFBD><EFBFBD>16
unsigned int CH17 : 1; // 通道17 unsigned int CH17 : 1; // ͨ<EFBFBD><EFBFBD>17
unsigned int CH18 : 1; // 通道18 unsigned int CH18 : 1; // ͨ<EFBFBD><EFBFBD>18
unsigned int CH19 : 1; // 通道19 unsigned int CH19 : 1; // ͨ<EFBFBD><EFBFBD>19
unsigned int CH20 : 1; // 通道20 unsigned int CH20 : 1; // ͨ<EFBFBD><EFBFBD>20
unsigned int CH21 : 1; // 通道21 unsigned int CH21 : 1; // ͨ<EFBFBD><EFBFBD>21
unsigned int CH22 : 1; // 通道22 unsigned int CH22 : 1; // ͨ<EFBFBD><EFBFBD>22
unsigned int CH23 : 1; // 通道23 unsigned int CH23 : 1; // ͨ<EFBFBD><EFBFBD>23
unsigned int CH24 : 1; // 通道24 unsigned int CH24 : 1; // ͨ<EFBFBD><EFBFBD>24
unsigned int CH25 : 1; // 通道25 unsigned int CH25 : 1; // ͨ<EFBFBD><EFBFBD>25
unsigned int CH26 : 1; // 通道26 unsigned int CH26 : 1; // ͨ<EFBFBD><EFBFBD>26
unsigned int CH27 : 1; // 通道27 unsigned int CH27 : 1; // ͨ<EFBFBD><EFBFBD>27
unsigned int CH28 : 1; // 通道28 unsigned int CH28 : 1; // ͨ<EFBFBD><EFBFBD>28
unsigned int CH29 : 1; // 通道29 unsigned int CH29 : 1; // ͨ<EFBFBD><EFBFBD>29
unsigned int CH30 : 1; // 通道30 unsigned int CH30 : 1; // ͨ<EFBFBD><EFBFBD>30
unsigned int CH31 : 1; // 通道31 unsigned int CH31 : 1; // ͨ<EFBFBD><EFBFBD>31
unsigned int CH32 : 1; // 通道32 unsigned int CH32 : 1; // ͨ<EFBFBD><EFBFBD>32
// unsigned int CH33 : 1; // 通道33 // unsigned int CH33 : 1; // ͨ<EFBFBD><EFBFBD>33
// unsigned int CH34 : 1; // 通道34 // unsigned int CH34 : 1; // ͨ<EFBFBD><EFBFBD>34
// unsigned int CH35 : 1; // 通道35 // unsigned int CH35 : 1; // ͨ<EFBFBD><EFBFBD>35
// unsigned int CH36 : 1; // 通道36 // unsigned int CH36 : 1; // ͨ<EFBFBD><EFBFBD>36
// unsigned int CH37 : 1; // 通道37 // unsigned int CH37 : 1; // ͨ<EFBFBD><EFBFBD>37
// unsigned int CH38 : 1; // 通道38 // unsigned int CH38 : 1; // ͨ<EFBFBD><EFBFBD>38
// unsigned int CH39 : 1; // 通道39 // unsigned int CH39 : 1; // ͨ<EFBFBD><EFBFBD>39
// unsigned int CH40 : 1; // 通道40 // unsigned int CH40 : 1; // ͨ<EFBFBD><EFBFBD>40
// unsigned int CH41 : 1; // 通道41 // unsigned int CH41 : 1; // ͨ<EFBFBD><EFBFBD>41
// unsigned int CH42 : 1; // 通道42 // unsigned int CH42 : 1; // ͨ<EFBFBD><EFBFBD>42
// unsigned int CH43 : 1; // 通道43 // unsigned int CH43 : 1; // ͨ<EFBFBD><EFBFBD>43
// unsigned int CH44 : 1; // 通道44 // unsigned int CH44 : 1; // ͨ<EFBFBD><EFBFBD>44
// unsigned int reserve : 4; // unsigned int reserve : 4;
unsigned int temperature[2]; // 温度 unsigned int temperature[2]; // <EFBFBD><EFBFBD>
} StrSwSample; } StrSwSample;
typedef union _UnSwSample typedef union _UnSwSample
{ {
StrSwSample bit_data; // 使用定义的结构体变量名 StrSwSample bit_data; // ʹ<EFBFBD>ö<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ľṹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned char arr[sizeof(StrSwSample)]; // 通过结构体类型确定大小 unsigned char arr[sizeof(StrSwSample)]; // ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
} UnSwSample; } UnSwSample;

11
user.H
View File

@@ -8,6 +8,7 @@
#define DF_SwTxKGF2 10 #define DF_SwTxKGF2 10
#define DF_SwTxTemp 12 #define DF_SwTxTemp 12
#define DF_SwRxKGF2 13 #define DF_SwRxKGF2 13
#define DF_SwZFKGF1 14
#define MAX_TIME 43200 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>30<33><30><EFBFBD><EFBFBD> #define MAX_TIME 43200 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>30<33><30><EFBFBD><EFBFBD>
@@ -15,14 +16,12 @@
#define dfPwmH 10 //PWM<57>ĸߵ<C4B8>ƽʱ<C6BD>䣬10<31><30>10ms<6D><73><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>20181227 #define dfPwmH 10 //PWM<57>ĸߵ<C4B8>ƽʱ<C6BD>䣬10<31><30>10ms<6D><73><EFBFBD>ң<EFBFBD><D2A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>20181227
#define WAKE_UP_PIN P1_5 //<2F><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> // <20>޸<EFBFBD>Ϊ<EFBFBD>ɰ汾Ӳ<E6B1BE><D3B2> #define WAKE_UP_PIN P1_5 //<2F><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define KGF_PIN P0_0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #define KGF_PIN P0_0 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define CAN_PIN P1_6 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #define CAN_PIN P1_6 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define STOP_PIN P3_6 //<2F><>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #define STOP_PIN P3_6 //<2F><>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define BATTERY_PIN P1_4 //<2F><><EFBFBD>ؿ<EFBFBD><D8BF>ƽ<EFBFBD> #define BATTERY_PIN P0_0 //<2F><><EFBFBD>ؿ<EFBFBD><D8BF>ƽ<EFBFBD>
#define ON 0 //<2F><><EFBFBD><EFBFBD> #define ON 0 //<2F><><EFBFBD><EFBFBD>
#define OFF 1 //<2F>ɿ<EFBFBD> #define OFF 1 //<2F>ɿ<EFBFBD>
@@ -30,14 +29,12 @@
#define FAULT 0 #define FAULT 0
#define NORMAL 1 #define NORMAL 1
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ״̬ö<CCAC><C3B6> // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ״̬ö<CCAC><C3B6>
typedef enum { typedef enum {
POWER_STANDBY, POWER_STANDBY,
POWER_WORKING, POWER_WORKING,
POWER_EMERGENCY, POWER_EMERGENCY,
POWER_PRE_CHARGE, POWER_PRE_CHARGE,
POWER_NEUTRAL,
POWER_SLEEP POWER_SLEEP
} PowerState; } PowerState;
@@ -106,10 +103,10 @@ extern UnSwOut UnSwOut_1;
extern UnInfCan UnInfCan_1; extern UnInfCan UnInfCan_1;
extern uword CntCan_1; extern uword CntCan_1;
extern bit FlgCan_1; extern bit FlgCan_1;
extern ubyte can_error_cnt; extern ubyte can_error_cnt;
extern ubyte can_error_flg; extern ubyte can_error_flg;
extern UnInfCanKGFOutput un_inf_can_kgf_output1;//kgf<67><66><EFBFBD><EFBFBD> extern UnInfCanKGFOutput un_inf_can_kgf_output1;//kgf<67><66><EFBFBD><EFBFBD>
void CanRXTX(void); void CanRXTX(void);