Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ad771ee812 | |||
| 93baee9527 | |||
| 517a5f9ebb |
7
.vscode/settings.json
vendored
Normal file
7
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"files.associations": {
|
||||
"MAIN.C": "cpp",
|
||||
"CAN.C": "cpp",
|
||||
"temperature.C": "cpp"
|
||||
}
|
||||
}
|
||||
312
CAN.C
312
CAN.C
@@ -12,7 +12,7 @@
|
||||
// @Description: This file contains functions that use the CAN module.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2024/8/22 08:23:16
|
||||
// @Date 2025/1/18 20:45:35
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
// @Parameters None
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2024/8/22
|
||||
// @Date 2025/1/18
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
@@ -150,11 +150,14 @@ void CAN_vInit(void)
|
||||
|
||||
/// General Configuration of the Node 0:
|
||||
/// - set INIT and CCE
|
||||
/// - enable interrupt generation upon a change of BOFF or EWARN or upon a
|
||||
/// set of LLE, LOE or INIT
|
||||
/// - alert interrupt node pointer: MultiCAN SRN 0
|
||||
|
||||
//-----------CAN_NCR0 = 0x00000041-------------------------------------
|
||||
//-----------CAN_NCR0 = 0x00000049-------------------------------------
|
||||
|
||||
CAN_vWriteCANAddress(CAN_NCR0); // Addressing CAN_NCR0
|
||||
CAN_DATA0 = 0x41; // load NODE 0 control register[7-0]
|
||||
CAN_DATA0 = 0x49; // load NODE 0 control register[7-0]
|
||||
CAN_vWriteEN(D0_VALID+ADR_INC); // Data0 is Valid for transmission and
|
||||
// Write is EnabledCAN Address pointing
|
||||
// to the CAN_NSR0.
|
||||
@@ -195,14 +198,14 @@ void CAN_vInit(void)
|
||||
/// - required baud rate = 250.000 kbaud
|
||||
/// - real baud rate = 250.000 kbaud
|
||||
/// - sample point = 75.00 %
|
||||
/// - there are 5 time quanta before sample point
|
||||
/// - there are 2 time quanta after sample point
|
||||
/// - there are 11 time quanta before sample point
|
||||
/// - there are 4 time quanta after sample point
|
||||
/// - the (re)synchronization jump width is 2 time quanta
|
||||
|
||||
//-----------CAN_NBTR0 = 0x00001457-------------------------------------
|
||||
//-----------CAN_NBTR0 = 0x00003A4B-------------------------------------
|
||||
|
||||
CAN_DATA0 = 0x57; // load NBTR0_SJW, BRP
|
||||
CAN_DATA1 = 0x14; // load NBTR0_DIV8, TSEG2, TSEG1
|
||||
CAN_DATA0 = 0x4B; // load NBTR0_SJW, BRP
|
||||
CAN_DATA1 = 0x3A; // load NBTR0_DIV8, TSEG2, TSEG1
|
||||
CAN_vWriteEN(D0_VALID+D1_VALID+ADR_INC); // Data0, 1 are valid for
|
||||
// transmission and Write is
|
||||
// Enabled with Auto
|
||||
@@ -277,7 +280,10 @@ void CAN_vInit(void)
|
||||
CAN_vSetListCommand(0x01070002); // MO7 for list 1
|
||||
CAN_vSetListCommand(0x01090002); // MO9 for list 1
|
||||
CAN_vSetListCommand(0x010A0002); // MO10 for list 1
|
||||
|
||||
CAN_vSetListCommand(0x010B0002); // MO11 for list 1
|
||||
CAN_vSetListCommand(0x010C0002); // MO12 for list 1
|
||||
CAN_vSetListCommand(0x010D0002); // MO13 for list 1
|
||||
|
||||
/// -----------------------------------------------------------------------
|
||||
/// Configuration of the CAN Message Objects 0 - 31:
|
||||
/// -----------------------------------------------------------------------
|
||||
@@ -396,12 +402,12 @@ void CAN_vInit(void)
|
||||
|
||||
/// - priority class 3; transmit acceptance filtering is based on the list
|
||||
/// order (like class 1)
|
||||
/// - standard 11-bit identifier
|
||||
/// - identifier 11-bit: 0x711
|
||||
/// - extended 29-bit identifier
|
||||
/// - identifier 29-bit: 0x15000001
|
||||
|
||||
//--------------MOAR6 = 0xDC440000---------------------------------------
|
||||
//--------------MOAR6 = 0xF5000001---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0xDC440000); // load MO6 arbitration register
|
||||
CAN_vWriteAMData(0xF5000001); // load MO6 arbitration register
|
||||
|
||||
// CAN Address pointing to the CAN_MODATAH6
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
@@ -422,7 +428,7 @@ void CAN_vInit(void)
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
/// - only accept receive frames with matching IDE bit
|
||||
/// - acceptance mask 11-bit: 0x7FF
|
||||
/// - acceptance mask 29-bit: 0x1FFFFFFF
|
||||
|
||||
//--------------CAN_MOAMR6 = 0x3FFFFFFF------------------------------------
|
||||
|
||||
@@ -473,12 +479,12 @@ void CAN_vInit(void)
|
||||
|
||||
/// - priority class 3; transmit acceptance filtering is based on the list
|
||||
/// order (like class 1)
|
||||
/// - standard 11-bit identifier
|
||||
/// - identifier 11-bit: 0x712
|
||||
/// - extended 29-bit identifier
|
||||
/// - identifier 29-bit: 0x15000002
|
||||
|
||||
//--------------MOAR7 = 0xDC480000---------------------------------------
|
||||
//--------------MOAR7 = 0xF5000002---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0xDC480000); // load MO7 arbitration register
|
||||
CAN_vWriteAMData(0xF5000002); // load MO7 arbitration register
|
||||
|
||||
// CAN Address pointing to the CAN_MODATAH7
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
@@ -499,7 +505,7 @@ void CAN_vInit(void)
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
/// - only accept receive frames with matching IDE bit
|
||||
/// - acceptance mask 11-bit: 0x7FF
|
||||
/// - acceptance mask 29-bit: 0x1FFFFFFF
|
||||
|
||||
//--------------CAN_MOAMR7 = 0x3FFFFFFF------------------------------------
|
||||
|
||||
@@ -536,26 +542,26 @@ void CAN_vInit(void)
|
||||
/// Configuration of Message Object 8:
|
||||
/// -----------------------------------------------------------------------
|
||||
/// - message object 8 is valid
|
||||
/// - message object is used as receive object
|
||||
/// - message object is used as transmit object
|
||||
/// - this message object is assigned to list 1 (node 0)
|
||||
|
||||
//--------------MOCTR8 = 0x00A00000---------------------------------------
|
||||
//--------------MOCTR8 = 0x0EA80000---------------------------------------
|
||||
|
||||
CAN_vWriteCANAddress(CAN_MOCTR8); // Addressing MO8 control register
|
||||
|
||||
CAN_vWriteAMData(0x00A00000); // load MO8 control register
|
||||
CAN_vWriteAMData(0x0EA80000); // load MO8 control register
|
||||
|
||||
// CAN Address pointing to the CAN_MOAR8
|
||||
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)
|
||||
/// - standard 11-bit identifier
|
||||
/// - identifier 11-bit: 0x713
|
||||
/// - extended 29-bit identifier
|
||||
/// - identifier 29-bit: 0x11000002
|
||||
|
||||
//--------------MOAR8 = 0xDC4C0000---------------------------------------
|
||||
//--------------MOAR8 = 0xF1000002---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0xDC4C0000); // load MO8 arbitration register
|
||||
CAN_vWriteAMData(0xF1000002); // load MO8 arbitration register
|
||||
|
||||
// CAN Address pointing to the CAN_MODATAH8
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
@@ -576,7 +582,7 @@ void CAN_vInit(void)
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
/// - only accept receive frames with matching IDE bit
|
||||
/// - acceptance mask 11-bit: 0x7FF
|
||||
/// - acceptance mask 29-bit: 0x1FFFFFFF
|
||||
|
||||
//--------------CAN_MOAMR8 = 0x3FFFFFFF------------------------------------
|
||||
|
||||
@@ -705,11 +711,11 @@ void CAN_vInit(void)
|
||||
/// - priority class 3; transmit acceptance filtering is based on the list
|
||||
/// order (like class 1)
|
||||
/// - extended 29-bit identifier
|
||||
/// - identifier 29-bit: 0x11000000
|
||||
/// - identifier 29-bit: 0x14000002
|
||||
|
||||
//--------------MOAR10 = 0xF1000000---------------------------------------
|
||||
//--------------MOAR10 = 0xF4000002---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0xF1000000); // load MO10 arbitration register
|
||||
CAN_vWriteAMData(0xF4000002); // load MO10 arbitration register
|
||||
|
||||
// CAN Address pointing to the CAN_MODATAH10
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
@@ -763,18 +769,238 @@ void CAN_vInit(void)
|
||||
|
||||
CAN_vWriteAMData(0x08000000); // load MO10 function control register
|
||||
|
||||
/// -----------------------------------------------------------------------
|
||||
/// -----------------------------------------------------------------------
|
||||
/// Configuration of Message Object 11:
|
||||
/// -----------------------------------------------------------------------
|
||||
/// - message object 11 is not valid
|
||||
/// - message object 11 is valid
|
||||
/// - message object is used as receive object
|
||||
/// - this message object is assigned to list 1 (node 0)
|
||||
|
||||
//--------------MOCTR11 = 0x00A00000---------------------------------------
|
||||
|
||||
CAN_vWriteCANAddress(CAN_MOCTR11); // Addressing MO11 control register
|
||||
|
||||
CAN_vWriteAMData(0x00A00000); // load MO11 control register
|
||||
|
||||
// CAN Address pointing to the CAN_MOAR11
|
||||
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: 0x15000004
|
||||
|
||||
//--------------MOAR11 = 0xF5000004---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0xF5000004); // load MO11 arbitration register
|
||||
|
||||
// CAN Address pointing to the CAN_MODATAH11
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
|
||||
//--------------MODATAH11 = 0x00000000---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0x00000000); // load MO11 data register high
|
||||
|
||||
// CAN Address pointing to the CAN_MODATAL11
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
//--------------MODATAL11 = 0x00000000---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0x00000000); // load MO11 data register low
|
||||
|
||||
// CAN Address pointing to the CAN_MOAMR11
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
/// - only accept receive frames with matching IDE bit
|
||||
/// - acceptance mask 29-bit: 0x1FFFFFFF
|
||||
|
||||
//--------------CAN_MOAMR11 = 0x3FFFFFFF------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0x3FFFFFFF); // load MO11 acceptance mask register
|
||||
|
||||
// CAN Address pointing to the CAN_MOIPR11
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
/// - use message pending register 0 bit position 11
|
||||
|
||||
//--------------MOIPR11 = 0x00000B00---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0x00000B00); // load MO11 interrupt pointer register
|
||||
|
||||
// CAN Address pointing to the CAN_MOFGPR11
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
|
||||
//--------------MOFGPR11 = 0x00000000---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0x00000000); // load MO11 FIFO/gateway pointer register
|
||||
|
||||
// CAN Address pointing to the CAN_MOFCR11
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
/// - this object is a STANDARD MESSAGE OBJECT
|
||||
/// - 8 valid data bytes
|
||||
|
||||
//--------------MOFCR11 = 0x08000000---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0x08000000); // load MO11 function control register
|
||||
|
||||
/// -----------------------------------------------------------------------
|
||||
/// Configuration of Message Object 12:
|
||||
/// -----------------------------------------------------------------------
|
||||
/// - message object 12 is not valid
|
||||
/// - message object 12 is valid
|
||||
/// - message object is used as transmit object
|
||||
/// - this message object is assigned to list 1 (node 0)
|
||||
|
||||
//--------------MOCTR12 = 0x0EA80000---------------------------------------
|
||||
|
||||
CAN_vWriteCANAddress(CAN_MOCTR12); // Addressing MO12 control register
|
||||
|
||||
CAN_vWriteAMData(0x0EA80000); // load MO12 control register
|
||||
|
||||
// CAN Address pointing to the CAN_MOAR12
|
||||
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: 0x15000003
|
||||
|
||||
//--------------MOAR12 = 0xF5000003---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0xF5000003); // load MO12 arbitration register
|
||||
|
||||
// CAN Address pointing to the CAN_MODATAH12
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
|
||||
//--------------MODATAH12 = 0x00000000---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0x00000000); // load MO12 data register high
|
||||
|
||||
// CAN Address pointing to the CAN_MODATAL12
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
//--------------MODATAL12 = 0x00000000---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0x00000000); // load MO12 data register low
|
||||
|
||||
// CAN Address pointing to the CAN_MOAMR12
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
/// - only accept receive frames with matching IDE bit
|
||||
/// - acceptance mask 29-bit: 0x1FFFFFFF
|
||||
|
||||
//--------------CAN_MOAMR12 = 0x3FFFFFFF------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0x3FFFFFFF); // load MO12 acceptance mask register
|
||||
|
||||
// CAN Address pointing to the CAN_MOIPR12
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
/// - use message pending register 0 bit position 12
|
||||
|
||||
//--------------MOIPR12 = 0x00000C00---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0x00000C00); // load MO12 interrupt pointer register
|
||||
|
||||
// CAN Address pointing to the CAN_MOFGPR12
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
|
||||
//--------------MOFGPR12 = 0x00000000---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0x00000000); // load MO12 FIFO/gateway pointer register
|
||||
|
||||
// CAN Address pointing to the CAN_MOFCR12
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
/// - this object is a STANDARD MESSAGE OBJECT
|
||||
/// - 8 valid data bytes
|
||||
|
||||
//--------------MOFCR12 = 0x08000000---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0x08000000); // load MO12 function control register
|
||||
|
||||
/// -----------------------------------------------------------------------
|
||||
/// Configuration of Message Object 13:
|
||||
/// -----------------------------------------------------------------------
|
||||
/// - message object 13 is not valid
|
||||
/// - message object 13 is valid
|
||||
/// - message object is used as receive object
|
||||
/// - this message object is assigned to list 1 (node 0)
|
||||
|
||||
//--------------MOCTR13 = 0x00A00000---------------------------------------
|
||||
|
||||
CAN_vWriteCANAddress(CAN_MOCTR13); // Addressing MO13 control register
|
||||
|
||||
CAN_vWriteAMData(0x00A00000); // load MO13 control register
|
||||
|
||||
// CAN Address pointing to the CAN_MOAR13
|
||||
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: 0x14000001
|
||||
|
||||
//--------------MOAR13 = 0xF4000001---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0xF4000001); // load MO13 arbitration register
|
||||
|
||||
// CAN Address pointing to the CAN_MODATAH13
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
|
||||
//--------------MODATAH13 = 0x00000000---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0x00000000); // load MO13 data register high
|
||||
|
||||
// CAN Address pointing to the CAN_MODATAL13
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
//--------------MODATAL13 = 0x00000000---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0x00000000); // load MO13 data register low
|
||||
|
||||
// CAN Address pointing to the CAN_MOAMR13
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
/// - accept reception of standard and extended frames
|
||||
/// - acceptance mask 29-bit: 0x1FFFFFFF
|
||||
/// - acceptance mask 11-bit: 0x7FF
|
||||
|
||||
//--------------CAN_MOAMR13 = 0x1FFFFFFF------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0x1FFFFFFF); // load MO13 acceptance mask register
|
||||
|
||||
// CAN Address pointing to the CAN_MOIPR13
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
/// - use message pending register 0 bit position 13
|
||||
|
||||
//--------------MOIPR13 = 0x00000D00---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0x00000D00); // load MO13 interrupt pointer register
|
||||
|
||||
// CAN Address pointing to the CAN_MOFGPR13
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
|
||||
//--------------MOFGPR13 = 0x00000000---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0x00000000); // load MO13 FIFO/gateway pointer register
|
||||
|
||||
// CAN Address pointing to the CAN_MOFCR13
|
||||
CAN_ADCON = ADR_DEC; // Auto Decrement the current address(-1)
|
||||
|
||||
/// - this object is a STANDARD MESSAGE OBJECT
|
||||
/// - 8 valid data bytes
|
||||
|
||||
//--------------MOFCR13 = 0x08000000---------------------------------------
|
||||
|
||||
CAN_vWriteAMData(0x08000000); // load MO13 function control register
|
||||
|
||||
/// -----------------------------------------------------------------------
|
||||
/// Configuration of Message Object 14:
|
||||
/// -----------------------------------------------------------------------
|
||||
@@ -910,7 +1136,7 @@ void CAN_vInit(void)
|
||||
// 32-bit Data
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2024/8/22
|
||||
// @Date 2025/1/18
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
@@ -945,7 +1171,7 @@ void CAN_vWriteAMData(ulong ulValue)
|
||||
// 32-bit Data
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2024/8/22
|
||||
// @Date 2025/1/18
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
@@ -983,7 +1209,7 @@ void CAN_vSetListCommand(ulong ulVal)
|
||||
// Pointer on a message object to be filled by this function
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2024/8/22
|
||||
// @Date 2025/1/18
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
@@ -1140,7 +1366,7 @@ ubyte ubTemp;
|
||||
// Number of the message object (0-31)
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2024/8/22
|
||||
// @Date 2025/1/18
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
@@ -1183,7 +1409,7 @@ return(ubReturn);
|
||||
// Number of the message object (0-31)
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2024/8/22
|
||||
// @Date 2025/1/18
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
@@ -1227,7 +1453,7 @@ return(ubReturn);
|
||||
// Number of the message object (0-31)
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2024/8/22
|
||||
// @Date 2025/1/18
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
@@ -1267,7 +1493,7 @@ void CAN_vTransmit(ubyte ubObjNr)
|
||||
// Pointer on a data buffer
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2024/8/22
|
||||
// @Date 2025/1/18
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
@@ -1331,7 +1557,7 @@ void CAN_vLoadData(ubyte ubObjNr, ulong *ulpubData)
|
||||
// Number of the message object (0-31)
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2024/8/22
|
||||
// @Date 2025/1/18
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
|
||||
12
CAN.H
12
CAN.H
@@ -13,7 +13,7 @@
|
||||
// the CAN module.
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2024/8/22 08:23:15
|
||||
// @Date 2025/1/18 20:45:35
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
@@ -623,7 +623,7 @@ void CAN_vSetListCommand(ulong ulVal);
|
||||
// @Parameters None
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2024/8/22
|
||||
// @Date 2025/1/18
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
@@ -645,7 +645,7 @@ void CAN_vSetListCommand(ulong ulVal);
|
||||
// Data Control Flags
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2024/8/22
|
||||
// @Date 2025/1/18
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
@@ -666,7 +666,7 @@ void CAN_vSetListCommand(ulong ulVal);
|
||||
// 16-bit Address
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2024/8/22
|
||||
// @Date 2025/1/18
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
@@ -701,7 +701,7 @@ void CAN_vSetListCommand(ulong ulVal);
|
||||
// 32-bit Data
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2024/8/22
|
||||
// @Date 2025/1/18
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
@@ -734,7 +734,7 @@ void CAN_vSetListCommand(ulong ulVal);
|
||||
// @Parameters None
|
||||
//
|
||||
//----------------------------------------------------------------------------
|
||||
// @Date 2024/8/22
|
||||
// @Date 2025/1/18
|
||||
//
|
||||
//****************************************************************************
|
||||
|
||||
|
||||
86
CL2.0.asm
86
CL2.0.asm
@@ -9,7 +9,7 @@
|
||||
; PLEASE DO NOT MODIFY THIS FILE !
|
||||
;
|
||||
;----------------------------------------------------------------------------
|
||||
; Date 2024/8/22 08:23:16
|
||||
; Date 2025/1/18 20:45:36
|
||||
;
|
||||
;****************************************************************************
|
||||
|
||||
@@ -611,8 +611,8 @@ CAN_MOAR0_IDE SET 1
|
||||
CAN_MOAR0_PRI SET 3
|
||||
|
||||
; CAN Message Object 10 Arbitration Register
|
||||
CAN_MOAR10_ID SET 285212672
|
||||
CAN_MOAR10_IDE SET 1
|
||||
CAN_MOAR10_ID SET 0
|
||||
CAN_MOAR10_IDE SET 0
|
||||
CAN_MOAR10_PRI SET 3
|
||||
|
||||
; CAN Message Object 11 Arbitration Register
|
||||
@@ -746,18 +746,18 @@ CAN_MOAR5_IDE SET 1
|
||||
CAN_MOAR5_PRI SET 3
|
||||
|
||||
; CAN Message Object 6 Arbitration Register
|
||||
CAN_MOAR6_ID SET 532938752
|
||||
CAN_MOAR6_IDE SET 0
|
||||
CAN_MOAR6_ID SET 285212673
|
||||
CAN_MOAR6_IDE SET 1
|
||||
CAN_MOAR6_PRI SET 3
|
||||
|
||||
; CAN Message Object 7 Arbitration Register
|
||||
CAN_MOAR7_ID SET 533200896
|
||||
CAN_MOAR7_IDE SET 0
|
||||
CAN_MOAR7_ID SET 285212674
|
||||
CAN_MOAR7_IDE SET 1
|
||||
CAN_MOAR7_PRI SET 3
|
||||
|
||||
; CAN Message Object 8 Arbitration Register
|
||||
CAN_MOAR8_ID SET 533463040
|
||||
CAN_MOAR8_IDE SET 0
|
||||
CAN_MOAR8_ID SET 285212675
|
||||
CAN_MOAR8_IDE SET 1
|
||||
CAN_MOAR8_PRI SET 3
|
||||
|
||||
; CAN Message Object 9 Arbitration Register
|
||||
@@ -782,11 +782,11 @@ CAN_MOCTR0_TXPND SET 0
|
||||
CAN_MOCTR0_TXRQ SET 0
|
||||
|
||||
; CAN Message Object 10 Control Register
|
||||
CAN_MOCTR10_CTRL SET 2569
|
||||
CAN_MOCTR10_DIR SET 1
|
||||
CAN_MOCTR10_LIST SET 1
|
||||
CAN_MOCTR10_CTRL SET 0
|
||||
CAN_MOCTR10_DIR SET 0
|
||||
CAN_MOCTR10_LIST SET 0
|
||||
CAN_MOCTR10_MSGLST SET 0
|
||||
CAN_MOCTR10_MSGVAL SET 1
|
||||
CAN_MOCTR10_MSGVAL SET 0
|
||||
CAN_MOCTR10_NEWDAT SET 0
|
||||
CAN_MOCTR10_RTSEL SET 0
|
||||
CAN_MOCTR10_RXEN SET 0
|
||||
@@ -1262,7 +1262,7 @@ CAN_MOCTR8_TXPND SET 0
|
||||
CAN_MOCTR8_TXRQ SET 0
|
||||
|
||||
; CAN Message Object 9 Control Register
|
||||
CAN_MOCTR9_CTRL SET 2567
|
||||
CAN_MOCTR9_CTRL SET 2311
|
||||
CAN_MOCTR9_DIR SET 1
|
||||
CAN_MOCTR9_LIST SET 1
|
||||
CAN_MOCTR9_MSGLST SET 0
|
||||
@@ -1686,7 +1686,7 @@ CAN_MOFCR10_0 SET 0
|
||||
CAN_MOFCR10_0 SET 0
|
||||
CAN_MOFCR10_0 SET 0
|
||||
CAN_MOFCR10_DATC SET 0
|
||||
CAN_MOFCR10_DLC SET 8
|
||||
CAN_MOFCR10_DLC SET 0
|
||||
CAN_MOFCR10_DLCC SET 0
|
||||
CAN_MOFCR10_FRREN SET 0
|
||||
CAN_MOFCR10_GDFS SET 0
|
||||
@@ -3504,9 +3504,9 @@ P0_DATA_P6 SET 0
|
||||
P0_DATA_P7 SET 0
|
||||
|
||||
; RMAP=0 PAGE=0-P0 P0 Direction Register
|
||||
P0_DIR_P0 SET 0
|
||||
P0_DIR_P0 SET 1
|
||||
P0_DIR_P1 SET 1
|
||||
P0_DIR_P2 SET 0
|
||||
P0_DIR_P2 SET 1
|
||||
P0_DIR_P3 SET 1
|
||||
P0_DIR_P4 SET 0
|
||||
P0_DIR_P5 SET 0
|
||||
@@ -3581,7 +3581,7 @@ P1_DIR_P3 SET 0
|
||||
P1_DIR_P4 SET 0
|
||||
P1_DIR_P5 SET 0
|
||||
P1_DIR_P6 SET 0
|
||||
P1_DIR_P7 SET 0
|
||||
P1_DIR_P7 SET 1
|
||||
|
||||
; RMAP=0 PAGE=3-P1 P1 Open Drain Control Register
|
||||
P1_OD_P0 SET 0
|
||||
@@ -3596,20 +3596,20 @@ P1_OD_P7 SET 0
|
||||
; RMAP=0 PAGE=1-P1 P1 Pull-Up/Pull-Down Enable Register
|
||||
P1_PUDEN_P0 SET 1
|
||||
P1_PUDEN_P1 SET 1
|
||||
P1_PUDEN_P2 SET 1
|
||||
P1_PUDEN_P3 SET 1
|
||||
P1_PUDEN_P4 SET 1
|
||||
P1_PUDEN_P5 SET 1
|
||||
P1_PUDEN_P2 SET 0
|
||||
P1_PUDEN_P3 SET 0
|
||||
P1_PUDEN_P4 SET 0
|
||||
P1_PUDEN_P5 SET 0
|
||||
P1_PUDEN_P6 SET 1
|
||||
P1_PUDEN_P7 SET 1
|
||||
|
||||
; RMAP=0 PAGE=1-P1 P1 Pull-Up/Pull-Down Select Register
|
||||
P1_PUDSEL_P0 SET 1
|
||||
P1_PUDSEL_P1 SET 1
|
||||
P1_PUDSEL_P2 SET 0
|
||||
P1_PUDSEL_P3 SET 0
|
||||
P1_PUDSEL_P4 SET 0
|
||||
P1_PUDSEL_P5 SET 0
|
||||
P1_PUDSEL_P2 SET 1
|
||||
P1_PUDSEL_P3 SET 1
|
||||
P1_PUDSEL_P4 SET 1
|
||||
P1_PUDSEL_P5 SET 1
|
||||
P1_PUDSEL_P6 SET 1
|
||||
P1_PUDSEL_P7 SET 0
|
||||
|
||||
@@ -3689,37 +3689,37 @@ P3_DIR_P1 SET 0
|
||||
P3_DIR_P2 SET 1
|
||||
P3_DIR_P3 SET 1
|
||||
P3_DIR_P4 SET 1
|
||||
P3_DIR_P5 SET 0
|
||||
P3_DIR_P5 SET 1
|
||||
P3_DIR_P6 SET 0
|
||||
P3_DIR_P7 SET 0
|
||||
|
||||
; RMAP=0 PAGE=3-P3 P3 Open Drain Control Register
|
||||
P3_OD_P0 SET 0
|
||||
P3_OD_P1 SET 0
|
||||
P3_OD_P2 SET 0
|
||||
P3_OD_P3 SET 0
|
||||
P3_OD_P4 SET 0
|
||||
P3_OD_P5 SET 0
|
||||
P3_OD_P2 SET 1
|
||||
P3_OD_P3 SET 1
|
||||
P3_OD_P4 SET 1
|
||||
P3_OD_P5 SET 1
|
||||
P3_OD_P6 SET 0
|
||||
P3_OD_P7 SET 0
|
||||
|
||||
; RMAP=0 PAGE=1-P3 P3 Pull-Up/Pull-Down Enable Register
|
||||
P3_PUDEN_P0 SET 1
|
||||
P3_PUDEN_P1 SET 1
|
||||
P3_PUDEN_P2 SET 1
|
||||
P3_PUDEN_P3 SET 1
|
||||
P3_PUDEN_P4 SET 1
|
||||
P3_PUDEN_P5 SET 1
|
||||
P3_PUDEN_P6 SET 1
|
||||
P3_PUDEN_P2 SET 0
|
||||
P3_PUDEN_P3 SET 0
|
||||
P3_PUDEN_P4 SET 0
|
||||
P3_PUDEN_P5 SET 0
|
||||
P3_PUDEN_P6 SET 0
|
||||
P3_PUDEN_P7 SET 1
|
||||
|
||||
; RMAP=0 PAGE=1-P3 P3 Pull-Up/Pull-Down Select Register
|
||||
P3_PUDSEL_P0 SET 1
|
||||
P3_PUDSEL_P1 SET 1
|
||||
P3_PUDSEL_P2 SET 0
|
||||
P3_PUDSEL_P3 SET 0
|
||||
P3_PUDSEL_P4 SET 0
|
||||
P3_PUDSEL_P5 SET 0
|
||||
P3_PUDSEL_P2 SET 1
|
||||
P3_PUDSEL_P3 SET 1
|
||||
P3_PUDSEL_P4 SET 1
|
||||
P3_PUDSEL_P5 SET 1
|
||||
P3_PUDSEL_P6 SET 1
|
||||
P3_PUDSEL_P7 SET 1
|
||||
|
||||
@@ -3754,7 +3754,7 @@ P4_DATA_P6 SET 0
|
||||
P4_DATA_P7 SET 0
|
||||
|
||||
; RMAP=0 PAGE=0-P4 P4 Direction Register
|
||||
P4_DIR_P0 SET 0
|
||||
P4_DIR_P0 SET 1
|
||||
P4_DIR_P1 SET 1
|
||||
P4_DIR_P2 SET 0
|
||||
P4_DIR_P3 SET 0
|
||||
@@ -3777,7 +3777,7 @@ P4_OD_P7 SET 0
|
||||
P4_PUDEN_P0 SET 1
|
||||
P4_PUDEN_P1 SET 1
|
||||
P4_PUDEN_P2 SET 1
|
||||
P4_PUDEN_P3 SET 1
|
||||
P4_PUDEN_P3 SET 0
|
||||
P4_PUDEN_P4 SET 0
|
||||
P4_PUDEN_P5 SET 0
|
||||
P4_PUDEN_P6 SET 0
|
||||
@@ -3787,7 +3787,7 @@ P4_PUDEN_P7 SET 0
|
||||
P4_PUDSEL_P0 SET 0
|
||||
P4_PUDSEL_P1 SET 0
|
||||
P4_PUDSEL_P2 SET 1
|
||||
P4_PUDSEL_P3 SET 0
|
||||
P4_PUDSEL_P3 SET 1
|
||||
P4_PUDSEL_P4 SET 1
|
||||
P4_PUDSEL_P5 SET 1
|
||||
P4_PUDSEL_P6 SET 1
|
||||
|
||||
110
CL2.0.dpt
110
CL2.0.dpt
@@ -9,7 +9,7 @@
|
||||
' PLEASE DO NOT MODIFY THIS FILE !
|
||||
'
|
||||
'----------------------------------------------------------------------------
|
||||
; Date 2024/8/22 08:23:16
|
||||
; Date 2025/1/18 20:45:36
|
||||
'
|
||||
'****************************************************************************
|
||||
|
||||
@@ -448,7 +448,7 @@ CAN_MCR_MPSEL=0
|
||||
CAN_MITR_IT[31:8]=0
|
||||
CAN_MITR_IT[7:0]=0
|
||||
CAN_MO0_LISTPOS=0
|
||||
CAN_MO10_LISTPOS=8
|
||||
CAN_MO10_LISTPOS=0
|
||||
CAN_MO11_LISTPOS=0
|
||||
CAN_MO12_LISTPOS=0
|
||||
CAN_MO13_LISTPOS=0
|
||||
@@ -578,8 +578,8 @@ CAN_MOAMR9_MIDE=1
|
||||
CAN_MOAR0_ID=268435457
|
||||
CAN_MOAR0_IDE=1
|
||||
CAN_MOAR0_PRI=3
|
||||
CAN_MOAR10_ID=285212672
|
||||
CAN_MOAR10_IDE=1
|
||||
CAN_MOAR10_ID=0
|
||||
CAN_MOAR10_IDE=0
|
||||
CAN_MOAR10_PRI=3
|
||||
CAN_MOAR11_ID=0
|
||||
CAN_MOAR11_IDE=0
|
||||
@@ -659,14 +659,14 @@ CAN_MOAR4_PRI=3
|
||||
CAN_MOAR5_ID=3
|
||||
CAN_MOAR5_IDE=1
|
||||
CAN_MOAR5_PRI=3
|
||||
CAN_MOAR6_ID=532938752
|
||||
CAN_MOAR6_IDE=0
|
||||
CAN_MOAR6_ID=285212673
|
||||
CAN_MOAR6_IDE=1
|
||||
CAN_MOAR6_PRI=3
|
||||
CAN_MOAR7_ID=533200896
|
||||
CAN_MOAR7_IDE=0
|
||||
CAN_MOAR7_ID=285212674
|
||||
CAN_MOAR7_IDE=1
|
||||
CAN_MOAR7_PRI=3
|
||||
CAN_MOAR8_ID=533463040
|
||||
CAN_MOAR8_IDE=0
|
||||
CAN_MOAR8_ID=285212675
|
||||
CAN_MOAR8_IDE=1
|
||||
CAN_MOAR8_PRI=3
|
||||
CAN_MOAR9_ID=536870896
|
||||
CAN_MOAR9_IDE=1
|
||||
@@ -685,11 +685,11 @@ CAN_MOCTR0_TXEN0=0
|
||||
CAN_MOCTR0_TXEN1=0
|
||||
CAN_MOCTR0_TXPND=0
|
||||
CAN_MOCTR0_TXRQ=0
|
||||
CAN_MOCTR10_CTRL=2569
|
||||
CAN_MOCTR10_DIR=1
|
||||
CAN_MOCTR10_LIST=1
|
||||
CAN_MOCTR10_CTRL=0
|
||||
CAN_MOCTR10_DIR=0
|
||||
CAN_MOCTR10_LIST=0
|
||||
CAN_MOCTR10_MSGLST=0
|
||||
CAN_MOCTR10_MSGVAL=1
|
||||
CAN_MOCTR10_MSGVAL=0
|
||||
CAN_MOCTR10_NEWDAT=0
|
||||
CAN_MOCTR10_RTSEL=0
|
||||
CAN_MOCTR10_RXEN=0
|
||||
@@ -1105,7 +1105,7 @@ CAN_MOCTR8_TXEN0=0
|
||||
CAN_MOCTR8_TXEN1=0
|
||||
CAN_MOCTR8_TXPND=0
|
||||
CAN_MOCTR8_TXRQ=0
|
||||
CAN_MOCTR9_CTRL=2567
|
||||
CAN_MOCTR9_CTRL=2311
|
||||
CAN_MOCTR9_DIR=1
|
||||
CAN_MOCTR9_LIST=1
|
||||
CAN_MOCTR9_MSGLST=0
|
||||
@@ -1397,7 +1397,7 @@ CAN_MOFCR10_0=0
|
||||
CAN_MOFCR10_0=0
|
||||
CAN_MOFCR10_0=0
|
||||
CAN_MOFCR10_DATC=0
|
||||
CAN_MOFCR10_DLC=8
|
||||
CAN_MOFCR10_DLC=0
|
||||
CAN_MOFCR10_DLCC=0
|
||||
CAN_MOFCR10_FRREN=0
|
||||
CAN_MOFCR10_GDFS=0
|
||||
@@ -3055,12 +3055,12 @@ MUXFOR_MTSR_0(MASTER_TRANSMIT)=0
|
||||
MUXFOR_MTSR_0(SLAVE_RECEIVE)=0
|
||||
MUXFOR_MTSR_1(MASTER_TRANSMIT)=0
|
||||
MUXFOR_MTSR_1(SLAVE_RECEIVE)=0
|
||||
MUXFOR_P0_0=1
|
||||
MUXFOR_P0_0=2
|
||||
MUXFOR_P0_1=2
|
||||
MUXFOR_P0_2=1
|
||||
MUXFOR_P0_2=2
|
||||
MUXFOR_P0_3=2
|
||||
MUXFOR_P0_4=0
|
||||
MUXFOR_P0_5=1
|
||||
MUXFOR_P0_5=0
|
||||
MUXFOR_P0_6=0
|
||||
MUXFOR_P0_7=2
|
||||
MUXFOR_P1_0=0
|
||||
@@ -3070,24 +3070,24 @@ MUXFOR_P1_3=1
|
||||
MUXFOR_P1_4=1
|
||||
MUXFOR_P1_5=1
|
||||
MUXFOR_P1_6=0
|
||||
MUXFOR_P1_7=1
|
||||
MUXFOR_P2_0=1
|
||||
MUXFOR_P2_1=1
|
||||
MUXFOR_P1_7=2
|
||||
MUXFOR_P2_0=0
|
||||
MUXFOR_P2_1=0
|
||||
MUXFOR_P2_2=0
|
||||
MUXFOR_P2_3=1
|
||||
MUXFOR_P2_3=0
|
||||
MUXFOR_P2_4=1
|
||||
MUXFOR_P2_5=1
|
||||
MUXFOR_P2_6=0
|
||||
MUXFOR_P2_7=0
|
||||
MUXFOR_P2_6=1
|
||||
MUXFOR_P2_7=1
|
||||
MUXFOR_P3_0=1
|
||||
MUXFOR_P3_1=1
|
||||
MUXFOR_P3_2=2
|
||||
MUXFOR_P3_3=2
|
||||
MUXFOR_P3_4=2
|
||||
MUXFOR_P3_5=1
|
||||
MUXFOR_P3_5=2
|
||||
MUXFOR_P3_6=1
|
||||
MUXFOR_P3_7=1
|
||||
MUXFOR_P4_0=1
|
||||
MUXFOR_P4_0=2
|
||||
MUXFOR_P4_1=2
|
||||
MUXFOR_P4_2=0
|
||||
MUXFOR_P4_3=1
|
||||
@@ -3186,9 +3186,9 @@ P0_DATA_P4=0
|
||||
P0_DATA_P5=0
|
||||
P0_DATA_P6=0
|
||||
P0_DATA_P7=0
|
||||
P0_DIR_P0=0
|
||||
P0_DIR_P0=1
|
||||
P0_DIR_P1=1
|
||||
P0_DIR_P2=0
|
||||
P0_DIR_P2=1
|
||||
P0_DIR_P3=1
|
||||
P0_DIR_P4=0
|
||||
P0_DIR_P5=0
|
||||
@@ -3258,7 +3258,7 @@ P1_DIR_P3=0
|
||||
P1_DIR_P4=0
|
||||
P1_DIR_P5=0
|
||||
P1_DIR_P6=0
|
||||
P1_DIR_P7=0
|
||||
P1_DIR_P7=1
|
||||
P1_NAME_P1_0=P1_0
|
||||
P1_NAME_P1_1=P1_1
|
||||
P1_NAME_P1_2=P1_2
|
||||
@@ -3278,18 +3278,18 @@ P1_OD_P6=0
|
||||
P1_OD_P7=0
|
||||
P1_PUDEN_P0=1
|
||||
P1_PUDEN_P1=1
|
||||
P1_PUDEN_P2=1
|
||||
P1_PUDEN_P3=1
|
||||
P1_PUDEN_P4=1
|
||||
P1_PUDEN_P5=1
|
||||
P1_PUDEN_P2=0
|
||||
P1_PUDEN_P3=0
|
||||
P1_PUDEN_P4=0
|
||||
P1_PUDEN_P5=0
|
||||
P1_PUDEN_P6=1
|
||||
P1_PUDEN_P7=1
|
||||
P1_PUDSEL_P0=1
|
||||
P1_PUDSEL_P1=1
|
||||
P1_PUDSEL_P2=0
|
||||
P1_PUDSEL_P3=0
|
||||
P1_PUDSEL_P4=0
|
||||
P1_PUDSEL_P5=0
|
||||
P1_PUDSEL_P2=1
|
||||
P1_PUDSEL_P3=1
|
||||
P1_PUDSEL_P4=1
|
||||
P1_PUDSEL_P5=1
|
||||
P1_PUDSEL_P6=1
|
||||
P1_PUDSEL_P7=0
|
||||
P2_DATA_P0=0
|
||||
@@ -3362,7 +3362,7 @@ P3_DIR_P1=0
|
||||
P3_DIR_P2=1
|
||||
P3_DIR_P3=1
|
||||
P3_DIR_P4=1
|
||||
P3_DIR_P5=0
|
||||
P3_DIR_P5=1
|
||||
P3_DIR_P6=0
|
||||
P3_DIR_P7=0
|
||||
P3_NAME_P3_0=P3_0
|
||||
@@ -3376,26 +3376,26 @@ P3_NAME_P3_7=P3_7
|
||||
P3_NOTES=
|
||||
P3_OD_P0=0
|
||||
P3_OD_P1=0
|
||||
P3_OD_P2=0
|
||||
P3_OD_P3=0
|
||||
P3_OD_P4=0
|
||||
P3_OD_P5=0
|
||||
P3_OD_P2=1
|
||||
P3_OD_P3=1
|
||||
P3_OD_P4=1
|
||||
P3_OD_P5=1
|
||||
P3_OD_P6=0
|
||||
P3_OD_P7=0
|
||||
P3_PUDEN_P0=1
|
||||
P3_PUDEN_P1=1
|
||||
P3_PUDEN_P2=1
|
||||
P3_PUDEN_P3=1
|
||||
P3_PUDEN_P4=1
|
||||
P3_PUDEN_P5=1
|
||||
P3_PUDEN_P6=1
|
||||
P3_PUDEN_P2=0
|
||||
P3_PUDEN_P3=0
|
||||
P3_PUDEN_P4=0
|
||||
P3_PUDEN_P5=0
|
||||
P3_PUDEN_P6=0
|
||||
P3_PUDEN_P7=1
|
||||
P3_PUDSEL_P0=1
|
||||
P3_PUDSEL_P1=1
|
||||
P3_PUDSEL_P2=0
|
||||
P3_PUDSEL_P3=0
|
||||
P3_PUDSEL_P4=0
|
||||
P3_PUDSEL_P5=0
|
||||
P3_PUDSEL_P2=1
|
||||
P3_PUDSEL_P3=1
|
||||
P3_PUDSEL_P4=1
|
||||
P3_PUDSEL_P5=1
|
||||
P3_PUDSEL_P6=1
|
||||
P3_PUDSEL_P7=1
|
||||
P4_ALTSEL0_P0=0
|
||||
@@ -3422,7 +3422,7 @@ P4_DATA_P4=0
|
||||
P4_DATA_P5=0
|
||||
P4_DATA_P6=0
|
||||
P4_DATA_P7=0
|
||||
P4_DIR_P0=0
|
||||
P4_DIR_P0=1
|
||||
P4_DIR_P1=1
|
||||
P4_DIR_P2=0
|
||||
P4_DIR_P3=0
|
||||
@@ -3446,7 +3446,7 @@ P4_OD_P7=0
|
||||
P4_PUDEN_P0=1
|
||||
P4_PUDEN_P1=1
|
||||
P4_PUDEN_P2=1
|
||||
P4_PUDEN_P3=1
|
||||
P4_PUDEN_P3=0
|
||||
P4_PUDEN_P4=0
|
||||
P4_PUDEN_P5=0
|
||||
P4_PUDEN_P6=0
|
||||
@@ -3454,7 +3454,7 @@ P4_PUDEN_P7=0
|
||||
P4_PUDSEL_P0=0
|
||||
P4_PUDSEL_P1=0
|
||||
P4_PUDSEL_P2=1
|
||||
P4_PUDSEL_P3=0
|
||||
P4_PUDSEL_P3=1
|
||||
P4_PUDSEL_P4=1
|
||||
P4_PUDSEL_P5=1
|
||||
P4_PUDSEL_P6=1
|
||||
|
||||
107
CL2.0.rtf
107
CL2.0.rtf
@@ -8,7 +8,7 @@
|
||||
\par \plain\f4\fs22\cf0 Compiler: \tab\tab\b Keil
|
||||
\par \plain\f4\fs22\cf0 Memory Model: \tab\b COMPACT
|
||||
\par
|
||||
\par \plain\f4\fs22\cf0 Date: \tab\tab\tab\b 2024/8/22 08:23:16
|
||||
\par \plain\f4\fs22\cf0 Date: \tab\tab\tab\b 2025/1/18 20:45:36
|
||||
\par
|
||||
\par
|
||||
\par \plain\f4\fs22\cf2\b Please read this document carefully and note
|
||||
@@ -295,7 +295,9 @@
|
||||
\par
|
||||
\tab Configuration of Port P0:\par
|
||||
\tab P0.0:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - is used as general purpose output\par
|
||||
\tab - push/pull output is selected\par
|
||||
\tab - the pin status is low level\par
|
||||
\tab - pull-down device is assigned\par
|
||||
\tab P0.1:\par
|
||||
\tab - is used as general purpose output\par
|
||||
@@ -303,16 +305,15 @@
|
||||
\tab - the pin status is low level\par
|
||||
\tab - pull-down device is assigned\par
|
||||
\tab P0.2:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - is used as general purpose output\par
|
||||
\tab - push/pull output is selected\par
|
||||
\tab - the pin status is low level\par
|
||||
\tab - pull-down device is assigned\par
|
||||
\tab P0.3:\par
|
||||
\tab - is used as general purpose output\par
|
||||
\tab - push/pull output is selected\par
|
||||
\tab - the pin status is low level\par
|
||||
\tab - pull-down device is assigned\par
|
||||
\tab P0.5:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - pull device is disabled (tristate)\par
|
||||
\tab P0.7:\par
|
||||
\tab - is used as general purpose output\par
|
||||
\tab - push/pull output is selected\par
|
||||
@@ -329,33 +330,23 @@
|
||||
\tab - pull-up device is assigned\par
|
||||
\tab P1.2:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - pull-down device is assigned\par
|
||||
\tab - pull device is disabled (tristate)\par
|
||||
\tab P1.3:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - pull-down device is assigned\par
|
||||
\tab - pull device is disabled (tristate)\par
|
||||
\tab P1.4:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - pull-down device is assigned\par
|
||||
\tab - pull device is disabled (tristate)\par
|
||||
\tab P1.5:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - pull-down device is assigned\par
|
||||
\tab - pull device is disabled (tristate)\par
|
||||
\tab P1.7:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - is used as general purpose output\par
|
||||
\tab - push/pull output is selected\par
|
||||
\tab - the pin status is low level\par
|
||||
\tab - pull-down device is assigned\par
|
||||
\par
|
||||
\tab Configuration of Port P2:\par
|
||||
\tab P2.0:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - input driver is enabled\par
|
||||
\tab - pull device is disabled (tristate)\par
|
||||
\tab P2.1:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - input driver is enabled\par
|
||||
\tab - pull device is disabled (tristate)\par
|
||||
\tab P2.3:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - input driver is enabled\par
|
||||
\tab - pull device is disabled (tristate)\par
|
||||
\tab P2.4:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - input driver is enabled\par
|
||||
@@ -364,6 +355,14 @@
|
||||
\tab - is used as general input\par
|
||||
\tab - input driver is enabled\par
|
||||
\tab - pull-up device is assigned\par
|
||||
\tab P2.6:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - input driver is enabled\par
|
||||
\tab - pull-up device is assigned\par
|
||||
\tab P2.7:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - input driver is enabled\par
|
||||
\tab - pull-up device is assigned\par
|
||||
\par
|
||||
\tab Configuration of Port P3:\par
|
||||
\tab P3.0:\par
|
||||
@@ -374,32 +373,36 @@
|
||||
\tab - pull-up device is assigned\par
|
||||
\tab P3.2:\par
|
||||
\tab - is used as general purpose output\par
|
||||
\tab - push/pull output is selected\par
|
||||
\tab - open drain output is selected\par
|
||||
\tab - the pin status is low level\par
|
||||
\tab - pull-down device is assigned\par
|
||||
\tab - pull device is disabled (tristate)\par
|
||||
\tab P3.3:\par
|
||||
\tab - is used as general purpose output\par
|
||||
\tab - push/pull output is selected\par
|
||||
\tab - open drain output is selected\par
|
||||
\tab - the pin status is low level\par
|
||||
\tab - pull-down device is assigned\par
|
||||
\tab - pull device is disabled (tristate)\par
|
||||
\tab P3.4:\par
|
||||
\tab - is used as general purpose output\par
|
||||
\tab - push/pull output is selected\par
|
||||
\tab - open drain output is selected\par
|
||||
\tab - the pin status is low level\par
|
||||
\tab - pull-down device is assigned\par
|
||||
\tab - pull device is disabled (tristate)\par
|
||||
\tab P3.5:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - pull-down device is assigned\par
|
||||
\tab - is used as general purpose output\par
|
||||
\tab - open drain output is selected\par
|
||||
\tab - the pin status is low level\par
|
||||
\tab - pull device is disabled (tristate)\par
|
||||
\tab P3.6:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - pull-up device is assigned\par
|
||||
\tab - pull device is disabled (tristate)\par
|
||||
\tab P3.7:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - pull-up device is assigned\par
|
||||
\par
|
||||
\tab Configuration of Port P4:\par
|
||||
\tab P4.0:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - is used as general purpose output\par
|
||||
\tab - push/pull output is selected\par
|
||||
\tab - the pin status is low level\par
|
||||
\tab - pull-down device is assigned\par
|
||||
\tab P4.1:\par
|
||||
\tab - is used as general purpose output\par
|
||||
@@ -408,7 +411,7 @@
|
||||
\tab - pull-down device is assigned\par
|
||||
\tab P4.3:\par
|
||||
\tab - is used as general input\par
|
||||
\tab - pull-down device is assigned\par
|
||||
\tab - pull device is disabled (tristate)\par
|
||||
\par
|
||||
|
||||
\par \plain\f4\fs20\cf0
|
||||
@@ -1014,11 +1017,11 @@
|
||||
\par
|
||||
\tab - priority class 3; transmit acceptance filtering is based on the list\par
|
||||
\tab order (like class 1)\par
|
||||
\tab - standard 11-bit identifier\par
|
||||
\tab - identifier 11-bit: 0x7F1\par
|
||||
\tab - extended 29-bit identifier\par
|
||||
\tab - identifier 29-bit: 0x11000001\par
|
||||
\par
|
||||
\tab - only accept receive frames with matching IDE bit\par
|
||||
\tab - acceptance mask 11-bit: 0x7FF\par
|
||||
\tab - acceptance mask 29-bit: 0x1FFFFFFF\par
|
||||
\par
|
||||
\tab - use message pending register 0 bit position 6\par
|
||||
\par
|
||||
@@ -1032,11 +1035,11 @@
|
||||
\par
|
||||
\tab - priority class 3; transmit acceptance filtering is based on the list\par
|
||||
\tab order (like class 1)\par
|
||||
\tab - standard 11-bit identifier\par
|
||||
\tab - identifier 11-bit: 0x7F2\par
|
||||
\tab - extended 29-bit identifier\par
|
||||
\tab - identifier 29-bit: 0x11000002\par
|
||||
\par
|
||||
\tab - only accept receive frames with matching IDE bit\par
|
||||
\tab - acceptance mask 11-bit: 0x7FF\par
|
||||
\tab - acceptance mask 29-bit: 0x1FFFFFFF\par
|
||||
\par
|
||||
\tab - use message pending register 0 bit position 7\par
|
||||
\par
|
||||
@@ -1050,11 +1053,11 @@
|
||||
\par
|
||||
\tab - priority class 3; transmit acceptance filtering is based on the list\par
|
||||
\tab order (like class 1)\par
|
||||
\tab - standard 11-bit identifier\par
|
||||
\tab - identifier 11-bit: 0x7F3\par
|
||||
\tab - extended 29-bit identifier\par
|
||||
\tab - identifier 29-bit: 0x11000003\par
|
||||
\par
|
||||
\tab - only accept receive frames with matching IDE bit\par
|
||||
\tab - acceptance mask 11-bit: 0x7FF\par
|
||||
\tab - acceptance mask 29-bit: 0x1FFFFFFF\par
|
||||
\par
|
||||
\tab - use message pending register 0 bit position 8\par
|
||||
\par
|
||||
@@ -1080,23 +1083,7 @@
|
||||
\tab - 8 valid data bytes\par
|
||||
\par
|
||||
\tab Configuration of Message Object 10:\par
|
||||
\tab - message object 10 is valid\par
|
||||
\tab - message object is used as transmit object\par
|
||||
\tab - this message object is assigned to list 1 (node 0)\par
|
||||
\par
|
||||
\tab - priority class 3; transmit acceptance filtering is based on the list\par
|
||||
\tab order (like class 1)\par
|
||||
\tab - extended 29-bit identifier\par
|
||||
\tab - identifier 29-bit: 0x11000000\par
|
||||
\par
|
||||
\tab - only accept receive frames with matching IDE bit\par
|
||||
\tab - acceptance mask 29-bit: 0x1FFFFFFF\par
|
||||
\par
|
||||
\tab - use message pending register 0 bit position 10\par
|
||||
\par
|
||||
\tab - this object is a STANDARD MESSAGE OBJECT\par
|
||||
\tab - 8 valid data bytes\par
|
||||
\par
|
||||
\tab - message object 10 is not valid\par
|
||||
\tab Configuration of Message Object 11:\par
|
||||
\tab - message object 11 is not valid\par
|
||||
\tab Configuration of Message Object 12:\par
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
52
CL2.0.uvopt
52
CL2.0.uvopt
@@ -17,8 +17,8 @@
|
||||
</Extensions>
|
||||
|
||||
<DaveTm>
|
||||
<dwLowDateTime>-1733316296</dwLowDateTime>
|
||||
<dwHighDateTime>31126623</dwHighDateTime>
|
||||
<dwLowDateTime>187610842</dwLowDateTime>
|
||||
<dwHighDateTime>31157159</dwHighDateTime>
|
||||
</DaveTm>
|
||||
|
||||
<Target>
|
||||
@@ -303,20 +303,8 @@
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\CC6.C</PathWithFileName>
|
||||
<FilenameWithoutPath>CC6.C</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>1</GroupNumber>
|
||||
<FileNumber>9</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\ADC.C</PathWithFileName>
|
||||
<FilenameWithoutPath>ADC.C</FilenameWithoutPath>
|
||||
<PathWithFileName>.\PS.C</PathWithFileName>
|
||||
<FilenameWithoutPath>PS.C</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
@@ -330,9 +318,9 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>10</FileNumber>
|
||||
<FileNumber>9</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\User.c</PathWithFileName>
|
||||
@@ -342,7 +330,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>11</FileNumber>
|
||||
<FileNumber>10</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -354,7 +342,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>12</FileNumber>
|
||||
<FileNumber>11</FileNumber>
|
||||
<FileType>2</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -364,6 +352,30 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>12</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\temperature.C</PathWithFileName>
|
||||
<FilenameWithoutPath>temperature.C</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>13</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>.\RTC.c</PathWithFileName>
|
||||
<FilenameWithoutPath>RTC.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
</ProjectOpt>
|
||||
|
||||
19
CL2.0.uvproj
19
CL2.0.uvproj
@@ -412,14 +412,9 @@
|
||||
<FilePath>.\WDT.C</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>CC6.C</FileName>
|
||||
<FileName>PS.C</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\CC6.C</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>ADC.C</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\ADC.C</FilePath>
|
||||
<FilePath>.\PS.C</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
@@ -441,6 +436,16 @@
|
||||
<FileType>2</FileType>
|
||||
<FilePath>.\XC88x_FLHANDLER.ASM</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>temperature.C</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\temperature.C</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>RTC.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>.\RTC.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
</Groups>
|
||||
|
||||
6
MAIN.C
6
MAIN.C
@@ -214,7 +214,6 @@ void main(void)
|
||||
// ulong i,j;
|
||||
// static ubyte tmp[8] = {0};
|
||||
// for(j=0;j<200;j++){for(i=0;i<133;i++);}
|
||||
|
||||
// USER CODE END
|
||||
|
||||
MAIN_vInit();
|
||||
@@ -238,6 +237,11 @@ void main(void)
|
||||
|
||||
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>
|
||||
// {
|
||||
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>
|
||||
// }
|
||||
|
||||
|
||||
while(1)
|
||||
{
|
||||
|
||||
297
RTC.c
297
RTC.c
@@ -1,25 +1,8 @@
|
||||
#include "MAIN.H"
|
||||
#include <stdio.h>
|
||||
#include "RTC.H"
|
||||
|
||||
unsigned char bySta = 0;
|
||||
|
||||
// <20><>̬<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD>꣬<EFBFBD><EAA3AC><EFBFBD><EFBFBD>1~12<31><32>Ӧ1<D3A6><31>~12<31>£<EFBFBD>
|
||||
ubyte days_in_month[12] = {
|
||||
31, // 1<><31>
|
||||
28, // 2<>£<EFBFBD>ƽ<EFBFBD>꣩
|
||||
31, // 3<><33>
|
||||
30, // 4<><34>
|
||||
31, // 5<><35>
|
||||
30, // 6<><36>
|
||||
31, // 7<><37>
|
||||
31, // 8<><38>
|
||||
30, // 9<><39>
|
||||
31, // 10<31><30>
|
||||
30, // 11<31><31>
|
||||
31 // 12<31><32>
|
||||
};
|
||||
|
||||
#include <string.h>
|
||||
//unsigned char bySta = 0;
|
||||
|
||||
void SDAOut(bit c)
|
||||
{
|
||||
@@ -178,199 +161,135 @@ unsigned char BM8563_ReadReg(unsigned char reg)
|
||||
return rdata;
|
||||
}
|
||||
|
||||
// <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>
|
||||
ubyte leapYear(uword year) {
|
||||
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><>ȡָ<C8A1><D6B8><EFBFBD><EFBFBD><EFBFBD>ݺ<EFBFBD><DDBA>·ݵ<C2B7><DDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>꣩
|
||||
* @param year: <20><><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2024<32><34>
|
||||
* @param month: <20>·ݣ<C2B7>1-12<31><32>
|
||||
* @retval <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>0<EFBFBD><30>
|
||||
*/
|
||||
ubyte getMonthDays(uword year, ubyte month) {
|
||||
// <20><>̬<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD>꣬<EFBFBD><EAA3AC><EFBFBD><EFBFBD>1~12<31><32>Ӧ1<D3A6><31>~12<31>£<EFBFBD>
|
||||
ubyte days_in_month[13] = {
|
||||
0, 31, 28, 31, 30, 31, 30,
|
||||
31, 31, 30, 31, 30, 31
|
||||
};
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>У<EFBFBD><D0A3>
|
||||
if (month < 1 || month > 12) return 0;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32>
|
||||
if (month == 2 && leapYear(year)) {
|
||||
return 29;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD>س<EFBFBD><D8B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
return days_in_month[month];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD>鱨<EFBFBD><E9B1A8><EFBFBD><EFBFBD>־AF<41>Ƿ<EFBFBD><C7B7><EFBFBD>λ<EFBFBD><CEBB>Bit3<74><33>
|
||||
* @retval true-<2D><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD><D1B4><EFBFBD><EFBFBD><EFBFBD>false-<2D>ޱ<EFBFBD><DEB1><EFBFBD>
|
||||
*/
|
||||
bool bm8563CheckAlarmFlag(void) {
|
||||
ubyte reg_val = BM8563_ReadReg(BM8563_CSR2);
|
||||
return (reg_val & BM8563_AF_BIT) != 0; // <20><><EFBFBD><EFBFBD>Bit3
|
||||
bool bm8563CheckAlarmFlag(void)
|
||||
{
|
||||
ubyte reg_val = BM8563_ReadReg(BM8563_CSR2);
|
||||
|
||||
return (reg_val & BM8563_AF_BIT) != 0; // <20><><EFBFBD><EFBFBD>Bit3,<2C><><EFBFBD><EFBFBD>Ϊ0<CEAA>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD>Ǿ<EFBFBD>
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־AF<41><46>Bit3<74><33>
|
||||
* @note <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Bit1 AIE<49><45>־<EFBFBD><D6BE>״̬
|
||||
*/
|
||||
void bm8563ClearAlarmFlag(void) {
|
||||
ubyte reg_val = BM8563_ReadReg(BM8563_CSR2);
|
||||
reg_val &= ~BM8563_AF_BIT; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Bit3
|
||||
BM8563_WriteReg(BM8563_CSR2, reg_val);
|
||||
// <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>Сֵ<D0A1><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ֮<D6B5><D6AE>
|
||||
ubyte constrain(ubyte value, ubyte min_val, ubyte max_val)
|
||||
{
|
||||
if (value < min_val)
|
||||
{
|
||||
return min_val;
|
||||
}
|
||||
else if (value > max_val)
|
||||
{
|
||||
return max_val;
|
||||
}
|
||||
else
|
||||
{
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD>BM8563<36><33>ǰʱ<C7B0>䣨<EFBFBD><E4A3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>·ݼĴ<DDBC><C4B4><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param pTime: ʱ<><CAB1><EFBFBD>ṹ<EFBFBD><E1B9B9>ָ<EFBFBD>루<EFBFBD><EBA3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1984<38><34>2024<32><34>
|
||||
* @retval <20><>
|
||||
*/
|
||||
void bm8563SetTime(UnTimeOutput *pTime) {
|
||||
void bm8563SetTime(UnTimeOutput *pTime)
|
||||
{
|
||||
ubyte reg_sec = 0;
|
||||
UnTimeOutput time_temp = {0};
|
||||
|
||||
ubyte century_bit = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
ubyte reg_sec = 0;
|
||||
ubyte month_bcd = 0;
|
||||
if (pTime == NULL) return;
|
||||
|
||||
// --- <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD> ---
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD>־<EFBFBD><D6BE>0:20<32><30><EFBFBD>ͼ<EFBFBD>֮<EFBFBD><D6AE><EFBFBD><EFBFBD>1:19<31><39><EFBFBD>ͣ<EFBFBD>
|
||||
// uint8_t century_bit = (pTime->bit_data.year >= 2000) ? 0 : 1; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// --- <20>Ĵ<EFBFBD><C4B4><EFBFBD>д<EFBFBD>루<EFBFBD><EBA3A8><EFBFBD><EFBFBD><EFBFBD>룩---
|
||||
if (pTime == NULL) {
|
||||
return; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ
|
||||
}
|
||||
memcpy(&time_temp,pTime,sizeof(UnTimeOutput));//<2F>ȿ<EFBFBD><C8BF><EFBFBD>
|
||||
|
||||
time_temp.bit_data.year = constrain(time_temp.bit_data.year,0,99);//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Χ
|
||||
time_temp.bit_data.month = constrain(time_temp.bit_data.month,1,12);//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Χ
|
||||
time_temp.bit_data.day = constrain(time_temp.bit_data.day,1,31);//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>Χ
|
||||
time_temp.bit_data.hour = constrain(time_temp.bit_data.hour,0,23);//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Χ
|
||||
time_temp.bit_data.week = constrain(time_temp.bit_data.week,0,6);//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Χ
|
||||
time_temp.bit_data.minute = constrain(time_temp.bit_data.minute,0,59);//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Χ
|
||||
time_temp.bit_data.second = constrain(time_temp.bit_data.second,0,59);//<2F><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Χ
|
||||
|
||||
BM8563_WriteReg( BM8563_YEAR, DecToBcd(pTime->bit_data.year) );//д<>꣬<EFBFBD><EAA3AC><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ΪBCD<43><44>
|
||||
BM8563_WriteReg( BM8563_MONTH, DecToBcd(pTime->bit_data.month)&0x1F);//д<>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ΪBCD<43><44>
|
||||
BM8563_WriteReg( BM8563_DAY, DecToBcd(pTime->bit_data.day)&0x3F);//д<>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ΪBCD<43><44>
|
||||
BM8563_WriteReg( BM8563_HOUR, DecToBcd(pTime->bit_data.hour)&0x3F);//дСʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ΪBCD<43><44>
|
||||
BM8563_WriteReg( BM8563_WEEK, pTime->bit_data.week&0x07 );//д<>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD>Ҫת
|
||||
BM8563_WriteReg( BM8563_MIN, DecToBcd( pTime->bit_data.minute)&0x7F);//д<><D0B4><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ΪBCD<43><44>
|
||||
// <20>루<EFBFBD><EBA3A8>ַ0x02<30><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Bit7<74><37>CHʱ<48><CAB1>ֹͣλ<D6B9><CEBB>
|
||||
reg_sec = BM8563_ReadReg(BM8563_SEC) & 0x80;
|
||||
BM8563_WriteReg(BM8563_SEC, reg_sec | (DecToBcd(pTime->bit_data.second) & 0x7F));
|
||||
|
||||
// <20>֣<EFBFBD><D6A3><EFBFBD>ַ0x03<30><33>
|
||||
BM8563_WriteReg(BM8563_MIN, DecToBcd(pTime->bit_data.minute) & 0x7F);
|
||||
|
||||
// Сʱ<D0A1><CAB1><EFBFBD><EFBFBD>ַ0x04<30><34><EFBFBD><EFBFBD>24Сʱ<D0A1><CAB1>
|
||||
BM8563_WriteReg(BM8563_HOUR, DecToBcd(pTime->bit_data.hour) & 0x3F);
|
||||
|
||||
// <20>գ<EFBFBD><D5A3><EFBFBD>ַ0x05<30><35><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>λ
|
||||
BM8563_WriteReg(BM8563_DAY, DecToBcd(pTime->bit_data.day) & 0x3F);
|
||||
|
||||
// <20>ܣ<EFBFBD><DCA3><EFBFBD>ַ0x06<30><36><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Χ1-7
|
||||
BM8563_WriteReg(BM8563_WEEK, pTime->bit_data.week & 0x07);
|
||||
|
||||
// <20>£<EFBFBD><C2A3><EFBFBD>ַ0x07<30><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λд<CEBB><D0B4>Bit7<74><37><EFBFBD>·<EFBFBD>ռ<EFBFBD><D5BC>5λ
|
||||
month_bcd = DecToBcd(pTime->bit_data.month);
|
||||
BM8563_WriteReg(BM8563_MONTH, (century_bit << 7) | (month_bcd & 0x1F));
|
||||
|
||||
// <20>꣨<EFBFBD><EAA3A8>ַ0x08<30><38><EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>2024<32><34>0x24<32><34>
|
||||
BM8563_WriteReg(BM8563_YEAR, DecToBcd(pTime->bit_data.year));
|
||||
reg_sec = BM8563_ReadReg(BM8563_SEC) & 0x80;//
|
||||
BM8563_WriteReg(BM8563_SEC, reg_sec | (DecToBcd(pTime->bit_data.second) & 0x7F));//ע<><D7A2><EFBFBD><EFBFBD>λΪ<CEBB><CEAA><EFBFBD><EFBFBD>ָʾ
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><>ȡBM8563<36><33>ǰʱ<C7B0>䵽<EFBFBD><E4B5BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param pTime: UnTimeOutput<75><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>루<EFBFBD><EBA3A8><EFBFBD>ڴ洢<DAB4><E6B4A2>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>
|
||||
* @retval <20><>
|
||||
*/
|
||||
void bm8563GetTime(UnTimeOutput *pTime) {
|
||||
if (pTime == NULL) {
|
||||
return; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>չ
|
||||
}
|
||||
|
||||
// <20><>ȡ<EFBFBD>루<EFBFBD><EBA3A8>ַ0x02<30><32>
|
||||
pTime->bit_data.second = BcdToDec(BM8563_ReadReg(BM8563_SEC) & 0x7F); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Чλ
|
||||
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD>ַ0x03<30><33>
|
||||
pTime->bit_data.minute = BcdToDec(BM8563_ReadReg(BM8563_MIN) & 0x7F);
|
||||
|
||||
// <20><>ȡСʱ<D0A1><CAB1><EFBFBD><EFBFBD>ַ0x04<30><34>
|
||||
pTime->bit_data.hour = BcdToDec(BM8563_ReadReg(BM8563_HOUR) & 0x3F); // 24Сʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Bit6-7
|
||||
|
||||
// <20><>ȡ<EFBFBD>գ<EFBFBD><D5A3><EFBFBD>ַ0x05<30><35>
|
||||
pTime->bit_data.day = BcdToDec(BM8563_ReadReg(BM8563_DAY) & 0x3F); // <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD>λ
|
||||
|
||||
// <20><>ȡ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ַ0x06<30><36>BM8563<36><33>ֵΪ0x01-0x07<30><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BCDת<44><D7AA><EFBFBD><EFBFBD>
|
||||
pTime->bit_data.week = BM8563_ReadReg(BM8563_WEEK) & 0x07; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3λ
|
||||
|
||||
// <20><>ȡ<EFBFBD>£<EFBFBD><C2A3><EFBFBD>ַ0x07<30><37>
|
||||
pTime->bit_data.month = BcdToDec(BM8563_ReadReg(BM8563_MONTH) & 0x1F); // <20><><EFBFBD><EFBFBD>Bit5-7
|
||||
|
||||
// <20><>ȡ<EFBFBD>꣨<EFBFBD><EAA3A8>ַ0x08<30><38><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ2000+<2B>꣩
|
||||
pTime->bit_data.year = BcdToDec(BM8563_ReadReg(BM8563_YEAR));
|
||||
void bm8563GetTime(UnTimeOutput *pTime)
|
||||
{
|
||||
pTime->bit_data.year = BcdToDec(BM8563_ReadReg(BM8563_YEAR) );//<2F><>ȥ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>10<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pTime->bit_data.month = BcdToDec(BM8563_ReadReg(BM8563_MONTH)&0x1F);
|
||||
pTime->bit_data.day = BcdToDec(BM8563_ReadReg(BM8563_DAY)&0x3F);
|
||||
pTime->bit_data.hour = BcdToDec(BM8563_ReadReg(BM8563_HOUR)&0x3F);
|
||||
pTime->bit_data.week = BM8563_ReadReg(BM8563_WEEK)&0x07;
|
||||
pTime->bit_data.minute = BcdToDec(BM8563_ReadReg(BM8563_MIN)&0x7F);
|
||||
pTime->bit_data.second = BcdToDec(BM8563_ReadReg(BM8563_SEC)&0x7F);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @brief <20><><EFBFBD><EFBFBD>BM8563<36><33><EFBFBD>ӣ<EFBFBD><D3A3>ֶ<EFBFBD>Ϊ0ʱ<30><CAB1><EFBFBD>ö<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @param pTime: UnTimeOutput<75><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>룬<EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* @retval <20><>
|
||||
*/
|
||||
ubyte bm8563SetAlarm(UnTimeOutput *pTime) {
|
||||
|
||||
UnTimeOutput un_temp_output = {0};//<2F><><EFBFBD><EFBFBD><EFBFBD>趨ʱ<E8B6A8><CAB1>
|
||||
ubyte bm8563SetAlarm(UnTimeOutput *pTime)
|
||||
{
|
||||
UnTimeOutput current_time_temp = {0};
|
||||
UnTimeOutput output_time_temp = {0};
|
||||
ubyte carry_hour = 0;
|
||||
ubyte carry_day = 0;
|
||||
ubyte month_days = 0;
|
||||
//-------------------------------------------------
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>
|
||||
if( (pTime == NULL) || ( (0 == pTime->bit_data.minute) && (0 == pTime->bit_data.hour) && (0 == pTime->bit_data.day) ) )//<2F><><EFBFBD>ݶ<EFBFBD>Ϊ0<CEAA><30><EFBFBD><EFBFBD>ָ<EFBFBD>붼Ϊ0
|
||||
{
|
||||
// <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
return 1;
|
||||
}
|
||||
|
||||
bm8563GetTime(¤ttime);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-59<35><39>
|
||||
un_temp_output.bit_data.minute = currenttime.bit_data.minute + pTime->bit_data.minute;
|
||||
if (un_temp_output.bit_data.minute >= 60) {
|
||||
un_temp_output.bit_data.minute -= 60;
|
||||
carry_hour = 1; // <20><>Сʱ<D0A1><CAB1>λ
|
||||
}
|
||||
|
||||
// Сʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>0-23<32><33>
|
||||
un_temp_output.bit_data.hour = currenttime.bit_data.hour + pTime->bit_data.hour + carry_hour;
|
||||
if (un_temp_output.bit_data.hour >= 24) {
|
||||
un_temp_output.bit_data.hour -= 24;
|
||||
carry_day = 1; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>迼<EFBFBD><E8BFBC><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
un_temp_output.bit_data.day = currenttime.bit_data.day + pTime->bit_data.day + carry_day;
|
||||
//2<>¿<EFBFBD><C2BF><EFBFBD>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
month_days = getMonthDays( (currenttime.bit_data.year+2000),currenttime.bit_data.month);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>迼<EFBFBD><E8BFBC><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (un_temp_output.bit_data.day > month_days)
|
||||
}
|
||||
|
||||
bm8563GetTime(¤t_time_temp);//<2F>Ȼ<EFBFBD>ȡ<EFBFBD><C8A1>ǰʱ<C7B0><CAB1>
|
||||
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
output_time_temp.bit_data.minute = current_time_temp.bit_data.minute + pTime->bit_data.minute;
|
||||
if( output_time_temp.bit_data.minute >= 60 )//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>λ
|
||||
{
|
||||
un_temp_output.bit_data.day -= month_days;
|
||||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>£<EFBFBD><C2A3><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD>죬BM8563<36><33><EFBFBD><EFBFBD>ֻ֧<D6BB><D6A7><EFBFBD><EFBFBD>ô<EFBFBD><C3B4>
|
||||
if(un_temp_output.bit_data.day == currenttime.bit_data.day)
|
||||
{
|
||||
un_temp_output.bit_data.day = (currenttime.bit_data.day - 1);
|
||||
}
|
||||
output_time_temp.bit_data.minute = output_time_temp.bit_data.minute - 60;
|
||||
carry_hour = 1;
|
||||
}
|
||||
|
||||
un_temp_output.bit_data.week = 0;//<2F><><EFBFBD><EFBFBD>Ҫ<EFBFBD>ܱ<EFBFBD><DCB1><EFBFBD>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD>ַ0x09<30><39>
|
||||
BM8563_WriteReg(BM8563_ALARM_MIN, DecToBcd(un_temp_output.bit_data.minute) & 0x7F); // AE_M=0<><30><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD>Сʱ<D0A1><CAB1><EFBFBD>ã<EFBFBD><C3A3><EFBFBD>ַ0x0A<30><41>
|
||||
BM8563_WriteReg(BM8563_ALARM_HOUR, DecToBcd(un_temp_output.bit_data.hour) & 0x7F); // AE_H=0<><30><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>
|
||||
// <20>ձ<EFBFBD><D5B1><EFBFBD>/<2F>ܱ<EFBFBD><DCB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
BM8563_WriteReg(BM8563_ALARM_DAY, DecToBcd(un_temp_output.bit_data.day) & 0x7F); // AE_D=0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD>
|
||||
BM8563_WriteReg(BM8563_ALARM_WEEK, 0x80); // AE_W=1<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܣ<EFBFBD>
|
||||
//<2F><><EFBFBD><EFBFBD>Сʱ
|
||||
output_time_temp.bit_data.hour = current_time_temp.bit_data.hour + pTime->bit_data.hour + carry_hour;
|
||||
if( output_time_temp.bit_data.hour >= 24 )//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>λ
|
||||
{
|
||||
output_time_temp.bit_data.hour = output_time_temp.bit_data.hour - 24;
|
||||
carry_day = 1;
|
||||
}
|
||||
|
||||
output_time_temp.bit_data.day = current_time_temp.bit_data.day + pTime->bit_data.day + carry_day;
|
||||
if( output_time_temp.bit_data.day >= 31 )//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>λ
|
||||
{
|
||||
output_time_temp.bit_data.day = 31;
|
||||
}
|
||||
|
||||
output_time_temp.bit_data.week = 0;
|
||||
|
||||
BM8563_WriteReg( BM8563_ALARM_DAY, DecToBcd(output_time_temp.bit_data.day)&0x3F);//д<>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ΪBCD<43><44>
|
||||
BM8563_WriteReg( BM8563_ALARM_HOUR, DecToBcd(output_time_temp.bit_data.hour)&0x3F);//дСʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ΪBCD<43><44>
|
||||
BM8563_WriteReg( BM8563_ALARM_WEEK, 0x80 );//д<>ܣ<EFBFBD><DCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>Բ<EFBFBD><D4B2><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
|
||||
BM8563_WriteReg( BM8563_ALARM_MIN, DecToBcd(output_time_temp.bit_data.minute)&0x7F);//д<><D0B4><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>ΪBCD<43><44>
|
||||
|
||||
// <20>루<EFBFBD><EBA3A8>ַ0x02<30><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Bit7<74><37>CHʱ<48><CAB1>ֹͣλ<D6B9><CEBB>
|
||||
// ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD>ַ0x01<30><31>AIE=1<><31>AF=0<><30>
|
||||
BM8563_WriteReg(BM8563_CSR2, 0x02);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -383,33 +302,3 @@ ubyte bm8563SetAlarm(UnTimeOutput *pTime) {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//// <20><><EFBFBD><EFBFBD> BM8563 <20><><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>ʵ<EFBFBD>ּ<EFBFBD><D6BC><EFBFBD> 4 Сʱ<D0A1>Ļ<EFBFBD><C4BB><EFBFBD>
|
||||
//void BM8563_Set4HourAlarm()
|
||||
//{
|
||||
// unsigned char alarmMin = BcdToDec( BM8563_ReadReg(BM8563_MIN) );
|
||||
// unsigned char alarmMinBcd = 0;
|
||||
////------------------------------------------------------------
|
||||
// alarmMin = (alarmMin + 2) % 60;//<2F><><EFBFBD><EFBFBD> 4 Сʱ<D0A1><CAB1><EFBFBD><EFBFBD>Сʱ<D0A1><CAB1>
|
||||
// alarmMinBcd = DecToBcd(alarmMin);
|
||||
|
||||
// BM8563_WriteReg(BM8563_ALARM_MIN,alarmMinBcd&0x7F);// <20><><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// BM8563_WriteReg(BM8563_ALARM_HOUR, 0x80); // <20><>Ч
|
||||
// BM8563_WriteReg(BM8563_ALARM_DAY , 0x80); // <20><>Ч
|
||||
// BM8563_WriteReg(BM8563_ALARM_WEEK, 0x80); // <20><>Ч
|
||||
//
|
||||
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><D3BF>ƼĴ<C6BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>
|
||||
// BM8563_WriteReg(BM8563_CSR2, 0x02);
|
||||
//}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
9
RTC.h
9
RTC.h
@@ -8,8 +8,6 @@
|
||||
typedef enum {
|
||||
STATE_INIT = 0, // <20><>ʼ<EFBFBD><CABC>״̬<D7B4><CCAC><EFBFBD>״<EFBFBD><D7B4><EFBFBD><EFBFBD>У<EFBFBD>
|
||||
STATE_ON, // ON״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ģʽ<C4A3><CABD>
|
||||
STATE_OFF, // OFF״̬<D7B4><CCAC><EFBFBD><D7BC><EFBFBD><EFBFBD><EFBFBD>ߣ<EFBFBD>
|
||||
STATE_OFF2, // OFF2״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><DFBC>أ<EFBFBD>
|
||||
STATE_ON2 // ON2״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>
|
||||
} SystemState;
|
||||
|
||||
@@ -38,7 +36,7 @@ typedef union _UnTimeOutput
|
||||
extern unsigned char bySta;
|
||||
extern UnTimeOutput currenttime;
|
||||
extern UnTimeOutput un_time_output1;//<2F><><EFBFBD><EFBFBD><EFBFBD>趨ʱ<E8B6A8><CAB1>
|
||||
|
||||
extern UnTimeOutput inittime;// Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2025<32>꣬8<EAA3AC><38>2<EFBFBD><32> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>16<31><36>37<33><37>00
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD> BM8563 <20><> I2C <20><>ַ
|
||||
@@ -64,6 +62,8 @@ extern UnTimeOutput un_time_output1;//
|
||||
#define BM8563_AF_BIT 0x08 // AF<41><46>־λ<D6BE><CEBB>Bit3<74><33>
|
||||
|
||||
|
||||
|
||||
unsigned char BcdToDec(unsigned char bcd);
|
||||
ubyte leapYear(uword year);
|
||||
void BM8563_InitTime();
|
||||
void BM8563_Set4HourCountdown();
|
||||
@@ -74,7 +74,8 @@ void bm8563GetTime(UnTimeOutput *pTime);
|
||||
ubyte bm8563SetAlarm(UnTimeOutput *pTime);
|
||||
void bm8563SetTime(UnTimeOutput *pTime);
|
||||
bool bm8563CheckAlarmFlag(void);
|
||||
void bm8563ClearAlarmFlag(void);
|
||||
|
||||
|
||||
|
||||
void iic_start(void);
|
||||
void iic_stop(void);
|
||||
|
||||
332
User.c
332
User.c
@@ -17,6 +17,7 @@ uword RgCanPerid = 1000;
|
||||
UnTimeOutput sleeptime = {0};
|
||||
UnTimeOutput waketime = {0};
|
||||
UnTimeOutput currenttime = {0};
|
||||
UnTimeOutput inittime = {00,1,1,0,0,0,0,0};// Ĭ<><C4AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2000<30>꣬1<EAA3AC><31>1<EFBFBD><31> <20><><EFBFBD>գ<EFBFBD>0<EFBFBD><30>0<EFBFBD><30>00
|
||||
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>
|
||||
@@ -109,7 +110,7 @@ void canSendTo(ubyte index,ubyte *buf)
|
||||
CanTransmitbuf[6] = buf[4];
|
||||
CanTransmitbuf[7] = buf[5];
|
||||
CanTransmitbuf[4] = buf[6];
|
||||
CanTransmitbuf[5] = buf[7];
|
||||
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>
|
||||
@@ -127,7 +128,7 @@ void CanTX(void)
|
||||
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;
|
||||
UnInfCan_1.ArrData.Arr[0][4] = waketime.bit_data.day;
|
||||
|
||||
CanTransmit();
|
||||
}
|
||||
@@ -136,231 +137,69 @@ void CanTX(void)
|
||||
//------------------------------------------------------------------
|
||||
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;
|
||||
|
||||
//-------------------------------------------
|
||||
if(NORMAL == flg_wake_ecu)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
bm8563SetAlarm(&waketime); //<2F><><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
||||
*RgSTT = STATE_ON;
|
||||
}
|
||||
else
|
||||
{
|
||||
*RgSTT = STATE_INIT;
|
||||
}
|
||||
break;
|
||||
|
||||
case STATE_ON:
|
||||
if(bm8563CheckAlarmFlag() || ( (STOP_PIN == OFF) && (POWER_STANDBY == powerstate) ) || (WAKE_UP_PIN == OFF) )//10<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD>߰<EFBFBD><EFBFBD>¼<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߹ر<EFBFBD><EFBFBD>ܿ<EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
bm8563ClearAlarmFlag();
|
||||
bm8563SetAlarm(&sleeptime);
|
||||
KGF_PIN = 0; //KGF<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
CAN_PIN = 1; //canоƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
BATTERY_PIN = 0;//<EFBFBD><EFBFBD><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;
|
||||
//-------------------------------------------
|
||||
if( (bm8563CheckAlarmFlag()) || (OFF == WAKE_UP_PIN) )//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD>䵽<EFBFBD>Լ<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>
|
||||
bm8563SetAlarm(&sleeptime);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
KGF_PIN = 0; //KGF<47><46><EFBFBD><EFBFBD>
|
||||
CAN_PIN = 1; //canоƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
BATTERY_PIN = 0;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*RgSTT = STATE_INIT; // <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>״̬
|
||||
PS_vSetPowerDown();//<EFBFBD><EFBFBD><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_ON; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><D1BA><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><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>
|
||||
}
|
||||
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<EFBFBD><EFBFBD><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;
|
||||
// }
|
||||
|
||||
if( (WAKE_UP_PIN == OFF) || (POWER_STANDBY == powerstate) )//<2F>ܿ<EFBFBD><DCBF>عرջ<D8B1><D5BB>߽<EFBFBD><DFBD><EFBFBD>standy
|
||||
{
|
||||
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>
|
||||
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_INIT; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
PS_vSetPowerDown();//<2F><><EFBFBD><EFBFBD>
|
||||
}
|
||||
else
|
||||
{
|
||||
*RgSTT = STATE_ON2; // <20><><EFBFBD><EFBFBD>
|
||||
}
|
||||
break;
|
||||
default:;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//CAN<41><4E><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
|
||||
void CanRXTX(void)
|
||||
{
|
||||
@@ -417,6 +256,7 @@ void CanRXTX(void)
|
||||
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);
|
||||
|
||||
@@ -426,7 +266,10 @@ void CanRXTX(void)
|
||||
|
||||
//<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>
|
||||
|
||||
if(TimeTemp >= MAX_TIME)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>30<33><30>
|
||||
{
|
||||
TimeTemp = MAX_TIME;
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD> <20><> Сʱ
|
||||
HoursTemp = TimeTemp / 60;
|
||||
sleeptime.bit_data.minute = TimeTemp % 60;
|
||||
@@ -435,9 +278,9 @@ void CanRXTX(void)
|
||||
DaysTemp = HoursTemp / 24;
|
||||
sleeptime.bit_data.hour = HoursTemp % 24;
|
||||
|
||||
if(DaysTemp >= 31)//<2F>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
||||
if(DaysTemp >= 30)//<2F>ճ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
||||
{
|
||||
sleeptime.bit_data.day = 31;
|
||||
sleeptime.bit_data.day = 30;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -446,7 +289,10 @@ void CanRXTX(void)
|
||||
|
||||
//<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>
|
||||
|
||||
if(TimeTemp > MAX_TIME)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>30<33><30>
|
||||
{
|
||||
TimeTemp = MAX_TIME;
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD> <20><> Сʱ
|
||||
HoursTemp = TimeTemp / 60;
|
||||
waketime.bit_data.minute = TimeTemp % 60;
|
||||
@@ -455,9 +301,9 @@ void CanRXTX(void)
|
||||
DaysTemp = HoursTemp / 24;
|
||||
waketime.bit_data.hour = HoursTemp % 24;
|
||||
|
||||
if(DaysTemp >= 31)//<2F>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
||||
if(DaysTemp >= 30)//<2F>ճ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
||||
{
|
||||
waketime.bit_data.day = 31;
|
||||
waketime.bit_data.day = 30;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -465,9 +311,6 @@ void CanRXTX(void)
|
||||
}
|
||||
}
|
||||
|
||||
UnSwSample_1.arr[2] = waketime.bit_data.minute;
|
||||
UnSwSample_1.arr[1] = sleeptime.bit_data.minute;
|
||||
|
||||
//<2F><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
|
||||
SystemStateMachine(&sleepstate);
|
||||
|
||||
@@ -478,10 +321,23 @@ void CanRXTX(void)
|
||||
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;
|
||||
// <20><>ȡ<EFBFBD><C8A1><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD>ַ0x03<30><33>
|
||||
UnSwSample_1.arr[4] = (BM8563_ReadReg(BM8563_ALARM_MIN));
|
||||
|
||||
// <20><>ȡСʱ<D0A1><CAB1><EFBFBD><EFBFBD>ַ0x04<30><34>
|
||||
UnSwSample_1.arr[2] = (BM8563_ReadReg(BM8563_ALARM_HOUR)); // 24Сʱ<D0A1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Bit6-7
|
||||
|
||||
// <20><>ȡ<EFBFBD>գ<EFBFBD><D5A3><EFBFBD>ַ0x05<30><35>
|
||||
UnSwSample_1.arr[1] = (BM8563_ReadReg(BM8563_ALARM_DAY)); // <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD>λ
|
||||
|
||||
// <20><>ȡ<EFBFBD>գ<EFBFBD><D5A3><EFBFBD>ַ0x05<30><35>
|
||||
UnSwSample_1.arr[5] = (BM8563_ReadReg(BM8563_ALARM_DAY)); // <20><><EFBFBD>ο<EFBFBD><CEBF><EFBFBD>λ
|
||||
|
||||
// <20><>ȡ<EFBFBD>ܣ<EFBFBD><DCA3><EFBFBD>ַ0x06<30><36>BM8563<36><33>ֵΪ0x01-0x07<30><37><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BCDת<44><D7AA><EFBFBD><EFBFBD>
|
||||
UnSwSample_1.arr[3] = BM8563_ReadReg(BM8563_ALARM_WEEK); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>3λ
|
||||
|
||||
CanTX();
|
||||
|
||||
if(vcu_can_cnt == vcu_can_last)//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
||||
{
|
||||
@@ -496,14 +352,14 @@ void CanRXTX(void)
|
||||
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>
|
||||
|
||||
un_inf_can_kgf_output2.bit_data.KGF04 = 0x01;//KGF20<32>ӵ<EFBFBD><D3B5><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_SwTxKGF1,(ubyte *)&un_inf_can_kgf_output1.arr[0]);
|
||||
}
|
||||
// canSendTo(DF_SwTxKGF1,(ubyte *)&un_inf_can_kgf_output1.arr[0]);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -518,7 +374,7 @@ void CanRXTX(void)
|
||||
|
||||
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);
|
||||
canSendTo(DF_SwTxTemp,(ubyte *)&UnSwSample_1.arr[0]);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -529,7 +385,7 @@ void CanRXTX(void)
|
||||
CAN_vInit();
|
||||
can_error_cnt = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -512,7 +512,7 @@ BOOL GetTemp(void)
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
signedInt_f_tem = (int)(fTemp*10);
|
||||
// <20>¶<EFBFBD> <20>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
UnSwSample_1.bit_data.temperature[i] = (unsigned int)signedInt_f_tem;
|
||||
UnSwSample_1.bit_data.temperature[1] = (unsigned int)signedInt_f_tem;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
1
user.H
1
user.H
@@ -9,6 +9,7 @@
|
||||
#define DF_SwTxTemp 12
|
||||
#define DF_SwRxKGF2 13
|
||||
|
||||
#define MAX_TIME 43200 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD>Ҳ<EFBFBD><D2B2><EFBFBD><EFBFBD>30<33><30><EFBFBD><EFBFBD>
|
||||
|
||||
|
||||
#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
|
||||
|
||||
Reference in New Issue
Block a user