Commit 36917a63 authored by 时昊's avatar 时昊

feat:删除无用的功能

parent d7307d2b
SET PATH=C:\Keil_v5\ARM\ARMCC\Bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Users\tyw05\AppData\Local\Microsoft\WindowsApps;
SET PATH=C:\Keil_v5\ARM\ARMCC\Bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\
SET CPU_TYPE=BAT32G139GK64FB
SET CPU_VENDOR=Cmsemicon
SET UV2_TARGET=RMR42E
SET CPU_CLOCK=0x00B71B00
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\backlight.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_espeed.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_vspeed.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\gpiouser.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\can_ch0_can_communication_matrix.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\commoninterface.__i"
......@@ -13,13 +11,8 @@ SET CPU_CLOCK=0x00B71B00
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\gui_display.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\can_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\can_app.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_tpms.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\faultcode.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_voltage.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\bluetooth.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\protocol_crc16.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\protocol_lib.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\protocol_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\bu98r10.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\services_mileage_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\eemanager_interface.__i"
......
......@@ -393,26 +393,6 @@
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\BackLight\BackLight.h</FilePath>
</File>
<File>
<FileName>Data_ESpeed.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\Data_ESpeed\Data_ESpeed.c</FilePath>
</File>
<File>
<FileName>Data_ESpeed.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\Data_ESpeed\Data_ESpeed.h</FilePath>
</File>
<File>
<FileName>Data_VSpeed.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\Data_VSpeed\Data_VSpeed.c</FilePath>
</File>
<File>
<FileName>Data_VSpeed.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\Data_VSpeed\Data_VSpeed.h</FilePath>
</File>
<File>
<FileName>Application.h</FileName>
<FileType>5</FileType>
......@@ -493,16 +473,6 @@
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\CAN_User\Can_App.h</FilePath>
</File>
<File>
<FileName>Data_TPMS.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\Data_TPMS\Data_TPMS.c</FilePath>
</File>
<File>
<FileName>Data_TPMS.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\Data_TPMS\Data_TPMS.h</FilePath>
</File>
<File>
<FileName>FaultCode.c</FileName>
<FileType>1</FileType>
......@@ -523,46 +493,6 @@
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\Data_Voltage\Data_Voltage.h</FilePath>
</File>
<File>
<FileName>BlueTooth.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\BLUETOOTH\BlueTooth.c</FilePath>
</File>
<File>
<FileName>BlueTooth.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\BLUETOOTH\BlueTooth.h</FilePath>
</File>
<File>
<FileName>Protocol_CRC16.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\BLUETOOTH\Protocol_CRC16.c</FilePath>
</File>
<File>
<FileName>Protocol_CRC16.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\BLUETOOTH\Protocol_CRC16.h</FilePath>
</File>
<File>
<FileName>Protocol_Lib.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\BLUETOOTH\Protocol_Lib.c</FilePath>
</File>
<File>
<FileName>Protocol_Lib.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\BLUETOOTH\Protocol_Lib.h</FilePath>
</File>
<File>
<FileName>Protocol_User.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\BLUETOOTH\Protocol_User.c</FilePath>
</File>
<File>
<FileName>Protocol_User.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\BLUETOOTH\Protocol_User.h</FilePath>
</File>
</Files>
</Group>
<Group>
......
SET PATH=C:\Keil_v5\ARM\ARMCC\Bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Users\tyw05\AppData\Local\Microsoft\WindowsApps;
SET ARMCC5_ASMOPT=--diag_suppress=9931
SET ARMCC5_CCOPT=--diag_suppress=9931
SET ARMCC5_LINKOPT=--diag_suppress=9931
SET CPU_TYPE=BAT32A279KM64FB
SET CPU_VENDOR=Cmsemicon
SET UV2_TARGET=TianYing200
SET CPU_CLOCK=0x00B71B00
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_fuel.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\backlight.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_espeed.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_vspeed.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\gpiouser.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\can_ch0_can_communication_matrix.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\commoninterface.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\seg_display.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\gui_display.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\can_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\can_app.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_coolant.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_tpms.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\faultcode.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\data_voltage.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\bluetooth.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\protocol_crc16.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\protocol_lib.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\protocol_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\bu98r10.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\services_mileage_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\eemanager_interface.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\key_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\line_in_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\led_driver_interface.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\simulated_iic_2_master.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\analog_circuits.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\analog_signals.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\light_sensor_interface.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\powermanag_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\system_monitor_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\telltales_user.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\maintenance.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\system_monitor_1.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\rte_tick_timer_bat32a239.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\rte_wdt_bat32a239.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\rte_gpio_bat32a239.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\deepsleep.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\rte_rtc.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\trmerm.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\rte_adc_interim_version.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\rte_can.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\rte_clock_select_bat32a239.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\uart_demo.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\main.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\sys_scheduler.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\sys_scheduler_lib.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\sys_task_list.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\adc.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\can.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\cgc.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\cmp.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\dac.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\delay.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\dma.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\elc.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\epwm.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\flash.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\gpio.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\i2c.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\i2ca.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\interval.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\intp.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\key.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\pcbz.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\pga.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\rtc.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\sci_common.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\sspi.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\tim.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\tima.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\timb.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\timm.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\uart.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\wdt.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\isr.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\docan_iso15765.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\uds_iso14229_server.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\uds_iso14229_services.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\isr_bat32a279.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmAsm" --Via ".\objects\startup_bat32a279._ia"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmCC" --Via ".\objects\system_bat32a279.__i"
"C:\Keil_v5\ARM\ARMCC\Bin\ArmLink" --Via ".\Objects\TianYing.lnp"
......@@ -4,8 +4,7 @@
#include "GPIO_USER\GpioUser.h"
#include "BackLight\BackLight.h"
#include "Data_VSpeed\Data_VSpeed.h"
#include "Data_ESpeed\Data_ESpeed.h"
#include "CommonInterface\CommonInterface.h"
#include "SEG_DISPLAY\SEG_DISPLAY.h"
#include "SEG_DISPLAY\SEG_Ref.h"
......@@ -13,11 +12,7 @@
#include "CAN_APP\CAN_CH0_CAN_Communication_Matrix.h"
#include "Can_User/Can_User.h"
#include "Can_User/Can_App.h"
#include "Data_TPMS/Data_TPMS.h"
#include "Data_Voltage/Data_Voltage.h"
#include "FaultCode/FaultCode.h"
#include "BLUETOOTH/BlueTooth.h"
#include "BLUETOOTH/Protocol_CRC16.h"
#include "BLUETOOTH/Protocol_Lib.h"
#include "BLUETOOTH/Protocol_User.h"
#endif
#include "BlueTooth.h"
BlueTooth_t BlueTooth;
uint8_t UUIDData[32] = {"tywtywtywtywtywtywtywtywtywtyw03"};
void BlueTooth_KL30_KL15_Wakeup_Init(void)
{
BlueTooth.BLE_St = BLUE_STATE_Starting;
BlueTooth.Navigation_St = EM_ESP32_NAVI_ST_STANDBY;
BlueTooth.Navigation_Code = 0;
BlueTooth.Navigation_Mileage = 0;
}
void Send_UUID_To_Esp32(void)
{
Protocol_Send(MCU_ESP32_0x03, UUIDData, 32);
}
uint8_t Get_Navigation_St_Dis(void)
{
return BlueTooth.Navigation_St;
}
uint8_t Get_Navigation_Code_Dis(void)
{
return BlueTooth.Navigation_Code;
}
uint32_t Get_Navigation_Mileage_Dis(void)
{
return BlueTooth.Navigation_Mileage;
}
\ No newline at end of file
#ifndef __BLUE_TOOTH_H_
#define __BLUE_TOOTH_H_
#include "Protocol_Lib.h"
#include <stdio.h>
#include <stdint.h>
#include "Components.h"
#include "Application.h"
#define ESP32_MCU_0x10 0x10 //蓝牙模组启动发送ID
#define MCU_ESP32_0x20 0x20 //蓝牙模组启动后,MCU回复ID
#define ESP32_MCU_0x01 0x01 //ESP32发送蓝牙导航信息的ID
#define ESP32_MCU_0x12 0x12 //低功耗蓝牙启动状态及蓝牙名称
#define MCU_ESP32_0x03 0x03 //MCU发送UUID
enum
{
BLUE_STATE_Starting, //蓝牙模组启动中
BLUE_STATE_ON, //蓝牙模组启动完成
BLUE_STATE_OFF,
};
typedef struct __attribute__((aligned(4)))
{
uint8_t BlueTooth_St; /*蓝牙模组启动状态 0启动中 1启动完成*/
uint8_t Navigation_St;/*导航状态 0x35 未导航或导航结束 0x33 正在导航*/
uint8_t Navigation_Code;/*蓝牙导向编码*/
uint32_t Navigation_Mileage;/*剩余里程*/
uint8_t BLE_St;
} BlueTooth_t;
typedef enum __attribute__((aligned(4)))
{
EM_ESP32_BT_STARTUP_ST_STANDBY = 0,
EM_ESP32_BT_STARTUP_ST_SUCCESS,
} EM_ESP32_BT_STARTUP_ST_T;
typedef enum __attribute__((aligned(4)))
{
EM_ESP32_NAVI_ST_STANDBY = 0,
EM_ESP32_NAVI_ST_NAVIGATING,
} EM_ESP32_NAVI_ST_T;
typedef struct __attribute__((aligned(4)))
{
EM_ESP32_BT_STARTUP_ST_T Startup;
EM_ESP32_NAVI_ST_T NaviSt;
uint8_t NaviCode;
uint8_t BlueToothConnectSt;
uint32_t NaviMileage;
uint8_t BlueName[6];
} ESP32_COMM_INFO_T;
extern BlueTooth_t BlueTooth;
uint8_t Get_Navigation_St_Dis(void);
uint8_t Get_Navigation_Code_Dis(void);
uint32_t Get_Navigation_Mileage_Dis(void);
void Send_UUID_To_Esp32(void);
void BlueTooth_KL30_KL15_Wakeup_Init(void);
#endif
/**
* @file Protocol_CRC16.c
* @brief CRC16计算
* @details CRC16计算
* @author myliu
* @date 2022.05.09
* @version V1.0
* @copyright myiu
*/
#include "Protocol_CRC16.h"
static const Protocol_uint8_t CRC16_TAB_H [ 256 ] = {0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x01u, 0xC0u, 0x80u, 0x41u, 0x00u, 0xC1u, 0x81u, 0x40u};
static const Protocol_uint8_t CRC16_TAB_L [ 256 ] = {0x00u, 0xC0u, 0xC1u, 0x01u, 0xC3u, 0x03u, 0x02u, 0xC2u, 0xC6u, 0x06u, 0x07u, 0xC7u, 0x05u, 0xC5u, 0xC4u, 0x04u, 0xCCu, 0x0Cu, 0x0Du, 0xCDu, 0x0Fu, 0xCFu, 0xCEu, 0x0Eu, 0x0Au, 0xCAu, 0xCBu, 0x0Bu, 0xC9u, 0x09u, 0x08u, 0xC8u, 0xD8u, 0x18u, 0x19u, 0xD9u, 0x1Bu, 0xDBu, 0xDAu, 0x1Au, 0x1Eu, 0xDEu, 0xDFu, 0x1Fu, 0xDDu, 0x1Du, 0x1Cu, 0xDCu, 0x14u, 0xD4u, 0xD5u, 0x15u, 0xD7u, 0x17u, 0x16u, 0xD6u, 0xD2u, 0x12u, 0x13u, 0xD3u, 0x11u, 0xD1u, 0xD0u, 0x10u, 0xF0u, 0x30u, 0x31u, 0xF1u, 0x33u, 0xF3u, 0xF2u, 0x32u, 0x36u, 0xF6u, 0xF7u, 0x37u, 0xF5u, 0x35u, 0x34u, 0xF4u, 0x3Cu, 0xFCu, 0xFDu, 0x3Du, 0xFFu, 0x3Fu, 0x3Eu, 0xFEu, 0xFAu, 0x3Au, 0x3Bu, 0xFBu, 0x39u, 0xF9u, 0xF8u, 0x38u, 0x28u, 0xE8u, 0xE9u, 0x29u, 0xEBu, 0x2Bu, 0x2Au, 0xEAu, 0xEEu, 0x2Eu, 0x2Fu, 0xEFu, 0x2Du, 0xEDu, 0xECu, 0x2Cu, 0xE4u, 0x24u, 0x25u, 0xE5u, 0x27u, 0xE7u, 0xE6u, 0x26u, 0x22u, 0xE2u, 0xE3u, 0x23u, 0xE1u, 0x21u, 0x20u, 0xE0u, 0xA0u, 0x60u, 0x61u, 0xA1u, 0x63u, 0xA3u, 0xA2u, 0x62u, 0x66u, 0xA6u, 0xA7u, 0x67u, 0xA5u, 0x65u, 0x64u, 0xA4u, 0x6Cu, 0xACu, 0xADu, 0x6Du, 0xAFu, 0x6Fu, 0x6Eu, 0xAEu, 0xAAu, 0x6Au, 0x6Bu, 0xABu, 0x69u, 0xA9u, 0xA8u, 0x68u, 0x78u, 0xB8u, 0xB9u, 0x79u, 0xBBu, 0x7Bu, 0x7Au, 0xBAu, 0xBEu, 0x7Eu, 0x7Fu, 0xBFu, 0x7Du, 0xBDu, 0xBCu, 0x7Cu, 0xB4u, 0x74u, 0x75u, 0xB5u, 0x77u, 0xB7u, 0xB6u, 0x76u, 0x72u, 0xB2u, 0xB3u, 0x73u, 0xB1u, 0x71u, 0x70u, 0xB0u, 0x50u, 0x90u, 0x91u, 0x51u, 0x93u, 0x53u, 0x52u, 0x92u, 0x96u, 0x56u, 0x57u, 0x97u, 0x55u, 0x95u, 0x94u, 0x54u, 0x9Cu, 0x5Cu, 0x5Du, 0x9Du, 0x5Fu, 0x9Fu, 0x9Eu, 0x5Eu, 0x5Au, 0x9Au, 0x9Bu, 0x5Bu, 0x99u, 0x59u, 0x58u, 0x98u, 0x88u, 0x48u, 0x49u, 0x89u, 0x4Bu, 0x8Bu, 0x8Au, 0x4Au, 0x4Eu, 0x8Eu, 0x8Fu, 0x4Fu, 0x8Du, 0x4Du, 0x4Cu, 0x8Cu, 0x44u, 0x84u, 0x85u, 0x45u, 0x87u, 0x47u, 0x46u, 0x86u, 0x82u, 0x42u, 0x43u, 0x83u, 0x41u, 0x81u, 0x80u, 0x40u};
/**
* 获取CRC16校验和
*/
/**
* @brief 计算传入数据的CRC16
* @param[in] pData 计算的数据内容
* @param[in] len 计算的数据长度
*
* @return 校验和
*
* @since 1.0.0
*/
Protocol_uint16_t getCheckSum(const Protocol_uint8_t *pData, int len)
{
Protocol_uint8_t u8_crc_h = 0xFFu;
Protocol_uint8_t u8_crc_l = 0xFFu;
Protocol_uint8_t u8_index = 0u;
Protocol_uint8_t i = 0u;
Protocol_uint16_t re_value;
while ( len-- )
{
u8_index = u8_crc_h ^ (pData [ i++ ]);
u8_crc_h = u8_crc_l ^ CRC16_TAB_H [ u8_index ];
u8_crc_l = CRC16_TAB_L [ u8_index ];
}
re_value = ( Protocol_uint16_t )u8_crc_h << 8u;
re_value |= u8_crc_l;
return re_value;
}
#ifndef PROTOCOL_CRC16_H
#define PROTOCOL_CRC16_H
//#include "Application.h"
#include "Protocol_Lib.h"
#include <stdio.h>
#include <stdint.h>
Protocol_uint16_t getCheckSum(const Protocol_uint8_t *pData, int len);
#endif
/**
* @file Protocol_Lib.c
* @brief 串口协议解析
* @details 串口协议解析
* @author myliu
* @date 2022.05.09
* @version V1.0
* @copyright myiu
*/
#include <stdio.h>
#include <string.h>
#include "Protocol_Lib.h"
static UARTOpen UARTOpen_Cbk;
static UARTSend UARTSend_Cbk;
static UARTRead UARTRead_Cbk;
static ProcParse ProcParseCbk;
static UARTClose UARTClose_Cbk;
static ProtocolSetData ProtocolSetData_Cbk;
static Protocol_uint8_t *mDataBufPtr = Protocol_NULL;
static Protocol_uint16_t mDataBufLen = 0;
static Protocol_uint32_t DataBufMaxLen = 0;
//#define DEBUG_PRO_DATA 0
/**
* @brief 初始化函数
* @param[in] pMemSpace 分配给协议库的内存空间,用来缓存串口数据
* @param[in] MemLen 分配的内存空间大小
* @param[in] pFunc 回调函数,包括串口打开、发送、读取、关闭,也包括解析后数据回传
* @param[in] ProcParseCbk 此回调函数,返回数据从FrameNo开始到CRC16之前,和ProtocolSetData_Cbk二选一
* @param[in] ProtocolSetData_Cbk 此回调函数,返回数据区分命令字、电源状态等,和ProcParseCbk二选一,详见结构体Protocol_Data_t
*
* @warning 此函数KL30和Wakeup都要调用,否则未分配内存,功能不好使,也有可能造成野指针复位
*
* @since 1.0.0
*/
void Protocol_Init(Protocol_uint8_t *pMemSpace, Protocol_uint32_t MemLen, Protocol_Func_t *pFunc)
{
mDataBufPtr = pMemSpace;
DataBufMaxLen = MemLen;
UARTOpen_Cbk = pFunc->UARTOpen_Cbk;
UARTSend_Cbk = pFunc->UARTSend_Cbk;
UARTRead_Cbk = pFunc->UARTRead_Cbk;
ProcParseCbk = pFunc->ProcParseCbk;
UARTClose_Cbk = pFunc->UARTClose_Cbk;
ProtocolSetData_Cbk = pFunc->ProtocolSetData_Cbk;
if ( UARTOpen_Cbk != Protocol_NULL )
{
UARTOpen_Cbk( );
}
return;
}
/**
* @brief 串口协议服务函数,包括读取数据,解析数据,如在外部读取数据,可不调用此函数
*
* @warning 此函数可自定义周期调用,建议20ms周期调用,最大不可超过协议的最小发送周期
*
* @since 1.0.0
*/
void Protocol_Service(void)
{
int len;
Protocol_uint32_t readNum = 0;
if ( UARTRead_Cbk != Protocol_NULL )
{
readNum = UARTRead_Cbk(mDataBufPtr + mDataBufLen, 256 - mDataBufLen);
if ( readNum > 0 )
{
mDataBufLen += readNum;
// 解析协议
len = Protocol_Parse(mDataBufPtr, mDataBufLen);
if ( (len > 0) && (len < mDataBufLen) )
{
// 将未解析的数据移到头部
// Move unparsed data to the head
memcpy(mDataBufPtr, mDataBufPtr + len, mDataBufLen - len);
}
mDataBufLen -= len;
}
}
}
/**
* @brief 协议解析函数,如外部获取数据(例如中断),可直接调用此函数解析数据
* @param[in] pData 协议数据内容
* @param[in] len 需要处理的协议数据长度
*
* @return 剩余已处理的数据长度
*
* @since 1.0.0
*/
Protocol_uint32_t Protocol_Parse(const Protocol_uint8_t *pData, Protocol_uint32_t len)
{
Protocol_uint32_t remainLen = len; // 剩余数据长度 Remaining data length
Protocol_uint32_t dataLen; // 数据包长度 Packet length
Protocol_uint32_t frameLen; // 帧长度 Frame length
Protocol_uint32_t frameSum;
Protocol_Data_t ProcData;
int i = 0;
int dataBuf [ 256 ];
/**
* 以下部分需要根据协议格式进行相应的修改,解析出每一帧的数据
*/
while ( remainLen >= DATA_PACKAGE_MIN_LEN )
{
// 找到一帧数据的数据头
// Find the data header of a frame of data
while ( (remainLen >= 2) && ((pData [ 0 ] != CMD_HEAD1) || (pData [ 1 ] != CMD_HEAD2)) )
{
pData++;
remainLen--;
continue;
}
if ( remainLen < DATA_PACKAGE_MIN_LEN )
{
#ifdef DEBUG_PRO_DATA
d_printf("too short!!!!!!\n");
#endif
break;
}
dataLen = pData [ 2 ];
frameLen = dataLen + DATA_PACKAGE_FIXED_LEN;
if ( frameLen > remainLen )
{
// 数据内容不全
#ifdef DEBUG_PRO_DATA
d_printf("Incomplete data packet!!!!!!\n");
#endif
break;
}
// 打印一帧数据,需要时在CommDef.h文件中打开DEBUG_PRO_DATA宏
#ifdef DEBUG_PRO_DATA
for ( i = 0; i < frameLen; ++i )
{
d_printf("%x ", pData [ i ]);
}
d_printf("\n");
#endif
// 检测校验码 Checksum
frameSum = (pData [ frameLen - 2 ] << 8) | (pData [ frameLen - 1 ]);
if ( frameLen > 4 )
{
if ( getCheckSum(pData + 2, frameLen - 4) == frameSum )
{
// 解析一帧数据
if ( ProcParseCbk != Protocol_NULL )
{
ProcParseCbk(pData + 3, dataLen - 2);
}
if ( ProtocolSetData_Cbk != Protocol_NULL )
{
ProcData.FrameNo = pData [ 3 ];
ProcData.PowerSts = (pData [ 4 ] >> 6) & 0x03;
ProcData.CmdID = pData [ 4 ] & 0x3F;
if ( ProcData.CmdID == 0x10 )
{
#ifdef DEBUG_PRO_DATA
for ( i = 0; i < frameLen; ++i )
{
d_printf("%x ", pData [ i ]);
}
d_printf("\n");
#endif
}
if ( ProcData.CmdID == 0x12 )
{
#ifdef DEBUG_PRO_DATA
for ( i = 0; i < frameLen; ++i )
{
d_printf("%x ", pData [ i ]);
}
d_printf("\n");
#endif
}
ProcData.DataLen = dataLen - 4;
memcpy(ProcData.Data, pData + 5, ProcData.DataLen);
ProtocolSetData_Cbk(&ProcData);
}
}
else
{
for ( i = 0; i < frameLen; ++i )
{
// dataBuf [ i ] = pData [ i ];
}
i = 0;
#ifdef DEBUG_PRO_DATA
d_printf("CheckSum error: new = %x, old = %x!!!!!!\n", getCheckSum(pData + 2, frameLen - 4), frameSum);
#endif
}
}
pData += frameLen;
remainLen -= frameLen;
}
return len - remainLen;
}
/**
* 根据协议格式进行拼接
*/
/**
* @brief 串口协议数据拼接,如初始化发送函数,调用此函数后,数据已通过串口发送
* @param[in] cmdID 命令字
* @param[in] pData 协议数据内容(不包括协议头、长度、帧序号、命令字、校验和,从数据域算起)
* @param[in] len 数据域长度
*
* @return 已发送的数据长度
*
* @since 1.0.0
*/
Protocol_uint32_t Protocol_Send(const Protocol_uint16_t cmdID, const Protocol_uint8_t *pData, Protocol_uint8_t len)
{
int i = 0;
Protocol_uint16_t checksum = 0;
Protocol_uint8_t dataBuf [ 256 ];
Protocol_uint32_t frameLen;
if ( len + DATA_PACKAGE_MIN_LEN > 256 )
{
// printf("sendProtocol data is too len !!!\n");
return 0;
}
dataBuf [ 0 ] = CMD_HEAD1;
dataBuf [ 1 ] = CMD_HEAD2; // 同步帧头 Sync frame header
dataBuf [ 2 ] = len + 4;
dataBuf [ 3 ] = 0; // 命令字节 Command byte
dataBuf [ 4 ] = ( Protocol_uint8_t )cmdID;
frameLen = 5;
// 数据 Data
for ( i = 0; i < len; ++i )
{
dataBuf [ frameLen ] = pData [ i ];
frameLen++;
}
// 校验码 Checksum
checksum = getCheckSum(dataBuf + 2, frameLen - 2);
dataBuf [ frameLen ] = (checksum >> 8) & 0x00FF;
frameLen++;
dataBuf [ frameLen ] = checksum & 0x00FF;
frameLen++;
if ( UARTSend_Cbk != Protocol_NULL )
{
return UARTSend_Cbk(dataBuf, frameLen);
}
else
{
return 0;
}
}
#ifndef PROTOCOL_LIB_H
#define PROTOCOL_LIB_H
/*
Platform_32Bit
Platform_16Bit
*/
#ifdef Platform_16Bit
#define Protocol_uint8_t unsigned char
#define Protocol_uint16_t unsigned int
#define Protocol_uint32_t unsigned long
#else
#define Protocol_uint8_t unsigned char
#define Protocol_uint16_t unsigned short
#define Protocol_uint32_t unsigned int
#define Protocol_uint64_t unsigned long long
#endif
#ifndef Protocol_NULL
#define Protocol_NULL ( void * )0u
#endif /* NULL */
/**<0xEB 0x90 长度 帧序号 命令字 DATA0-DATAN CRC16_1 CRC16_2*/
#define DATA_PACKAGE_MIN_LEN 7 /**< 0xEB 0x90 + 长度 + 数据包序号 + CMDID + CRC16_1 + CRC16_2 */
#define DATA_PACKAGE_FIXED_LEN 3 /**< 未计算在长度内的数据 0xEB 0x90 + 长度位 */
#define CMD_HEAD1 0xEB
#define CMD_HEAD2 0x90
/**@struct Protocol_Data_t
* @brief 解析后的协议数据
*/
typedef struct __attribute__((aligned(4)))
{
Protocol_uint8_t FrameNo; /**< 帧序号 */
Protocol_uint8_t PowerSts; /**< 电源状态 */
Protocol_uint8_t CmdID; /**< 命令字 */
Protocol_uint8_t DataLen; /**< 有效数据长度 DATA0-DATAN*/
Protocol_uint8_t Data [ 256 ]; /**< 有效数据内容 DATA0-DATAN*/
} Protocol_Data_t;
typedef Protocol_uint8_t (*UARTOpen)(void);
typedef Protocol_uint32_t (*UARTSend)(const Protocol_uint8_t *pData, Protocol_uint32_t u32Len);
typedef Protocol_uint32_t (*UARTRead)(Protocol_uint8_t *pData, Protocol_uint32_t u32Len);
typedef void (*ProtocolSetData)(const Protocol_Data_t *pData);
typedef void (*ProcParse)(const Protocol_uint8_t *pData, Protocol_uint32_t u32Len);
typedef void (*UARTClose)(void);
/**@struct Protocol_Func_t
* @brief 协议解析回调函数
*/
typedef struct __attribute__((aligned(4)))
{
UARTOpen UARTOpen_Cbk; /**< 串口打开回调 */
UARTSend UARTSend_Cbk; /**< 串口发送回调 */
UARTRead UARTRead_Cbk; /**< 串口读取回调 */
UARTClose UARTClose_Cbk; /**< 串口关闭回调 */
ProcParse ProcParseCbk; /**< 解析后的数据, 处理了数据包序号,命令字和电源状态,和ProcParse二选一 */
ProtocolSetData ProtocolSetData_Cbk; /**< 不包含 0xEB 0x90 + 长度 + CRC16_1 + CRC16_2,和ProtocolSetData二选一 */
} Protocol_Func_t;
void Protocol_Init(Protocol_uint8_t *pMemSpace, Protocol_uint32_t MemLen, Protocol_Func_t *pFunc);
void Protocol_Service(void);
Protocol_uint32_t Protocol_Parse(const Protocol_uint8_t *pData, Protocol_uint32_t len);
Protocol_uint32_t Protocol_Send(const Protocol_uint16_t cmdID, const Protocol_uint8_t *pData, Protocol_uint8_t len);
#endif
#include "Protocol_User.h"
#include "RTE.h"
#define UART_TX_MAX_DEPTH 1024UL //(2 * 1024UL) // 4K
#define UART_RX_MAX_DEPTH (2 * 1024UL) // 4K
#define UART_DATA_BUF_LEN (2 * 1024UL) // 4K
typedef struct __attribute__((aligned(4)))
{
Protocol_uint32_t read_pos;
Protocol_uint32_t write_pos;
Protocol_uint8_t Rx_Buffer [ UART_RX_MAX_DEPTH ];
} UARTRxBuf_t;
typedef struct __attribute__((aligned(4)))
{
Protocol_uint32_t read_pos;
Protocol_uint32_t write_pos;
Protocol_uint8_t Tx_Buffer [ UART_TX_MAX_DEPTH ];
} UARTTxBuf_t;
static UARTRxBuf_t UARTRxBuf;
static UARTTxBuf_t UARTTxBuf;
static Protocol_uint8_t UsartDataBuf [ 256 ];
static Protocol_uint8_t mDataBufPtr [ UART_DATA_BUF_LEN ];
static Protocol_uint8_t Protocol_OpenUart(void);
static Protocol_uint32_t Protocol_UartRead(Protocol_uint8_t *pData, Protocol_uint32_t u32Len);
static Protocol_uint32_t Protocol_UartSend(const Protocol_uint8_t *pData, Protocol_uint32_t u32Len);
static void Protocol_UartHandle(const Protocol_Data_t *pData);
void Protocol_KL30_Wakeup_Init(void)
{
Protocol_Func_t pFunc;
pFunc.UARTOpen_Cbk = Protocol_OpenUart;
pFunc.UARTSend_Cbk = Protocol_UartSend;
pFunc.UARTRead_Cbk = Protocol_UartRead;
pFunc.UARTClose_Cbk = Protocol_NULL;
pFunc.ProcParseCbk = Protocol_NULL;
pFunc.ProtocolSetData_Cbk = Protocol_UartHandle;
UARTTxBuf.read_pos = 0;
UARTTxBuf.write_pos = 0;
UARTRxBuf.read_pos = 0;
UARTRxBuf.write_pos = 0;
Protocol_Init(mDataBufPtr, UART_DATA_BUF_LEN, &pFunc);
}
void Protocol_Send_Service(void)
{
Protocol_uint32_t i = 0u;
Protocol_uint32_t DataLen = 0u;
Protocol_uint32_t SendLen = 0u;
if ( UARTTxBuf.write_pos == UARTTxBuf.read_pos )
{
return;
}
if ( UARTTxBuf.write_pos > UARTTxBuf.read_pos )
{
DataLen = UARTTxBuf.write_pos - UARTTxBuf.read_pos;
}
else
{
DataLen = UART_TX_MAX_DEPTH - (UARTTxBuf.read_pos - UARTTxBuf.write_pos);
}
if ( DataLen > 255 )
{
SendLen = 255;
}
else
{
SendLen = DataLen;
}
for ( i = 0u; i < SendLen; i++ )
{
UsartDataBuf [ i ] = UARTTxBuf.Tx_Buffer [ UARTTxBuf.read_pos ];
UARTTxBuf.read_pos = (UARTTxBuf.read_pos + 1) % UART_TX_MAX_DEPTH;
}
Uart0_IntSend(UsartDataBuf, SendLen);
}
static Protocol_uint8_t Protocol_OpenUart(void)
{
#if 0
UART_Channel_Config_st_t loc_config;
loc_config.u32UARTChEn = 1;
loc_config.u32UARTbps = 115200;
loc_config.pfnUARTConfirmCallBack = Protocol_NULL;
loc_config.pfnUARTReadMsgCallBack = UART_Put;
UART_Init(UART_RLIN31, &loc_config);
#endif
return 1;
}
static Protocol_uint32_t Protocol_UartRead(Protocol_uint8_t *pData, Protocol_uint32_t len)
{
Protocol_uint32_t i = 0;
Protocol_uint32_t DataLen = 0u;
Protocol_uint32_t ReadLen = 0u;
if ( UARTRxBuf.write_pos == UARTRxBuf.read_pos )
{
return 0; //队列空
}
if ( UARTRxBuf.write_pos > UARTRxBuf.read_pos )
{
DataLen = UARTRxBuf.write_pos - UARTRxBuf.read_pos;
}
else
{
DataLen = UART_RX_MAX_DEPTH - (UARTRxBuf.read_pos - UARTRxBuf.write_pos);
}
if ( len > DataLen )
{
ReadLen = DataLen;
}
else
{
ReadLen = len;
}
for ( i = 0u; i < ReadLen; i++ )
{
pData [ i ] = UARTRxBuf.Rx_Buffer [ UARTRxBuf.read_pos ];
UARTRxBuf.read_pos = (UARTRxBuf.read_pos + 1) % UART_RX_MAX_DEPTH;
}
return ReadLen;
}
static Protocol_uint32_t Protocol_UartSend(const Protocol_uint8_t *pData, Protocol_uint32_t u32Len)
{
Protocol_uint32_t i = 0;
Protocol_uint32_t RemainLen = 0u;
if ( UARTTxBuf.write_pos >= UARTTxBuf.read_pos )
{
RemainLen = UART_TX_MAX_DEPTH - (UARTTxBuf.write_pos - UARTTxBuf.read_pos);
}
else
{
RemainLen = UARTTxBuf.read_pos - UARTTxBuf.write_pos;
}
if ( u32Len > RemainLen )
{
return 1; //队列已满,无法插入队列
}
for ( i = 0; i < u32Len; i++ )
{
UARTTxBuf.Tx_Buffer [ UARTTxBuf.write_pos ] = pData [ i ];
UARTTxBuf.write_pos = (UARTTxBuf.write_pos + 1) % UART_TX_MAX_DEPTH;
}
return 0;
}
static void Protocol_UartHandle(const Protocol_Data_t *pData)
{
if ( pData->CmdID == ESP32_MCU_0x10 )
{
BlueTooth.BlueTooth_St = pData->Data[0];
if (BlueTooth.BlueTooth_St == BLUE_STATE_ON)
{
Protocol_Send(MCU_ESP32_0x20, Protocol_NULL, 0);
}
}
else if ( pData->CmdID == ESP32_MCU_0x12 )
{
BlueTooth.BLE_St = pData->Data[0];
}
else if(pData->CmdID == ESP32_MCU_0x01 )
{
if (pData->Data[0] == 0x33)
{
BlueTooth.Navigation_St = EM_ESP32_NAVI_ST_NAVIGATING;
}
else if (pData->Data[0] == 0x35)
{
BlueTooth.Navigation_St = EM_ESP32_NAVI_ST_STANDBY;
}
else
{
;
}
BlueTooth.Navigation_Code = pData->Data[1];
BlueTooth.Navigation_Mileage = ((pData->Data[5] << 24) | (pData->Data[4] << 16) |
(pData->Data[3] << 8) | pData->Data[2]);
}
else
{
//非本协议数据,不处理
}
}
void UART_Put(Protocol_uint16_t Data)
{
Protocol_uint32_t nextPos = 0u;
nextPos = (UARTRxBuf.write_pos + 1) % UART_RX_MAX_DEPTH;
if ( nextPos == UARTRxBuf.read_pos )
{
//队列已满,无法插入队列
}
else
{
UARTRxBuf.Rx_Buffer [ UARTRxBuf.write_pos ] = Data;
UARTRxBuf.write_pos = (UARTRxBuf.write_pos + 1) % UART_RX_MAX_DEPTH;
}
//return;
}
#ifndef PROTOCOL_USER_H
#define PROTOCOL_USER_H
//#include "Application.h"
#include "Protocol_Lib.h"
#include <stdio.h>
#include <stdint.h>
void Protocol_KL30_Wakeup_Init(void);
void Protocol_Send_Service(void); // 10ms任务调用
void UART_Put(Protocol_uint16_t Data);
#endif
......@@ -16,15 +16,15 @@ void Can_Set_Buff_220(canlib_uint8_t CopyData[])
p220->Msg [ i ] = 0xFFu;
}
}
p220 -> Sig.TCS_TX = Get_Dis_Tcs_Val();
}
void Can_Set_Buff_6EE(canlib_uint8_t CopyData[])
{
CANMsg6EEUnion *p6EE;
uint8_t i = 0;
uint16_t Vspeed_tx = 0;
uint32_t ODO_tx = Data_ODO_Read() / 10;
Vspeed_tx = Get_DispVechileSpeed_TX()/10;
p6EE = (CANMsg6EEUnion *)CopyData;
if ( p6EE != ( void * )0 )
......@@ -42,10 +42,7 @@ void Can_Set_Buff_6EF(canlib_uint8_t CopyData[])
{
CANMsg6EFUnion *p6EF;
uint8_t i = 0;
uint16_t Espeed_tx = 0;
uint16_t TripA_tx = 0;
Espeed_tx = Get_ActualEngineSpeed()/100;
TripA_tx = Data_Read_Trip(EM_TRIP_A);
p6EF = (CANMsg6EFUnion *)CopyData;
if ( p6EF != ( void * )0 )
{
......@@ -54,9 +51,7 @@ void Can_Set_Buff_6EF(canlib_uint8_t CopyData[])
p6EF->Msg [ i ] = 0xFFu;
}
}
p6EF -> Sig.Espeed_TX = Espeed_tx;
p6EF -> Sig.TripA_H = (TripA_tx >> 8) & 0xFF;
p6EF -> Sig.TripA_L = TripA_tx & 0xFF;
}
void Can_Set_Buff_450(canlib_uint8_t CopyData[])
......@@ -72,10 +67,7 @@ void Can_Set_Buff_450(canlib_uint8_t CopyData[])
p450->Msg [ i ] = 0xFFu;
}
}
p450 -> Sig.Front_Pressure_TX_H = (Get_Front_TPMS_TX() >> 8) & 0xFF;
p450 -> Sig.Front_Pressure_TX_L = Get_Front_TPMS_TX() & 0xFF;
p450 -> Sig.Rear_Pressure_TX_H = (Get_Rear_TPMS_TX() >> 8) & 0xFF;
p450 -> Sig.Rear_Pressure_TX_L = Get_Rear_TPMS_TX() & 0xFF;
}
void Can_Set_Buff_580(canlib_uint8_t CopyData[])
{
......@@ -90,30 +82,7 @@ void Can_Set_Buff_580(canlib_uint8_t CopyData[])
p580->Msg [ i ] = 0xFFu;
}
}
if(Get_Tpms_TX_Flag() == 1)
{
p580 -> Sig.TPMS_LEARN_CND_BYTE0 = 0x31;
p580 -> Sig.TPMS_LEARN_CND_BYTE1 = 0x01;
p580 -> Sig.TPMS_LEARN_CND_BYTE2 = 0x59;
p580 -> Sig.TPMS_LEARN_CND_BYTE3 = 0x08;
p580 -> Sig.TPMS_LEARN_CND_BYTE4 = 0x00;
}
else if(Get_Tpms_TX_Flag() == 1)
{
p580 -> Sig.TPMS_LEARN_CND_BYTE0 = 0x31;
p580 -> Sig.TPMS_LEARN_CND_BYTE1 = 0x01;
p580 -> Sig.TPMS_LEARN_CND_BYTE2 = 0x59;
p580 -> Sig.TPMS_LEARN_CND_BYTE3 = 0x08;
p580 -> Sig.TPMS_LEARN_CND_BYTE4 = 0x01;
}
else
{
p580 -> Sig.TPMS_LEARN_CND_BYTE0 = 0x0;
p580 -> Sig.TPMS_LEARN_CND_BYTE1 = 0x0;
p580 -> Sig.TPMS_LEARN_CND_BYTE2 = 0x0;
p580 -> Sig.TPMS_LEARN_CND_BYTE3 = 0x0;
p580 -> Sig.TPMS_LEARN_CND_BYTE4 = 0x02;
}
}
......
......@@ -109,18 +109,18 @@ void Common_Input_Para(void)
Common_Set_IG_Sts(COMMON_POWER_ON);
Common_Set_IG_Sts_Valid(COMMON_Valid);
Common_Set_Act_V_Speed(Get_ActualVechileSpeed());
Common_Set_Disp_V_Speed(Get_DispVechileSpeed());
if (Get_VechileSpeedValid() == COMMON_Valid)
{
Common_Set_Act_V_Speed_Valid(COMMON_Valid);
Common_Set_Disp_V_Speed_Valid(COMMON_Valid);
}
else
{
Common_Set_Act_V_Speed_Valid(COMMON_InValid);
Common_Set_Disp_V_Speed_Valid(COMMON_InValid);
}
//Common_Set_Act_V_Speed(Get_ActualVechileSpeed());
//Common_Set_Disp_V_Speed(Get_DispVechileSpeed());
// if (Get_VechileSpeedValid() == COMMON_Valid)
// {
// Common_Set_Act_V_Speed_Valid(COMMON_Valid);
// Common_Set_Disp_V_Speed_Valid(COMMON_Valid);
// }
// else
// {
// Common_Set_Act_V_Speed_Valid(COMMON_InValid);
// Common_Set_Disp_V_Speed_Valid(COMMON_InValid);
// }
PowerIgnOffTimeLine = 0ul;
......
This diff is collapsed.
#ifndef _Data_Espeed_H_
#define _Data_Espeed_H_
#include "common.h"
/******************************************************************************
发动机转速
******************************************************************************/
/*** 参数设置 ***/
#define DATA_ENGINE_RUNNING_THRESHOLD 400 //发动机运转阈值
#define DATA_ENGINE_STOP_THRESHOLD 300 //发动机停止阈值
#define DATA_ESPEED_DAMPING_FACTOR 4 //阻尼系数
#define DATA_ESPEED_INC_STEP 10 //速度增加时慢加速速度变化步长
#define DATA_ESPEED_DEC_STEP 20 //方向改变时急减速速度变化步长
#define DATA_ESPEED_APPR_SPEED_MIN 10 //最小逼近速度
#define DATA_ESPEED_HYSTERESIS 80 //回差
/*** 控制结构 ***/
typedef struct __attribute__((aligned(4)))
{
uint16_t Buffer[5];
uint8_t Cnt;
} DataESpeedSamplerStruct; //转速采样结构
typedef struct __attribute__((aligned(4)))
{
uint16_t Speed;
uint16_t Delta;
uint8_t Dir;
} DataESPeedDampingStruct; //转速阻尼结构
typedef struct __attribute__((aligned(4)))
{
uint16_t ESpeedBackup;
uint16_t Timer;
uint8_t Mode;
} DataESpeedIdleStruct; //怠速处理结构
/******************************************************************************
函数名:Data_Engine_Speed_KL30_Wakeup_Init
功 能:发动机转速初始化函数
参 数:无
返回值:无
******************************************************************************
注 意:该函数KL30初始化/Wakeup初始化被调用一次
******************************************************************************/
void Data_Engine_Speed_KL30_Wakeup_Init (void);
/******************************************************************************
函数名:Data_Engine_Speed_Processing_Service
功 能:发动机转速数据处理函数
参 数:无
返回值:无
******************************************************************************
注 意:该函数必须每10ms被调用一次
******************************************************************************/
void Data_Engine_Speed_Processing_Service ( void );
uint8_t Get_EngineValid(void);
uint16_t Get_ActualEngineSpeed(void);
uint16_t Get_DispEngineSpeed(void);
#endif
#include "Application.h"
#include "Data_TPMS\Data_TPMS.h"
_TPMS_Display TPMS;
void Data_TPMS_KL30_Init ( void )
{
uint32_t TPMS_L[2] = {0,0};
Data_User_EEPROM_Read(EM_MenuData_TPMS_LEARN, TPMS_L, 2u);
MenuData.TPMS_Front_Learn = TPMS_L[0];
MenuData.TPMS_Rear_Learn = TPMS_L[1];
TPMS.Front_Press_Value = 0;
TPMS.Rear_Press_Value = 0;
TPMS.Front_TPMS_Valid = 0;
TPMS.Rear_TPMS_Valid = 0;
TPMS.TPMS_Warning = 0;
TPMS.TPMS_Unit = Get_Dis_Tpms_Unit();
TPMS.TPMS_Front_Learn = MenuData.TPMS_Front_Learn;
TPMS.TPMS_Rear_Learn = MenuData.TPMS_Rear_Learn;
}
void Data_TPMS_KL15_WAKE_UP_Init ( void )
{
uint32_t TPMS_L[2] = {0,0};
Data_User_EEPROM_Read(EM_MenuData_TPMS_LEARN, TPMS_L, 2u);
MenuData.TPMS_Front_Learn = TPMS_L[0];
MenuData.TPMS_Rear_Learn = TPMS_L[1];
TPMS.TPMS_Front_Learn = MenuData.TPMS_Front_Learn;
TPMS.TPMS_Rear_Learn = MenuData.TPMS_Rear_Learn;
}
void Data_TPMS_Processing_Service ( void )
{
uint16_t Front_TPMS = 0;
uint16_t Rear_TPMS = 0;
uint32_t TPMS_L[2] = {0,0};
TPMS.TPMS_Front_Learn = Get_CAN_CH0_ID_341_Sig_Front_LearningStatus();
TPMS.TPMS_Rear_Learn = Get_CAN_CH0_ID_341_Sig_Rear_LearningStatus();
if((TPMS.TPMS_Front_Learn != MenuData.TPMS_Front_Learn) || (TPMS.TPMS_Rear_Learn != MenuData.TPMS_Rear_Learn))
{
TPMS_L[0] = TPMS.TPMS_Front_Learn;
TPMS_L[1] = TPMS.TPMS_Rear_Learn;
Data_User_EEPROM_Write(EM_MenuData_TPMS_LEARN, TPMS_L, 2u);
MenuData.TPMS_Front_Learn = TPMS.TPMS_Front_Learn;
MenuData.TPMS_Rear_Learn = TPMS.TPMS_Rear_Learn;
}
TPMS.TPMS_Unit = Get_Dis_Tpms_Unit();
Front_TPMS = Get_CAN_CH0_ID_341_Sig_Front_Pressure();
Rear_TPMS = Get_CAN_CH0_ID_341_Sig_Rear_Pressure();
if ( Common_Get_IG_Sts() == COMMON_POWER_ON )
{
if(CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CAN_0x341_Msg_Count) == CAN_SIG_LOST)
{
TPMS.Front_TPMS_Valid = 0; //信号掉线,显示--
TPMS.Rear_TPMS_Valid = 0; //信号掉线,显示--
TPMS.Front_Press_Value = 0;
TPMS.Rear_Press_Value = 0;
TPMS.TPMS_Warning = 0; //白灯
}
else
{
if((Front_TPMS == 0xFF) || (Rear_TPMS == 0xFF))
{
if((Front_TPMS == 0xFF) && (Rear_TPMS != 0xFF))
{
TPMS.Front_TPMS_Valid = 0;
TPMS.Rear_TPMS_Valid = 2;
TPMS.Front_Press_Value = 990;
TPMS.Rear_Press_Value = Rear_TPMS * 275;
TPMS.Rear_Press_Value /= 102 ;
if(TPMS.Rear_Press_Value > 990)
{
TPMS.Rear_Press_Value = 990;
}
if((TPMS.Rear_Press_Value < 170) || (TPMS.Rear_Press_Value > 250))
{
TPMS.TPMS_Warning = 1;
}
else
{
TPMS.TPMS_Warning = 0;
}
}
else if ((Front_TPMS != 0xFF) && (Rear_TPMS == 0xFF))
{
TPMS.Front_TPMS_Valid = 2;
TPMS.Rear_TPMS_Valid = 0;
TPMS.Rear_Press_Value = 990;
TPMS.Front_Press_Value = Front_TPMS *275 ;
TPMS.Front_Press_Value /= 102 ;
if(TPMS.Front_Press_Value > 990)
{
TPMS.Front_Press_Value = 990;
}
if((TPMS.Front_Press_Value < 170) || (TPMS.Front_Press_Value > 230))
{
TPMS.TPMS_Warning = 1;
}
else
{
TPMS.TPMS_Warning = 0;
}
}
else
{
TPMS.Front_Press_Value = 990;
TPMS.Rear_Press_Value = 990;
TPMS.TPMS_Warning = 0;
TPMS.Front_TPMS_Valid = 0;
TPMS.Rear_TPMS_Valid = 0;
}
}
else
{
TPMS.Front_TPMS_Valid = 2;
TPMS.Rear_TPMS_Valid = 2;
TPMS.Front_Press_Value = Front_TPMS * 275 ;
TPMS.Front_Press_Value /= 102 ;
if(TPMS.Front_Press_Value > 990)
{
TPMS.Front_Press_Value = 990;
}
TPMS.Rear_Press_Value = Rear_TPMS * 275;
TPMS.Rear_Press_Value /= 102 ;
if(TPMS.Rear_Press_Value > 990)
{
TPMS.Rear_Press_Value = 990;
}
if ((TPMS.Front_Press_Value < 170) || (TPMS.Front_Press_Value > 230) || (TPMS.Rear_Press_Value < 170) || (TPMS.Rear_Press_Value > 250))
{
TPMS.TPMS_Warning = 1;
}
else
{
TPMS.TPMS_Warning = 0;
}
}
}
if(MenuData.TPMS_Front_Learn == Unstudied)
{
TPMS.Front_TPMS_Valid = Unstudied;
}
else if(MenuData.TPMS_Front_Learn == Learning)
{
TPMS.Front_TPMS_Valid = Learning;
}
else if(MenuData.TPMS_Front_Learn == LearningCompletion)
{
TPMS.Front_TPMS_Valid = LearningCompletion;
TPMS.Rear_Press_Value = 990;
}
else if(MenuData.TPMS_Front_Learn == LearningFailure)
{
TPMS.Front_TPMS_Valid = LearningFailure;
}
else
{
;
}
if(MenuData.TPMS_Rear_Learn == Unstudied)
{
TPMS.Rear_TPMS_Valid = Unstudied;
}
else if(MenuData.TPMS_Rear_Learn == Learning)
{
TPMS.Rear_TPMS_Valid = Learning;
}
else if(MenuData.TPMS_Rear_Learn == LearningCompletion)
{
TPMS.Rear_TPMS_Valid = LearningCompletion;
TPMS.Front_Press_Value = 990;
}
else if(MenuData.TPMS_Rear_Learn == LearningFailure)
{
TPMS.Rear_TPMS_Valid = LearningFailure;
}
else
{
;
}
if ((MenuData.TPMS_Rear_Learn != LearningCompletion) && (MenuData.TPMS_Front_Learn != LearningCompletion))
{
TPMS.TPMS_Warning = 0;
}
}
else
{
TPMS.Front_TPMS_Valid = 0;
TPMS.Rear_TPMS_Valid = 0;
TPMS.Front_Press_Value = 0;
TPMS.Rear_Press_Value = 0;
TPMS.TPMS_Warning = 0;
}
}
uint32_t Data_Bar_To_Psi (uint32_t bar)
{
uint32_t Bar = 0;
Bar = bar * 145;
Bar /= 10;
Bar += 5;
// bar *= 145;
// bar /= 10;
// bar += 5;
return Bar;
}
/*指示灯报警信号 0:白色常亮 1:黄色常亮*/
uint8_t Get_Led_TPMS_Waring (void)
{
return TPMS.TPMS_Warning;
}
/*0:未学习,无效,常显-- 1:学习中,无效,闪烁-- 2:学习完成,有效,按实际胎压数值显示 3:学习失败,无效,最大值闪烁显示*/
uint8_t Get_Front_TPMS_Sig_Vaild (void)
{
return TPMS.Front_TPMS_Valid;
}
uint8_t Get_Rear_TPMS_Sig_Vaild (void)
{
return TPMS.Rear_TPMS_Valid;
}
//10倍
uint16_t Get_Front_TPMS_Sig_Value (void)
{
uint16_t value = 0;
if (TPMS.TPMS_Unit == 1)
{
value = (Data_Bar_To_Psi(TPMS.Front_Press_Value) + 50) / 100;
if(value > 99)
{
value = 99;
}
}
else
{
value = TPMS.Front_Press_Value + 5;
value = value / 10;
}
return value;
}
uint16_t Get_Rear_TPMS_Sig_Value (void)
{
uint16_t value = 0;
if (TPMS.TPMS_Unit == 1)
{
value = (Data_Bar_To_Psi(TPMS.Rear_Press_Value) + 50) / 100;
if(value > 99)
{
value = 99;
}
}
else
{
value = TPMS.Rear_Press_Value + 5;
value = value / 10;
}
return value;
}
uint16_t Get_Rear_TPMS_TX (void)
{
uint16_t value = 0;
value = Data_Bar_To_Psi(TPMS.Rear_Press_Value) / 10;
if(value > 990)
{
value = 990;
}
return value;
}
uint16_t Get_Front_TPMS_TX (void)
{
uint16_t value = 0;
value = Data_Bar_To_Psi(TPMS.Front_Press_Value) / 10;
if(value > 990)
{
value = 990;
}
return value;
}
#ifndef _DATA_TPMS_H_
#define _DATA_TPMS_H_
#include "common.h"
typedef struct __attribute__((aligned(4)))
{
uint32_t Front_Press_Value;
uint32_t Rear_Press_Value;
uint8_t Front_TPMS_Valid;
uint8_t Rear_TPMS_Valid;
uint8_t TPMS_Warning;
uint8_t TPMS_Unit;
uint32_t TPMS_Front_Learn;
uint32_t TPMS_Rear_Learn;
}_TPMS_Display;
typedef enum
{
Unstudied = 0,
Learning,
LearningCompletion,
LearningFailure,
} TPMSLearning;
void Data_TPMS_KL30_Init ( void );
void Data_TPMS_Processing_Service ( void );
uint32_t Data_Bar_To_Psi (uint32_t bar);
uint8_t Get_Led_TPMS_Waring (void);
uint8_t Get_Front_TPMS_Sig_Vaild (void);
uint8_t Get_Rear_TPMS_Sig_Vaild (void);
uint16_t Get_Front_TPMS_Sig_Value (void);
uint16_t Get_Rear_TPMS_Sig_Value (void);
uint16_t Get_Rear_TPMS_TX (void);
uint16_t Get_Front_TPMS_TX (void);
void Data_TPMS_KL15_WAKE_UP_Init ( void );
#endif
This diff is collapsed.
#ifndef _Data_Vspeed_H_
#define _Data_Vspeed_H_
#include "common.h"
/*** 参数设置 ***/
#define DATA_VEHICLE_RUNNING_THRESHOLD 25 //汽车行进阈值
#define DATA_VEHICLE_STOP_THRESHOLD 20 //汽车停止阈值
#define DATA_VSPEED_DAMPING_FACTOR 3 //阻尼系数
#define DATA_VSPEED_INC_STEP 2 //速度增加时慢加速速度变化步长
#define DATA_VSPEED_DEC_STEP 6 //方向改变时急减速速度变化步长
#define DATA_VSPEED_APPR_SPEED_MIN 2 //最小逼近速度
#define DATA_VSPEED_HYSTERESIS 15 //回差
/*** 控制结构 ***/
typedef struct __attribute__((aligned(4)))
{
uint16_t Timer;
uint16_t Timer1;
uint16_t Backup;
uint16_t Buffer[3];
uint8_t Cnt;
} DataVSpeedSamplerStruct; //车速采样结构
typedef struct __attribute__((aligned(4)))
{
uint16_t Speed;
uint16_t Delta;
uint8_t Dir;
} DataVSPeedDampingStruct; //车速阻尼结构
/******************************************************************************
函数名:Data_Vehicle_Speed_KL30_Init
功 能:车速数据KL30初始化
参 数:无
返回值:无
******************************************************************************
注 意:该函数KL30初始化被调用一次
******************************************************************************/
void Data_Vehicle_Speed_KL30_Init(void);
/******************************************************************************
函数名:Data_Vehicle_Speed_Wakeup_Init
功 能:车速数据唤醒初始化
参 数:无
返回值:无
******************************************************************************
注 意:该函数唤醒初始化被调用一次
******************************************************************************/
void Data_Vehicle_Speed_Wakeup_Init(void);
/******************************************************************************
函数名:Data_Vehicle_Speed_Processing_Service
功 能:车速数据处理函数
参 数:无
返回值:无
******************************************************************************
注 意:该函数必须每20ms被调用一次
******************************************************************************/
void Data_Vehicle_Speed_Processing_Service(void);
uint8_t Get_VechileSpeedValid(void);
/*真实的车速,精度10倍,*/
uint16_t Get_ActualVechileSpeed(void);
/*显示车速,精度10倍,取整,舍去小数点*/
uint16_t Get_DispVechileSpeed(void);
uint16_t Get_DispVechileSpeed_Mile(void);
uint16_t Get_DispVechileSpeed_TX(void);
#endif
......@@ -65,7 +65,7 @@ void Clear_Bu98(void)
void Gauge_Service(void)
{
static uint16_t VSpeed_Count = 0u;
uint8_t k = 0;
if (ClearODO_Flag == 1)
{
......@@ -104,24 +104,13 @@ void Gauge_Service(void)
{
if (VSpeed_Count < 3)
{
VSpeed_Count++;
}
else
{
VSpeed_Count = 0;
SEG_SET_VSpeed_NUM(1u, Get_DispVechileSpeed( ) / 10u,Get_Dis_KM_Unit());
}
SEG_SET_ODO_TRIP_FAULTCODE_TCS_DIS(Get_Dis_KM_Unit(), Get_ODO_Value() / 10u, Get_Trip_Value());
Gauge_Clock_Display();
SEG_SET_EspeedDial(1, Get_DispEngineSpeed()/500);
SEG_SET_Voltage_NUM(1, Get_Battery_Voltage());
#if(IC_Current == TY200_080000b_ty)
SEG_SET_TPMS_NUM(1, Get_Front_TPMS_Sig_Value(), Get_Rear_TPMS_Sig_Value(), Get_Dis_Tpms_Unit(),Get_Front_TPMS_Sig_Vaild(), Get_Rear_TPMS_Sig_Vaild());
#endif
SEG_SET_Navigation_STS(Get_Navigation_St_Dis(),Get_Navigation_Code_Dis(),Get_Navigation_Mileage_Dis());
}
else
......
......@@ -489,7 +489,7 @@ void TYW_RESET_ODO(void)
{
if(ClearODO_Flag < 1)
{
if((Get_DispVechileSpeed() >= 1990)&&(Get_DispEngineSpeed() >= 12000))
//if((Get_DispVechileSpeed() >= 1990)&&(Get_DispEngineSpeed() >= 12000))
{
ClearODO_Flag = 1;
Data_Mileage_Clear();
......
......@@ -53,17 +53,10 @@ static void Power_KL30_Init(void)
Data_Read_DiagPara();
Analog_Signal_Conv_Init();
BU98R10_Init();
Uart0_Init(115200);
Protocol_KL30_Wakeup_Init();
BlueTooth_KL30_KL15_Wakeup_Init();
Sys_KL30_Init();
Checkself_Init();
Data_Vehicle_Speed_KL30_Init();
Data_Engine_Speed_KL30_Wakeup_Init();
LINE_IN_Init();
Key_KL30_Init_EXample();
//Light_Sensor_Init_Example();//注意顺序1
LED_Driver_Init_Example();//注意顺序2
LED_Driver_Service_Immediate();
Data_User_Mileage_KL30Init();
......@@ -81,7 +74,7 @@ static void Power_KL30_Init(void)
Telltales_Init();
Telltales_UserInit();
MenuData_Unit_Init();
Data_TPMS_KL30_Init ();
g_stRTCInformation.u8RTCSecond = 0;
g_stRTCInformation.u8RTCMinute = 0;
g_stRTCInformation.u8RTCHour = 0;
......@@ -96,7 +89,6 @@ extern uint32_t PowerIgnOffTimeLine;
static void Power_Wakeup_Init(void)
{
PowerIgnOffTimeLine = 0;
//RTE_CLOCK_Select_Start();
Simulated_IIC_2_Init();
Gpio_Init(Gpio_WakeUp_Init);
Can_Init();
......@@ -108,20 +100,12 @@ static void Power_Wakeup_Init(void)
Data_User_Mileage_WakeupInit();
BU98R10_Init();
Sys_WakeUp_Init();
Data_Vehicle_Speed_KL30_Init();
Data_Vehicle_Speed_Wakeup_Init();
Data_Engine_Speed_KL30_Wakeup_Init();
LINE_IN_Init();
Key_KL30_Init_EXample();
Line_In_KL15_ON_Init();
MenuData_TCS_Init();
//Light_Sensor_Init_Example();//注意顺序1
LED_Driver_Init_Example();//注意顺序2
LED_Driver_Service_Immediate();
Protocol_KL30_Wakeup_Init();
Uart0_Init(115200);
BlueTooth_KL30_KL15_Wakeup_Init();
Data_Voltage_Init();
// TimerM_PWM_counter_Output_Init(TIMERM_COUNTER0, 400, 64000000);
TimerM_PWM_counter_Output_Init(TIMERM_COUNTER1, 400, 64000000);
......@@ -133,7 +117,7 @@ static void Power_Wakeup_Init(void)
TimerM_PWM_CH_Output_init(TIMERM_COUNTER1, TIMERM_CHB, ActiveLevel_High);
Telltales_Init();
Telltales_UserInit();
Data_TPMS_KL15_WAKE_UP_Init();
RTE_DEEPSLEEP_GPIO_Interrupt_Enable(WAKEUP_KL15_In,Trigger_Rising);
}
......@@ -163,8 +147,6 @@ static void Power_IG_ON_Init(void)
Data_Voltage_Init();
MenuData_TCS_Init();
BlueTooth_KL30_KL15_Wakeup_Init();
Data_TPMS_KL15_WAKE_UP_Init();
CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Enable);
DFlash_init();
Data_Read_DiagPara();
......
......@@ -242,14 +242,7 @@ static void LED_Coolant_Execution(Tellib_uint16_t led_status)
static Tellib_uint16_t LED_Bluetooth_Judgement(void)
{
Tellib_uint16_t LED_STATE = 0u;
if (BlueTooth.BLE_St)
{
LED_STATE = 1u;
}
else
{
LED_STATE = 0u;
}
return LED_STATE;
}
static void LED_Bluetooth_Execution(Tellib_uint16_t led_status)
......@@ -511,14 +504,7 @@ static void LED_Lateral_Strut_Execution(Tellib_uint16_t led_status)
static Tellib_uint16_t LED_Tire_Pressure_Judgement(void)
{
Tellib_uint16_t LED_STATE = 0u;
if(Get_Led_TPMS_Waring() == 1)
{
LED_STATE = 1;
}
else
{
LED_STATE = 2;
}
return LED_STATE;
}
static void LED_Tire_Pressure_Execution(Tellib_uint16_t led_status)
......@@ -555,46 +541,3 @@ static void LED_Navigato_Execution(Tellib_uint16_t led_status)
void Turn_Left_Right_Lamp(void)
{
if ( SYS_OPR_STAT_IGN_ON )
{
if ((Common_GetIgnOnTime() >= 3000) && (ClearODO_Flag == 0))
{
if (Line_In_Get_Status(LINE_IN_TurnLeft))
{
LED_Driver_Channel_Set(LampChannel_0, LampCh0_06_Turn_Left, LED_ON);
SEG_SET_LED_STS(em_SEG_Turn_Left, 1);
}
else
{
LED_Driver_Channel_Set(LampChannel_0, LampCh0_06_Turn_Left, LED_OFF);
SEG_SET_LED_STS(em_SEG_Turn_Left, 0);
}
if (Line_In_Get_Status(LINE_IN_TurnRight))
{
LED_Driver_Channel_Set(LampChannel_0, LampCh0_05_Turn_Right, LED_ON);
SEG_SET_LED_STS(em_SEG_Turn_Right, 1);
}
else
{
LED_Driver_Channel_Set(LampChannel_0, LampCh0_05_Turn_Right, LED_OFF);
SEG_SET_LED_STS(em_SEG_Turn_Right, 0);
}
}
else
{
LED_Driver_Channel_Set(LampChannel_0, LampCh0_06_Turn_Left, LED_ON);
SEG_SET_LED_STS(em_SEG_Turn_Left, 1);
LED_Driver_Channel_Set(LampChannel_0, LampCh0_05_Turn_Right, LED_ON);
SEG_SET_LED_STS(em_SEG_Turn_Right, 1);
}
}
else
{
LED_Driver_Channel_Set(LampChannel_0, LampCh0_06_Turn_Left, LED_OFF);
SEG_SET_LED_STS(em_SEG_Turn_Left, 0);
LED_Driver_Channel_Set(LampChannel_0, LampCh0_05_Turn_Right, LED_OFF);
SEG_SET_LED_STS(em_SEG_Turn_Right, 0);
}
}
......@@ -33,6 +33,6 @@ extern Led_HighBeam_Count HighBeam_Timer;
void Telltales_Init(void);
void Telltales_UserInit(void);
void Turn_Left_Right_Lamp(void);
#endif
......@@ -159,7 +159,7 @@ void uart0_interrupt_receive(void)
uart_callback_error(err_type);
}
rx_data = UART0_RX;
UART_Put((uint16_t)rx_data);
//UART_Put((uint16_t)rx_data);
......
......@@ -38,32 +38,20 @@ void Sys_5ms_Tasks(void)
}
uint8_t ljs_buf[200] = {0};
void Sys_10ms_Tasks(void)
{
memset(ljs_buf, 0x55, 200);
Line_In_Debounce_Service(10u);
Line_In_Debounce_Service(10u);
Key_Service();
Data_Mileage_Write_EEPROM();
Can_BusOff_Recover(10u);
Turn_Left_Right_Lamp();
TYW_Check_Count();
Data_TPMS_Processing_Service();
Protocol_Service();
Protocol_Send_Service();
//Uart0_IntSend(ljs_buf, 200) ;
}
void Sys_20ms_Tasks(void)
{
Key_Clear_Time();
Key_Auto_Save();
Data_Vehicle_Speed_Processing_Service();
Data_Engine_Speed_Processing_Service();
}
void Sys_50ms_Tasks(void)
......@@ -90,15 +78,13 @@ void Sys_100ms_Tasks(void)
Services_Mileage_Callback();
Data_Voltage_Processing_Service();
S3_ServerCNTT();
//ECU_FaultCode_Processing_Service();
Send_UUID_To_Esp32();
ljs_voltage = ADC_Conv_Single_Channel(ADC_CH_KL15_VOLTAGE);
if (u8LEDDriverCheckCount >= 10U)
{
u8LEDDriverCheckCount = 0U;
LED_Driver_Work_Check();
LED_Driver_Service_Immediate();//注意顺序1
//ALS_Service();//注意顺序2
}
else
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment