Commit b4668b50 authored by 郑萍's avatar 郑萍

Merge branch 'dev' of http://tyw-server.synology.me:12345/shihao/haojin750tft into zhengping

parents 16150e63 14085d14
......@@ -728,6 +728,16 @@
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\FaultCode.h</FilePath>
</File>
<File>
<FileName>BlueTooth.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\BlueTooth.c</FilePath>
</File>
<File>
<FileName>BlueTooth.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\BlueTooth.h</FilePath>
</File>
</Files>
</Group>
<Group>
......@@ -1008,11 +1018,6 @@
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Component\System_Monitor\System_Monitor_User.h</FilePath>
</File>
<File>
<FileName>System_Monitor.lib</FileName>
<FileType>4</FileType>
<FilePath>..\..\..\..\Source\Component\System_Monitor\System_Monitor.lib</FilePath>
</File>
</Files>
</Group>
<Group>
......
......@@ -2,8 +2,8 @@
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************
LR_IROM1 0 0x00073C00 { ; load region size_region
ER_IROM1 0 0x00073C00 { ; load address = execution address
LR_IROM1 0x00000000 0x00073C00 { ; load region size_region
ER_IROM1 0x00000000 0x00073C00 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
......
#include "Components.h"
uint8_t OTA_Update_Count = 0;
const uint8_t HJBlueToothName[9]= {"HJ_750TFT"};
uint8_t UUIDConfigBuf[22] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00};
void BlueToothService()
{
// _PICID_Struct PicObj;
// PicObj.qr_logo_id = Pic_0020;
// PicObj.qr_pic_id = Pic_0002;
// PicObj.update_pic_id = 0;
// PicObj.second_menu = 0;
// PicObj.navigation_task_id = 0;
// PackedTransfer_DisplayPhoneMirrorQRcode(1, PicObj);
SetBlueToothName((uint8_t *)HJBlueToothName, sizeof(HJBlueToothName));
SetUUIDData((char *)UUIDConfigBuf, 22);
// _QRCODE_RECT QRCode_Rect;
......@@ -20,3 +15,36 @@ void BlueToothService()
// QRCode_Rect.width = QRCode_WIDTH;
// SetScreenType(QRCode_TYPE, QRCode_Rect);
}
void UpdateGraphics(void)
{
_PICID_Struct PicObj;
PicObj.qr_logo_id = 0;
PicObj.main_pic_id = Pic_0382;
PicObj.qr_pic_id = Pic_0316;
PicObj.update_pic_id = Pic_0193;
PicObj.second_menu = 0;
PicObj.navigation_task_id = 0;
PackedTransfer_DisplayPhoneMirrorQRcode(0, PicObj);
}
void OTAUpdateService(void)
{
_QRCODE_RECT QRCode_Rect;
QRCode_Rect.x = 457;
QRCode_Rect.y = 137;
QRCode_Rect.height = 240;
QRCode_Rect.width = 240;
if(OTA_Update_Flag == 1)
{
OTA_Update_Count++;
if(OTA_Update_Count < 5)
{
SetUpdateCtrl(1,QRCode_Rect);
}
}
else
{
SetUpdateCtrl(0,QRCode_Rect);
OTA_Update_Count=0;
}
}
......@@ -10,5 +10,7 @@
extern void BlueToothService(void);
extern void OTAUpdateService(void);
void UpdateGraphics(void);
#endif
\ No newline at end of file
......@@ -38,7 +38,7 @@ void Gpio_Init(_GpioUser_Enum InitMode)
RTE_GPIO_Config(RTE_GPIO_PORT02_PIN06, RTE_GPIO_DIR_IN); //水温信号输入-AD
RTE_GPIO_Config(RTE_GPIO_PORT02_PIN07, RTE_GPIO_DIR_IN); //BiasBitSW-燃油-AD---
RTE_GPIO_Config(RTE_GPIO_PORT03_PIN00, GpioOut_Low);
RTE_GPIO_Config(RTE_GPIO_PORT03_PIN00, RTE_GPIO_DIR_IN);
RTE_GPIO_Config(RTE_GPIO_PORT03_PIN01, RTE_GPIO_DIR_IN); //SDB_LED_DRIVER
RTE_GPIO_Config(RTE_GPIO_PORT04_PIN00, GpioOut_Low); //SEDIO-编程
......@@ -110,7 +110,7 @@ void Gpio_Init(_GpioUser_Enum InitMode)
RTE_GPIO_Config(RTE_GPIO_PORT02_PIN06, RTE_GPIO_DIR_IN);
RTE_GPIO_Config(RTE_GPIO_PORT02_PIN07, RTE_GPIO_DIR_IN);
RTE_GPIO_Config(RTE_GPIO_PORT03_PIN00, GpioOut_Low);
RTE_GPIO_Config(RTE_GPIO_PORT03_PIN00, RTE_GPIO_DIR_IN);
RTE_GPIO_Config(RTE_GPIO_PORT03_PIN01, RTE_GPIO_DIR_IN);
RTE_GPIO_Config(RTE_GPIO_PORT04_PIN00, GpioOut_Low);
......
......@@ -3,16 +3,18 @@
uint8_t Pic_mode = PIC_DAYTIME_CH;
uint8_t g_u8Display_Mode = ModeDAY;
uint8_t g_u8Display_Mode_select = ModeDAY;
uint8_t g_u8Language = CH;
uint8_t g_u8Backlight = Backlight_4 ;
uint8_t g_u8Backlight_select = Backlight_4 ;
uint8_t g_u8UnitSetting = Metric ;
uint8_t g_u8SelfCheck = 0;/*自检*/
uint16_t g_u16fuelnumberup = 0;
uint16_t g_u16vspeednumberup = 0;
uint16_t g_u16vspeednumberdown = 600;
uint16_t g_u16vspeednumberdown = 300;
uint16_t g_u16espeednumberup = 0;
uint16_t g_u16espeednumberdown = 600;
uint16_t g_u16espeednumberdown = 300;
//自检函数
void AMT630H_GUI_BACKGRAND_SelfCheck(void);
......@@ -282,7 +284,7 @@ static void AMT630H_GUI_FaultCode(uint8_t FaultCodevalid,uint8_t FaultCode_hight
*/
void AMT630H_GUI_Display_Mode_Information()
{
if (g_u8Display_Mode == ModeDAY)
if (g_u8Display_Mode_select == ModeDAY)
{
if(g_u8Language == CH)/*日间中文*/
{
......@@ -309,7 +311,7 @@ void AMT630H_GUI_Display_Mode_Information()
SetPagePic(GRAPHICS_PAGE_0, Pic_0074_422_103);
}
}
else if(g_u8Display_Mode == ModeNIGHT)
else if(g_u8Display_Mode_select == ModeNIGHT)
{
if(g_u8Language == CH)/*夜间中文*/
{
......@@ -334,8 +336,43 @@ void AMT630H_GUI_Display_Mode_Information()
SetPagePic(GRAPHICS_PAGE_0, Pic_0262_461_118);
}
}
/*else if自动模式没写*/
else if(g_u8Display_Mode_select == ModeATUO)
{
if(g_u8Display_Mode == ModeDAY)
{
if(g_u8Language == CH)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0146_27_396);/*下方菜单*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0150_448_343);
SetPagePic(GRAPHICS_PAGE_0, Pic_0148_472_231);
SetPagePic(GRAPHICS_PAGE_0, Pic_0151_476_117);
}
else if(g_u8Language == EN)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0071_18_397);/*下方菜单*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0075_409_345);
SetPagePic(GRAPHICS_PAGE_0, Pic_0073_456_232);
SetPagePic(GRAPHICS_PAGE_0, Pic_0076_461_118);
}
}
else if(g_u8Display_Mode == ModeNIGHT)
{
if(g_u8Language == CH)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0333_27_396);
SetPagePic(GRAPHICS_PAGE_0, Pic_0337_448_343);
SetPagePic(GRAPHICS_PAGE_0, Pic_0335_472_231);
SetPagePic(GRAPHICS_PAGE_0, Pic_0338_476_117);
}
else if(g_u8Language == EN)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0257_18_397);
SetPagePic(GRAPHICS_PAGE_0, Pic_0261_409_345);
SetPagePic(GRAPHICS_PAGE_0, Pic_0259_456_232);
SetPagePic(GRAPHICS_PAGE_0, Pic_0262_461_118);
}
}
}
}
......@@ -366,7 +403,7 @@ void AMT630H_GUI_Backlight_Information(void)
SetPagePic(GRAPHICS_PAGE_0, Pic_0122_436_519);
}
/*背光等级选择*/
if(g_u8Backlight == Backlight_5)
if(g_u8Backlight_select == Backlight_5)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0059_509_353);
SetPagePic(GRAPHICS_PAGE_0, Pic_0060_504_307);
......@@ -374,7 +411,7 @@ void AMT630H_GUI_Backlight_Information(void)
SetPagePic(GRAPHICS_PAGE_0, Pic_0062_503_219);
SetPagePic(GRAPHICS_PAGE_0, Pic_0063_495_145);
}
else if(g_u8Backlight == Backlight_4)
else if(g_u8Backlight_select == Backlight_4)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0059_509_353);
SetPagePic(GRAPHICS_PAGE_0, Pic_0060_504_307);
......@@ -382,7 +419,7 @@ void AMT630H_GUI_Backlight_Information(void)
SetPagePic(GRAPHICS_PAGE_0, Pic_0064_493_190);
SetPagePic(GRAPHICS_PAGE_0, Pic_0065_504_136);
}
else if(g_u8Backlight == Backlight_3)
else if(g_u8Backlight_select == Backlight_3)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0059_509_353);
SetPagePic(GRAPHICS_PAGE_0, Pic_0060_504_307);
......@@ -390,7 +427,7 @@ void AMT630H_GUI_Backlight_Information(void)
SetPagePic(GRAPHICS_PAGE_0, Pic_0062_503_186);
SetPagePic(GRAPHICS_PAGE_0, Pic_0065_504_136);
}
else if(g_u8Backlight == Backlight_2)
else if(g_u8Backlight_select == Backlight_2)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0059_509_353);
SetPagePic(GRAPHICS_PAGE_0, Pic_0067_495_281);
......@@ -398,7 +435,7 @@ void AMT630H_GUI_Backlight_Information(void)
SetPagePic(GRAPHICS_PAGE_0, Pic_0062_503_186);
SetPagePic(GRAPHICS_PAGE_0, Pic_0065_504_136);
}
else if(g_u8Backlight == Backlight_1)
else if(g_u8Backlight_select == Backlight_1)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0069_506_332);
SetPagePic(GRAPHICS_PAGE_0, Pic_0060_504_286);
......@@ -406,7 +443,7 @@ void AMT630H_GUI_Backlight_Information(void)
SetPagePic(GRAPHICS_PAGE_0, Pic_0062_503_186);
SetPagePic(GRAPHICS_PAGE_0, Pic_0065_504_136);
}
else if(g_u8Backlight == Backlight_ATUO)
else if(g_u8Backlight_select == Backlight_ATUO)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0059_509_286);
SetPagePic(GRAPHICS_PAGE_0, Pic_0060_504_236);
......@@ -441,7 +478,7 @@ void AMT630H_GUI_Backlight_Information(void)
SetPagePic(GRAPHICS_PAGE_0, Pic_0310_436_519);
}
/*背光等级选择*/
if(g_u8Backlight == Backlight_5)
if(g_u8Backlight_select == Backlight_5)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0245_509_353);
SetPagePic(GRAPHICS_PAGE_0, Pic_0246_504_307);
......@@ -449,7 +486,7 @@ void AMT630H_GUI_Backlight_Information(void)
SetPagePic(GRAPHICS_PAGE_0, Pic_0248_503_219);
SetPagePic(GRAPHICS_PAGE_0, Pic_0249_495_145);
}
else if(g_u8Backlight == Backlight_4)
else if(g_u8Backlight_select == Backlight_4)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0245_509_353);
SetPagePic(GRAPHICS_PAGE_0, Pic_0246_504_307);
......@@ -457,7 +494,7 @@ void AMT630H_GUI_Backlight_Information(void)
SetPagePic(GRAPHICS_PAGE_0, Pic_0250_493_190);
SetPagePic(GRAPHICS_PAGE_0, Pic_0251_504_136);
}
else if(g_u8Backlight == Backlight_3)
else if(g_u8Backlight_select == Backlight_3)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0245_509_353);
SetPagePic(GRAPHICS_PAGE_0, Pic_0246_504_307);
......@@ -465,7 +502,7 @@ void AMT630H_GUI_Backlight_Information(void)
SetPagePic(GRAPHICS_PAGE_0, Pic_0248_503_186);
SetPagePic(GRAPHICS_PAGE_0, Pic_0251_504_136);
}
else if(g_u8Backlight == Backlight_2)
else if(g_u8Backlight_select == Backlight_2)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0245_509_353);
SetPagePic(GRAPHICS_PAGE_0, Pic_0253_495_281);
......@@ -473,7 +510,7 @@ void AMT630H_GUI_Backlight_Information(void)
SetPagePic(GRAPHICS_PAGE_0, Pic_0248_503_186);
SetPagePic(GRAPHICS_PAGE_0, Pic_0251_504_136);
}
else if(g_u8Backlight == Backlight_1)
else if(g_u8Backlight_select == Backlight_1)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0255_506_332);
SetPagePic(GRAPHICS_PAGE_0, Pic_0246_504_286);
......@@ -481,7 +518,7 @@ void AMT630H_GUI_Backlight_Information(void)
SetPagePic(GRAPHICS_PAGE_0, Pic_0248_503_186);
SetPagePic(GRAPHICS_PAGE_0, Pic_0251_504_136);
}
else if(g_u8Backlight == Backlight_ATUO)
else if(g_u8Backlight_select == Backlight_ATUO)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0245_509_286);
SetPagePic(GRAPHICS_PAGE_0, Pic_0246_504_236);
......@@ -1444,6 +1481,7 @@ void AMT630H_GUI_Display_Mode_Setting(Menu_Item_en_t display_mode) /*图 显示
if(Menu_Item_Select_Get(MENU_ITEM_SELECT_DAYTIME) == 1)
{
g_u8Display_Mode = ModeDAY;
g_u8Display_Mode_select = ModeDAY;
}
else
{
......@@ -1474,6 +1512,7 @@ void AMT630H_GUI_Display_Mode_Setting(Menu_Item_en_t display_mode) /*图 显示
if(Menu_Item_Select_Get(MENU_ITEM_SELECT_NIGHTTIME) == 1)
{
g_u8Display_Mode = ModeNIGHT;
g_u8Display_Mode_select = ModeNIGHT;
}
else
{
......@@ -1502,7 +1541,15 @@ void AMT630H_GUI_Display_Mode_Setting(Menu_Item_en_t display_mode) /*图 显示
}
if(Menu_Item_Select_Get(MENU_ITEM_SELECT_AUTO) == 1)
{
g_u8Display_Mode = ModeATUO;
g_u8Display_Mode_select = ModeATUO;
if(LightR_Status == 0)
{
g_u8Display_Mode = ModeNIGHT;
}
else if(LightR_Status == 1)
{
g_u8Display_Mode = ModeDAY;
}
}
else
{
......@@ -1541,6 +1588,7 @@ void AMT630H_GUI_Display_Mode_Setting(Menu_Item_en_t display_mode) /*图 显示
if(Menu_Item_Select_Get(MENU_ITEM_SELECT_DAYTIME) == 1)
{
g_u8Display_Mode = ModeDAY;
g_u8Display_Mode_select = ModeDAY;
}
else
{
......@@ -1572,6 +1620,7 @@ void AMT630H_GUI_Display_Mode_Setting(Menu_Item_en_t display_mode) /*图 显示
if(Menu_Item_Select_Get(MENU_ITEM_SELECT_NIGHTTIME) == 1)
{
g_u8Display_Mode = ModeNIGHT;
g_u8Display_Mode_select = ModeNIGHT;
}
else
{
......@@ -1601,7 +1650,15 @@ void AMT630H_GUI_Display_Mode_Setting(Menu_Item_en_t display_mode) /*图 显示
}
if(Menu_Item_Select_Get(MENU_ITEM_SELECT_AUTO) == 1)
{
g_u8Display_Mode = ModeATUO ;
g_u8Display_Mode_select = ModeATUO;
if(LightR_Status == 0)
{
g_u8Display_Mode = ModeNIGHT;
}
else if(LightR_Status == 1)
{
g_u8Display_Mode = ModeDAY;
}
}
else
{
......@@ -1612,6 +1669,10 @@ void AMT630H_GUI_Display_Mode_Setting(Menu_Item_en_t display_mode) /*图 显示
break;
}
}
else
{
;
}
}
......@@ -1621,13 +1682,6 @@ void AMT630H_GUI_Display_Mode_Setting(Menu_Item_en_t display_mode) /*图 显示
*/
void AMT630H_GUI_Backlight_Setting(Menu_Item_en_t back_mode) /*图 背光*/
{
/*case 0 自动*/
/*case 1 选中1*/
/*case 2 选中2*/
/*case 3 选中3*/
/*case 4 选中4*/
/*case 5 选中5*/
if(g_u8Display_Mode == ModeDAY)/*日间模式*/
{
if(g_u8Language == CH)
......@@ -1653,6 +1707,7 @@ void AMT630H_GUI_Backlight_Setting(Menu_Item_en_t back_mode) /*图 背光*/
if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_5))
{
g_u8Backlight = Backlight_5 ;
g_u8Backlight_select =Backlight_5 ;
}
else
{
......@@ -1671,6 +1726,7 @@ void AMT630H_GUI_Backlight_Setting(Menu_Item_en_t back_mode) /*图 背光*/
if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_4))
{
g_u8Backlight = Backlight_4 ;
g_u8Backlight_select =Backlight_4 ;
}
else
{
......@@ -1689,6 +1745,7 @@ void AMT630H_GUI_Backlight_Setting(Menu_Item_en_t back_mode) /*图 背光*/
if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_3))
{
g_u8Backlight = Backlight_3 ;
g_u8Backlight_select =Backlight_3 ;
}
else
{
......@@ -1707,6 +1764,7 @@ void AMT630H_GUI_Backlight_Setting(Menu_Item_en_t back_mode) /*图 背光*/
if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_2))
{
g_u8Backlight = Backlight_2 ;
g_u8Backlight_select =Backlight_2 ;
}
else
{
......@@ -1725,6 +1783,7 @@ void AMT630H_GUI_Backlight_Setting(Menu_Item_en_t back_mode) /*图 背光*/
if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_1))
{
g_u8Backlight = Backlight_1 ;
g_u8Backlight_select =Backlight_1 ;
}
else
{
......@@ -1749,7 +1808,31 @@ void AMT630H_GUI_Backlight_Setting(Menu_Item_en_t back_mode) /*图 背光*/
/*记忆选择*/
if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_AUTO))
{
g_u8Backlight = Backlight_ATUO ;
g_u8Backlight_select = Backlight_ATUO ;
if(Backlight_SetPwmLevel() == 5)
{
g_u8Backlight = Backlight_5;
}
else if(Backlight_SetPwmLevel() == 4)
{
g_u8Backlight = Backlight_4;
}
else if(Backlight_SetPwmLevel() == 3)
{
g_u8Backlight = Backlight_3;
}
else if(Backlight_SetPwmLevel() == 2)
{
g_u8Backlight = Backlight_2;
}
else if(Backlight_SetPwmLevel() == 1)
{
g_u8Backlight = Backlight_1;
}
else
{
;
}
}
else
{
......@@ -1785,6 +1868,7 @@ void AMT630H_GUI_Backlight_Setting(Menu_Item_en_t back_mode) /*图 背光*/
if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_5))
{
g_u8Backlight = Backlight_5 ;
g_u8Backlight_select = Backlight_5 ;
}
else
{
......@@ -1803,6 +1887,7 @@ void AMT630H_GUI_Backlight_Setting(Menu_Item_en_t back_mode) /*图 背光*/
if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_4))
{
g_u8Backlight = Backlight_4 ;
g_u8Backlight_select = Backlight_4 ;
}
else
{
......@@ -1821,6 +1906,7 @@ void AMT630H_GUI_Backlight_Setting(Menu_Item_en_t back_mode) /*图 背光*/
if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_3))
{
g_u8Backlight = Backlight_3 ;
g_u8Backlight_select = Backlight_3 ;
}
else
{
......@@ -1839,6 +1925,7 @@ void AMT630H_GUI_Backlight_Setting(Menu_Item_en_t back_mode) /*图 背光*/
if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_2))
{
g_u8Backlight = Backlight_2 ;
g_u8Backlight_select = Backlight_2 ;
}
else
{
......@@ -1857,6 +1944,7 @@ void AMT630H_GUI_Backlight_Setting(Menu_Item_en_t back_mode) /*图 背光*/
if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_1))
{
g_u8Backlight = Backlight_1 ;
g_u8Backlight_select = Backlight_1 ;
}
else
{
......@@ -1881,7 +1969,31 @@ void AMT630H_GUI_Backlight_Setting(Menu_Item_en_t back_mode) /*图 背光*/
/*记忆选择*/
if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_AUTO))
{
g_u8Backlight = Backlight_ATUO ;
g_u8Backlight_select = Backlight_ATUO ;
if(Backlight_SetPwmLevel() == 5)
{
g_u8Backlight = Backlight_5;
}
else if(Backlight_SetPwmLevel() == 4)
{
g_u8Backlight = Backlight_4;
}
else if(Backlight_SetPwmLevel() == 3)
{
g_u8Backlight = Backlight_3;
}
else if(Backlight_SetPwmLevel() == 2)
{
g_u8Backlight = Backlight_2;
}
else if(Backlight_SetPwmLevel() == 1)
{
g_u8Backlight = Backlight_1;
}
else
{
;
}
}
else
{
......@@ -2653,16 +2765,6 @@ static const uint16_t PICList_ESpeed_NIGHT[] = {
Pic_0716_782_125,
};
static const uint16_t PICList_Fuel[] = {
Pic_0554_315_473,
Pic_0555_366_473,
Pic_0556_426_473,
Pic_0557_469_473,
Pic_0558_514_473,
Pic_0559_550_473,
Pic_0560_586_473,
Pic_0561_623_473,
};
static const uint16_t PICList_Fuel_RED[] = {
Pic_0562_315_473,
Pic_0555_366_473,
Pic_0556_426_473,
......@@ -2672,6 +2774,16 @@ static const uint16_t PICList_Fuel_RED[] = {
Pic_0560_586_473,
Pic_0561_623_473,
};
// static const uint16_t PICList_Fuel_RED[] = {
// Pic_0562_315_473,
// Pic_0555_366_473,
// Pic_0556_426_473,
// Pic_0557_469_473,
// Pic_0558_514_473,
// Pic_0559_550_473,
// Pic_0560_586_473,
// Pic_0561_623_473,
// };
static const uint16_t PICList_Fuel_SelfCheck[] ={
Pic_0554_315_473,
Pic_0555_366_473,
......@@ -2733,7 +2845,14 @@ static void AMT630H_GUI_Light()
}
if(Get_TelltalesLedSts(em_LED_Coolant_Temperature))
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0741_616_20);
if(FLASH_SYNC_1Hz)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0741_616_20);/*水温灯报警闪烁1HZ*/
}
else
{
;
}
}
if(Get_TelltalesLedSts(em_LED_WIFI))
{
......@@ -2743,13 +2862,17 @@ static void AMT630H_GUI_Light()
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0740_682_21);
}
if(Get_TelltalesLedSts(em_LED_E))
if(Get_TelltalesLedSts(em_LED_E) == 1)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0748_194_26);
SetPagePic(GRAPHICS_PAGE_0, Pic_0748_194_26);//E
}
if(Get_TelltalesLedSts(em_LED_S))
else if(Get_TelltalesLedSts(em_LED_E) == 2)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0749_192_26);
SetPagePic(GRAPHICS_PAGE_0, Pic_0749_192_26);//S
}
else
{
;
}
}
......@@ -2837,23 +2960,31 @@ static void AMT630H_GUI_TIME(uint16_t Hour, uint16_t Minute)
// }
/*燃油显示函数*/
uint8_t g_u16_GUI_PerFuelLevel = 0;
uint8_t g_u16_GUI_PerFuelLevel = 1;
static void AMT630H_GUI_Fuel(uint8_t Fuel)
{
/*外部传参燃油处于数组第几格*/
/*R>83且处于非开路状态时 黄色燃油灯闪烁*/
/*R开路状态时 黄色燃油灯闪烁*/
/*以上两种情况黄色燃油灯闪烁的频率不同*/
static uint8_t s_FuelLowTime = 0U;
uint8_t FuelLevel;
FuelLevel = Fuel;
static uint8_t s_FuelLowTime = 0U;
if(Fuel == 0)
{
FuelLevel = 1;
}
else
{
;
}
if (g_u8Display_Mode == ModeDAY)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0553_315_473); /*燃油格*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0549_299_533); /*E*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0550_715_533); /*F*/
/*燃油桶闪烁*/
if (FuelLevel == 0)
/*开路状态黄色燃油灯 1HZ闪烁*/
if (Fuel == 0)
{
if (FLASH_SYNC_1Hz)
{
......@@ -2861,7 +2992,7 @@ static void AMT630H_GUI_Fuel(uint8_t Fuel)
}
s_FuelLowTime = 0;
}
else if (FuelLevel == 1)
else if (Fuel == 1)
{
s_FuelLowTime++;
if (s_FuelLowTime <= 15)
......@@ -2884,7 +3015,7 @@ static void AMT630H_GUI_Fuel(uint8_t Fuel)
SetPagePic(GRAPHICS_PAGE_0, Pic_0662_315_473); /*燃油格*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0549_299_533); /*E*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0660_715_533); /*F*/
if (FuelLevel == 0)
if (Fuel == 0)
{
if (FLASH_SYNC_1Hz)
{
......@@ -2892,7 +3023,7 @@ static void AMT630H_GUI_Fuel(uint8_t Fuel)
}
s_FuelLowTime = 0;
}
else if (FuelLevel == 1)
else if (Fuel == 1)
{
s_FuelLowTime++;
if (s_FuelLowTime <= 15)
......@@ -2911,13 +3042,12 @@ static void AMT630H_GUI_Fuel(uint8_t Fuel)
}
}
/*燃油格数走格*/
if (FuelLevel > 0)
{
if (FuelLevel != g_u16_GUI_PerFuelLevel)
{
for (uint8_t i = 0; i <= g_u16_GUI_PerFuelLevel; i++)
for (uint8_t i = 0; i < g_u16_GUI_PerFuelLevel; i++)
{
SetPagePic(GRAPHICS_PAGE_0, PICList_Fuel[i]);
}
......@@ -2935,67 +3065,41 @@ static void AMT630H_GUI_Fuel(uint8_t Fuel)
;
}
}
else if (FuelLevel == g_u16_GUI_PerFuelLevel)
if (FuelLevel == g_u16_GUI_PerFuelLevel)
{
g_u16_GUI_PerFuelLevel = FuelLevel;
for (uint8_t i = 0; i <= g_u16_GUI_PerFuelLevel; i++)
for (uint8_t i = 0; i < g_u16_GUI_PerFuelLevel; i++)
{
SetPagePic(GRAPHICS_PAGE_0, PICList_Fuel[i]);
}
}
}
else
{
if (FuelLevel != g_u16_GUI_PerFuelLevel)
{
for (uint8_t i = 0; i <= g_u16_GUI_PerFuelLevel; i++)
{
{
SetPagePic(GRAPHICS_PAGE_0, PICList_Fuel_RED[i]);
}
}
if (FuelLevel > g_u16_GUI_PerFuelLevel)
{
g_u16_GUI_PerFuelLevel++;
}
else if ((FuelLevel < g_u16_GUI_PerFuelLevel) && (g_u16_GUI_PerFuelLevel != 0))
{
g_u16_GUI_PerFuelLevel--;
}
else
{
;
}
}
else if (FuelLevel == g_u16_GUI_PerFuelLevel)
{
g_u16_GUI_PerFuelLevel = FuelLevel;
for (uint8_t i = 0; i <= g_u16_GUI_PerFuelLevel; i++)
{
{
SetPagePic(GRAPHICS_PAGE_0, PICList_Fuel_RED[i]);
}
}
}
}
}
uint16_t g_u16PerFuel_SelfCheck = 0;
/*燃油自检函数*/
static void AMT630H_GUI_Fuel_SelfCheck(uint8_t Fuel)
{
uint8_t FuelLevel;
FuelLevel = Fuel;
if(Fuel == 1)
{
FuelLevel = 2;
}
else
{
;
}
if (g_u8Display_Mode == ModeDAY)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0553_315_473); /*燃油格*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0549_299_533); /*E*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0550_715_533); /*F*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0551_503_529); /*黑色燃油灯*/
}
else if (g_u8Display_Mode == ModeNIGHT)
{
......@@ -3004,8 +3108,17 @@ static void AMT630H_GUI_Fuel_SelfCheck(uint8_t Fuel)
SetPagePic(GRAPHICS_PAGE_0, Pic_0660_715_533); /*F*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0661_503_529); /*白色燃油灯*/
}
/*开机自检燃油走格*/
if (FuelLevel > 0)
{
if (FuelLevel != g_u16_GUI_PerFuelLevel)
{
for (uint8_t i = 0; i < g_u16_GUI_PerFuelLevel; i++)
{
SetPagePic(GRAPHICS_PAGE_0, PICList_Fuel_SelfCheck[i]);
}
/*燃油格数走格*/
if (FuelLevel > g_u16_GUI_PerFuelLevel)
{
g_u16_GUI_PerFuelLevel++;
......@@ -3018,10 +3131,21 @@ static void AMT630H_GUI_Fuel_SelfCheck(uint8_t Fuel)
{
;
}
}
if (FuelLevel == g_u16_GUI_PerFuelLevel)
{
g_u16_GUI_PerFuelLevel = FuelLevel;
for (uint8_t i = 0; i < g_u16_GUI_PerFuelLevel; i++)
{
SetPagePic(GRAPHICS_PAGE_0, PICList_Fuel_SelfCheck[i]);
}
}
}
else
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0562_315_473);/*燃油红区*/
}
}
......@@ -3045,11 +3169,11 @@ static void AMT630H_GUI_Voltage(uint16_t Voltage)
uint16_t Front;
if ((VoltageNumber <= 120) || (VoltageNumber > 150))
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0563_923_407); /*电压图标*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0563_923_407); /*红色电压图标*/
}
else
{
;
SetPagePic(GRAPHICS_PAGE_0, Pic_0865_923_407);/*绿色电压图标显示*/
}
/*数据处理*/
Voltage_Hundred = VoltageNumber / 100;
......@@ -3109,11 +3233,11 @@ static void AMT630H_GUI_Voltage(uint16_t Voltage)
uint16_t Front;
if ((VoltageNumber <= 120) || (VoltageNumber > 150))
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0563_923_407); /*电压图标*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0563_923_407); /*红色电压图标*/
}
else
{
;
SetPagePic(GRAPHICS_PAGE_0, Pic_0865_923_407);/*绿色电压图标显示*/
}
/*数据处理*/
Voltage_Hundred = VoltageNumber / 100;
......@@ -3382,54 +3506,54 @@ static void AMT630H_GUI_Trip(uint32_t Trip, uint8_t Uint)
DisplayNumPara.DecimalNum = 1;/*小数点后一位*/
if((Tripnumber<10000)&&(Tripnumber>=1000))
{
DisplayNumPara.x = 125;
DisplayNumPara.x = 140;
DisplayNumPara.MinDigits = 4;
if(Uint == 0)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0580_163_324);/*KM*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0580_187_324);//KM
}
else
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0861_163_324);/*单位mile*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0861_187_324);/*单位mile*/
}
}
else if((Tripnumber<1000)&&(Tripnumber>=100))
{
DisplayNumPara.x = 101;
DisplayNumPara.x = 116;
DisplayNumPara.MinDigits = 3;
if(Uint == 0)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0580_139_324);/*KM*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0580_163_324);/*KM*/
}
else
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0861_139_324);/*单位mile*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0861_163_324);/*单位mile*/
}
}
else if((Tripnumber<100)&&(Tripnumber>=10))
{
DisplayNumPara.x = 77;
DisplayNumPara.x = 93;
DisplayNumPara.MinDigits = 2;
if(Uint == 0)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0580_115_324);/*KM*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0580_139_324);/*KM*/
}
else
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0861_115_324);/*单位mile*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0861_139_324);/*单位mile*/
}
}
else if((Tripnumber<10)&&(Tripnumber>=0))
{
DisplayNumPara.x = 53;
DisplayNumPara.x = 93;
DisplayNumPara.MinDigits = 2;
if(Uint == 0)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0580_91_324);/*单位KM*/
SetPagePic(GRAPHICS_PAGE_0,Pic_0580_139_324);/*KM*/
}
else
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0861_91_324);/*单位mile*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0861_139_324);/*单位mile*/
}
}
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, Tripnumber);
......@@ -3444,48 +3568,54 @@ static void AMT630H_GUI_Trip(uint32_t Trip, uint8_t Uint)
DisplayNumPara.DecimalNum = 1;/*小数点后一位*/
if((Tripnumber<10000)&&(Tripnumber>=1000))
{
DisplayNumPara.x = 125;
DisplayNumPara.x = 140;
DisplayNumPara.MinDigits = 4;
if(Uint == 0)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0688_163_324);/*KM*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0580_187_324);/*单位km*/
}
else
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0863_163_324);/*单位mile*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0863_187_324);/*单位mile*/
}
}
else if((Tripnumber<1000)&&(Tripnumber>=100))
{
DisplayNumPara.x = 101;
DisplayNumPara.x = 116;
DisplayNumPara.MinDigits = 3;
SetPagePic(GRAPHICS_PAGE_0, Pic_0688_139_324);/*KM*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0863_139_324);/*单位mile*/
if(Uint == 0)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0580_163_324);/*KM*/
}
else
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0863_163_324);/*单位mile*/
}
}
else if((Tripnumber<100)&&(Tripnumber>=10))
{
DisplayNumPara.x = 77;
DisplayNumPara.x = 93;
DisplayNumPara.MinDigits = 2;
if(Uint == 0)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0688_115_324);/*KM*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0580_139_324);/*KM*/
}
else
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0863_115_324);/*单位mile*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0863_139_324);/*单位mile*/
}
}
else if((Tripnumber<10)&&(Tripnumber>=0))
{
DisplayNumPara.x = 53;
DisplayNumPara.x = 93;
DisplayNumPara.MinDigits = 2;
if(Uint == 0)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0688_91_324);/*单位KM*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0580_139_324);/*单位KM*/
}
else
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0863_91_324);/*单位mile*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0863_139_324);/*单位mile*/
}
}
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, Tripnumber);
......@@ -3834,8 +3964,6 @@ void AMT630H_GUI_BACKGRAND_SelfCheck()
SetPagePic(GRAPHICS_PAGE_0, Pic_0754_109_347);
}
}
/*指示灯显示*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0752_28_13);/*左转向*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0736_941_13);/*右转向*/
......@@ -3851,9 +3979,9 @@ void AMT630H_GUI_BACKGRAND_SelfCheck()
SetPagePic(GRAPHICS_PAGE_0, Pic_0737_875_23);/*WIFI*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0740_682_21);/*蓝牙*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0748_194_26);/*E*/
//SetPagePic(GRAPHICS_PAGE_0, Pic_0749_192_26);/*S*/
// AMT630H_GUI_Telephone(Telephone);
AMT630H_GUI_Voltage(KL30_VOLTAGE_Value);
AMT630H_GUI_TIME(Get_Dis_Hour_Time(), Get_Dis_Minute_Time());
if(KL30_VOLTAGE_time < 10)
{
......@@ -3863,12 +3991,8 @@ void AMT630H_GUI_BACKGRAND_SelfCheck()
{
KL30_VOLTAGE_time = 0;
KL30_VOLTAGE_Value = (ADC_Read_Signal(ADC_CH_KL30_VOLTAGE)) / 10;
}
AMT630H_GUI_Voltage(KL30_VOLTAGE_Value);
// AMT630H_GUI_Telephone(Telephone);
/*里程 无自检*/
/*里程无自检*/
if(Get_Dis_OdoAndTrip() == 0)
{
AMT630H_GUI_ODO(Get_ODO_Value() / 10, Get_Dis_Unit());
......@@ -3878,27 +4002,27 @@ void AMT630H_GUI_BACKGRAND_SelfCheck()
AMT630H_GUI_Trip(Get_Trip_Value(), Get_Dis_Unit());
}
/*燃油自检*/
if(g_u16fuelnumberup < 1200)
if(g_u16fuelnumberup < 600)
{
g_u16fuelnumberup += 6;
AMT630H_GUI_Fuel_SelfCheck(g_u16fuelnumberup/150);/*初始化g_u16fuelnumberup = 0*/
AMT630H_GUI_Fuel_SelfCheck(g_u16fuelnumberup/75);/*初始化g_u16fuelnumberup = 0*/
}
else
{
;
}
/*车速自检*/
if(g_u16vspeednumberup < 600)
if(g_u16vspeednumberup < 300)
{
AMT630H_GUI_VSpeed(g_u16vspeednumberup/3,Get_Dis_Unit());/*初始化g_u16vspeednumberup = 0*/
g_u16vspeednumberup+=6;
AMT630H_GUI_VSpeed(g_u16vspeednumberup,Get_Dis_Unit());/*初始化g_u16vspeednumberup = 0*/
g_u16vspeednumberup += 6;
}
else
{
if(g_u16vspeednumberdown >0)
{
g_u16vspeednumberdown-=6;/*初始化g_u16vspeednumberup=1200*/
AMT630H_GUI_VSpeed(g_u16vspeednumberdown/3,Get_Dis_Unit());/*if g_u16vspeednumberup=0 车速自检结束*/
g_u16vspeednumberdown -= 6;/*初始化g_u16vspeednumberup=1200*/
AMT630H_GUI_VSpeed(g_u16vspeednumberdown,Get_Dis_Unit());/*if g_u16vspeednumberup=0 车速自检结束*/
}
else
{
......@@ -3906,21 +4030,21 @@ void AMT630H_GUI_BACKGRAND_SelfCheck()
}
}
/*转速自检*/
if(g_u16espeednumberup <= 600)
if(g_u16espeednumberup <= 300)
{
AMT630H_GUI_ESpeed(g_u16espeednumberup*20);/*初始化g_u16espeednumberup = 0*/
g_u16espeednumberup+=6;
AMT630H_GUI_ESpeed(g_u16espeednumberup*40);/*初始化g_u16espeednumberup = 0*/
g_u16espeednumberup += 6;
}
else
{
if(g_u16espeednumberdown > 0)
{
AMT630H_GUI_ESpeed(g_u16espeednumberdown*20);/*初始化g_u16espeednumberdown = 600*/
g_u16espeednumberdown-=6;/*g_u16espeednumberdown = 0 转速自检结束*/
AMT630H_GUI_ESpeed(g_u16espeednumberdown*40);/*初始化g_u16espeednumberdown = 600*/
g_u16espeednumberdown -= 6;/*g_u16espeednumberdown = 0 转速自检结束*/
}
}
/*结束状态*/
if(g_u16fuelnumberup == 1200)
if(g_u16fuelnumberup == 600)
{
AMT630H_GUI_Fuel_SelfCheck(8);
}
......@@ -3933,7 +4057,7 @@ void AMT630H_GUI_BACKGRAND_SelfCheck()
AMT630H_GUI_ESpeed(g_u16espeednumberdown);
}
/*结束自检*/
if((g_u16fuelnumberup == 1200)&&(g_u16vspeednumberdown == 0)&&(g_u16espeednumberdown == 0))
if((g_u16fuelnumberup == 600)&&(g_u16vspeednumberdown == 0)&&(g_u16espeednumberdown == 0))
{
g_u8SelfCheck = 1;/*自检结束标志*/
}
......@@ -4121,8 +4245,16 @@ void AMT630H_GUI_ReadPosittion_Display(void)
AMT630H_GUI_Language_Setting(MENU_ITEM_LANGUAGE_ENGLISH);
break;
case MENU_ITEM_FAULT_INFORMATION: /*27 故障信息*/
if(OTA_Update_Flag == 0)
{
AMT630H_GUI_SETTING();
AMT630H_GUI_Fault_Information();
}
else
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0653_54_499);
SetPagePic(GRAPHICS_PAGE_0, Pic_0193_0_0);
}
break;
case MENU_ITEM_PHONE_CONNECT: /*28 手机互联*/
AMT630H_GUI_SETTING();
......
#ifndef PICBIN_H
#define PICBIN_H
/* Flash Bin Version:20240817 2024-08-17 11:18:35 Compression ratio:70.00% */
/* Flash Bin Version:20240821 2024-08-21 09:09:13 Compression ratio:70.00% */
#define Pic_0001 1
#define Pic_0002 2
#define Pic_0003 3
......
......@@ -62,6 +62,7 @@ void Key_Operation_Right(Key_Event_en_t enKeyEvent)//确认
break;
case KEY_EVENT_LONG_PRESS_4: //10s
//TYW_RESET_ODO();
Get_Into_OTA_Update_Mode();
break;
case KEY_EVENT_OFF_TO_ON:
break;
......@@ -158,10 +159,16 @@ void Key_Wakeup_Init_EXample(void)
void Key_TimeOut_Service(void)
{
if(OTA_Update_Flag == 0)
{
if((MenuData.Back_Time_Left_Flag == 1)&&(MenuData.Back_Time_Right_Flag == 1))
{
Menu_Service(MENU_KEY_TIMEOUT);
}
}
else
{
}
}
void Key_Auto_Save(void)
......@@ -274,6 +281,14 @@ void Key_Event_Short_Press_Right(void)//确认
}
}
uint8_t OTA_Update_Flag = 0;
void Get_Into_OTA_Update_Mode(void)
{
if(Menu_Get_Current_Cursor_Information() == MENU_ITEM_FAULT_INFORMATION)
{
OTA_Update_Flag = ! OTA_Update_Flag;
}
}
void KEY_LEFT_EVENT_NONE_Service(void)
{
MenuData.Back_Time_Left++;
......
......@@ -47,6 +47,7 @@ typedef struct
uint8_t Clock_Flash;
}_Menu_Data;
extern uint8_t OTA_Update_Flag;
extern uint8_t ClearODO_Flag;
extern uint8_t g_u8Cursor_Posittion;
extern RTC_CounterTypeDef counter_val;
......@@ -59,6 +60,7 @@ Key_Status_en_t Key_Status_Read_Left(void);
Key_Status_en_t Key_Status_Read_Right(void);
void Key_Event_Short_Press_Left(void);
void Key_Event_Short_Press_Right(void);
void Get_Into_OTA_Update_Mode(void);
void KEY_RIGHT_EVENT_NONE_Service(void);
void KEY_LEFT_EVENT_NONE_Service(void);
void Key_Auto_Save(void);
......
......@@ -58,7 +58,7 @@ Linelib_uint8_t Get_LINE_IN_High_Beam(void)
Linelib_uint8_t Get_LINE_IN_Efi_Fault(void)
{
Linelib_uint8_t ret = 0U;
if (RTE_GPIO_Get_Level(Engine_Failure_MCU))
if (RTE_GPIO_Get_Level(MAINTENANCE_LAMP_OUT))
{
ret = 1u;
}
......
......@@ -5,6 +5,10 @@
#include "Line_In\Line_In_user.h"
#include "Components.h"
uint8_t ECU_Engine_Temperature_flag = 0;
static Tellib_uint16_t LED_Turn_Left_Judgement(void);
static void LED_Turn_Left_Execution(Tellib_uint16_t led_status);
static Tellib_uint16_t LED_Turn_Right_Judgement(void);
......@@ -228,7 +232,7 @@ static Tellib_uint16_t LED_TCS_Judgement(void)
}
else
{
if(Get_CAN_CH0_ID_37B_Sig_TCS_Work_Mode == 0x0)
if(Get_CAN_CH0_ID_37B_Sig_TCS_Work_Mode() == 0x0)
{
if(Get_CAN_CH0_ID_37B_Sig_TCS_Warning_Lamp() == 0x1)
{
......@@ -243,26 +247,15 @@ static Tellib_uint16_t LED_TCS_Judgement(void)
LED_STATE = 0u;
}
}
else if(Get_CAN_CH0_ID_37B_Sig_TCS_Work_Mode == 0x0)
{
if(Get_CAN_CH0_ID_37B_Sig_TCS_Warning_Lamp() == 0x1)
else if(Get_CAN_CH0_ID_37B_Sig_TCS_Work_Mode() == 0x1u)
{
LED_STATE = 2u;/*TCS/亮*/
}
else if(Get_CAN_CH0_ID_37B_Sig_TCS_Warning_Lamp() == 0x0)
{
LED_STATE = 0u;
}
else
{
LED_STATE = 0u;
}
}
else
{
;
}
}
return LED_STATE;
}
static void LED_TCS_Execution(Tellib_uint16_t led_status)
......@@ -283,7 +276,7 @@ static Tellib_uint16_t LED_HEV_Judgement(void)
}
else
{
if((Get_CAN_CH0_ID_111_Sig_ISG_Ready() == 0x01UL)||((Get_CAN_CH0_ID_111_Sig_ISG_Power() == 1u)&&(Get_CAN_CH0_ID_111_Sig_ISG_Power_Enable() == 0u)))
if((Get_CAN_CH0_ID_111_Sig_ISG_Ready() == 0x01UL)||((Get_CAN_CH0_ID_111_Sig_ISG_Power() == 1u)&&(Get_CAN_CH0_ID_111_Sig_ISG_Power_Enable() == 2u))||((Get_CAN_CH0_ID_111_Sig_ISG_Power() == 1u)&&(Get_CAN_CH0_ID_111_Sig_ISG_Power_Enable() == 1u)))
{
LED_STATE = 1u;
}
......@@ -342,34 +335,69 @@ static void LED_Fuel_Level_Low_Execution(Tellib_uint16_t led_status)
{
}
// uint16_t ECU_Engine_Temperature_R =0;
// uint32_t test_ECU_Engine_Temperature =0;
/*信号来源:ECU_101 +硬线-P11 阻值 CAN>硬线*/
static Tellib_uint16_t LED_Coolant_Temperature_Judgement(void)
{
Tellib_uint16_t LED_STATE = 0u;
if (CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CH0_101_Msg_Count) == CAN_SIG_LOST)
{
// ECU_Engine_Temperature_R = ADC_Read_Signal(ADC_CH_COOLANT_TEMP1_R);
if(ADC_Read_Signal(ADC_CH_COOLANT_TEMP1_R) <= 20)
{
ECU_Engine_Temperature_flag = 1;
LED_STATE = 1u;
}
else if(ADC_Read_Signal(ADC_CH_COOLANT_TEMP1_R) >= 23)
{
ECU_Engine_Temperature_flag = 0;
LED_STATE = 0u;
if(Line_In_Get_Status(LINE_IN_Coolant_Temperature))
}
else
{
if(ECU_Engine_Temperature_flag == 1)
{
LED_STATE = 1u;
}
else if(ECU_Engine_Temperature_flag == 0)
{
LED_STATE = 0u;
}
else
{
LED_STATE = 0u;
}
}
}
else
{
if(Get_CAN_CH0_ID_101_Sig_ECU_Engine_Temperature_State() == 0x01UL)
// test_ECU_Engine_Temperature = Get_CAN_CH0_ID_101_Sig_ECU_Engine_Temperature();
if(Get_CAN_CH0_ID_101_Sig_ECU_Engine_Temperature() >= 120 )
{
ECU_Engine_Temperature_flag = 1;
LED_STATE = 1u;
}
else if(Get_CAN_CH0_ID_101_Sig_ECU_Engine_Temperature() <= 118)
{
ECU_Engine_Temperature_flag = 0;
LED_STATE = 0u;
}
else
{
if(ECU_Engine_Temperature_flag == 1)
{
LED_STATE = 1u;
}
else if(ECU_Engine_Temperature_flag == 0)
{
LED_STATE = 0u;
}
else
{
LED_STATE = 0u;
}
}
}
return LED_STATE;
}
......
#include "cgc.h"
uint8_t USE_HSE_SYSTYEM_CLOCK = SYSTYEM_CLOCK_CLOSE;
uint8_t USE_HSI_SYSTYEM_CLOCK = SYSTYEM_CLOCK_CLOSE;
uint8_t USE_LSE_SYSTYEM_CLOCK = SYSTYEM_CLOCK_CLOSE;
uint8_t USE_LSI_SYSTYEM_CLOCK = SYSTYEM_CLOCK_CLOSE;
/**
* @brief Enables or disables the PER0 peripheral clock.
* @note After reset, the peripheral clock (used for registers read/write access)
......@@ -107,7 +102,6 @@ void CGC_PER2PeriphClockCmd(uint32_t CGC_PER2Periph, FunctionalState NewState)
CGC->PER2 &= ~CGC_PER2Periph;
}
}
/**
* @brief Enables or disables the PER3 peripheral clock.
* @note After reset, the peripheral clock (used for registers read/write access)
......@@ -155,32 +149,29 @@ void CGC_Osc_Setting(OSC_Pin_Mode_t main,OSC_Speed_Mode_t amph, OSC_Pin_Mode_t s
uint8_t tmp;
tmp = 0x00;
if(main == OSC_PORT )
if(main == OSC_OSCILLATOR)
{
tmp |= (0 << CGC_CMC_EXCLK_Pos) | (0 << CGC_CMC_OSCSEL_Pos);
tmp |= (0 << CGC_CMC_EXCLK_Pos) | (1 << CGC_CMC_OSCSEL_Pos) | (((uint8_t)amph) << CGC_CMC_AMPH_Pos);
}
if(sub == OSC_PORT )
else if(main == OSC_PORT )
{
tmp |= (0 << CGC_CMC_EXCLKS_Pos) | (0 << CGC_CMC_OSCSELS_Pos);
tmp |= (0 << CGC_CMC_EXCLK_Pos) | (0 << CGC_CMC_OSCSEL_Pos);
}
if(main == OSC_OSCILLATOR)
else if(main == OSC_EXCLK)
{
tmp |= (0 << CGC_CMC_EXCLK_Pos) | (1 << CGC_CMC_OSCSEL_Pos) | (1 << CGC_CMC_AMPH_Pos);
tmp |= (1 << CGC_CMC_EXCLK_Pos) | (1 << CGC_CMC_OSCSEL_Pos);
}
if(sub == OSC_OSCILLATOR)
{
tmp |= (0 << CGC_CMC_EXCLKS_Pos) | (1 << CGC_CMC_OSCSELS_Pos) | (1 << CGC_CMC_AMPHS_Pos);
tmp |= (0 << CGC_CMC_EXCLKS_Pos) | (1 << CGC_CMC_OSCSELS_Pos) | (((uint8_t)amphs) << CGC_CMC_AMPHS_Pos);
}
if(main == OSC_EXCLK)
else if(sub == OSC_PORT )
{
tmp |= (1 << CGC_CMC_EXCLK_Pos) | (1 << CGC_CMC_OSCSEL_Pos);
tmp |= (0 << CGC_CMC_EXCLKS_Pos) | (0 << CGC_CMC_OSCSELS_Pos);
}
if(sub == OSC_EXCLK)
else if(sub == OSC_EXCLK)
{
tmp |= (1 << CGC_CMC_EXCLKS_Pos) | (1 << CGC_CMC_OSCSELS_Pos);
}
......@@ -188,7 +179,7 @@ void CGC_Osc_Setting(OSC_Pin_Mode_t main,OSC_Speed_Mode_t amph, OSC_Pin_Mode_t s
CGC->CMC = tmp;
/* Set fMX */
CGC->CSC &= ~(1<<7) ; //MSTOP = 0
CGC->CSC &= ~(1 << CGC_CSC_MSTOP_Pos) ; //MSTOP = 0
if(main == OSC_OSCILLATOR)
{
......@@ -203,7 +194,7 @@ void CGC_Osc_Setting(OSC_Pin_Mode_t main,OSC_Speed_Mode_t amph, OSC_Pin_Mode_t s
}
/* Set fSUB */
CGC->CSC &= ~(1<<6) ; //XTSTOP = 0
CGC->CSC &= ~(1 << CGC_CSC_XTSTOP_Pos) ; //XTSTOP = 0
if(sub == OSC_OSCILLATOR)
{
......@@ -234,25 +225,24 @@ void CGC_Osc_Setting(OSC_Pin_Mode_t main,OSC_Speed_Mode_t amph, OSC_Pin_Mode_t s
*/
void CGC_LSEConfig(OSC_Pin_Mode_t sub, OSC_Power_Mode_t amphs)
{
/* Check the parameters */
assert_param(IS_CGC_LSE_MODE(sub));
assert_param(IS_CGC_LSE_PWR_MODE(amphs));
volatile uint32_t w_count;
uint8_t tmp;
/* Check the parameters */
assert_param(IS_CGC_OSC_PIN_MODE(sub));
assert_param(IS_CGC_LSE_PWR_MODE(amphs));
tmp = 0x00;
if(sub == OSC_PORT )
{
tmp |= (0 << CGC_CMC_EXCLKS_Pos) | (0 << CGC_CMC_OSCSELS_Pos);
}
if(sub == OSC_OSCILLATOR)
{
tmp |= (0 << CGC_CMC_EXCLKS_Pos) | (1 << CGC_CMC_OSCSELS_Pos) | (amphs << CGC_CMC_AMPHS_Pos);
tmp |= (0 << CGC_CMC_EXCLKS_Pos) | (1 << CGC_CMC_OSCSELS_Pos) | (((uint8_t)amphs) << CGC_CMC_AMPHS_Pos);
}
if(sub == OSC_EXCLK)
else if(sub == OSC_PORT)
{
tmp |= (0 << CGC_CMC_EXCLKS_Pos) | (0 << CGC_CMC_OSCSELS_Pos);
}
else if(sub == OSC_EXCLK)
{
tmp |= (1 << CGC_CMC_EXCLKS_Pos) | (1 << CGC_CMC_OSCSELS_Pos);
}
......@@ -260,7 +250,7 @@ void CGC_LSEConfig(OSC_Pin_Mode_t sub, OSC_Power_Mode_t amphs)
CGC->CMC = tmp;
/* Set fSUB */
CGC->CSC &= ~(1<<6) ; //XTSTOP = 0
CGC->CSC &= ~(1 << CGC_CSC_XTSTOP_Pos) ; //XTSTOP = 0
if(sub == OSC_OSCILLATOR)
{
......@@ -275,7 +265,7 @@ void CGC_LSEConfig(OSC_Pin_Mode_t sub, OSC_Power_Mode_t amphs)
/**
* @brief Configures the External High Speed oscillator (HSE).
* @note External High Speed oscillator clock source can be choose from PORT
* @note External High Speed oscillator clock source can be choose from PORT��
* OSC_OSCILLATOR or external input clock.
* at same time, OSC_OSCILLATOR can be 1MHz < fx < 10MHz or 10MHz < fx < 20MHz
* @param pinMode
......@@ -290,27 +280,25 @@ void CGC_LSEConfig(OSC_Pin_Mode_t sub, OSC_Power_Mode_t amphs)
*/
void CGC_HSEConfig(OSC_Pin_Mode_t main, OSC_Speed_Mode_t amph)
{
/* Check the parameters */
assert_param(IS_CGC_LSE_MODE(main));
assert_param(IS_CGC_HSE_OSC_SPEED(amph));
volatile uint32_t w_count;
uint8_t temp_stab_set;
uint8_t temp_stab_wait;
uint8_t tmp;
/* Check the parameters */
assert_param(IS_CGC_OSC_PIN_MODE(main));
assert_param(IS_CGC_HSE_OSC_SPEED(amph));
tmp = 0x00;
if(main == OSC_PORT )
{
tmp |= (0 << CGC_CMC_EXCLK_Pos) | (0 << CGC_CMC_OSCSEL_Pos);
}
if(main == OSC_OSCILLATOR)
{
tmp |= (0 << CGC_CMC_EXCLK_Pos) | (1 << CGC_CMC_OSCSEL_Pos) | (amph << CGC_CMC_AMPH_Pos);
tmp |= (0 << CGC_CMC_EXCLK_Pos) | (1 << CGC_CMC_OSCSEL_Pos) | (((uint8_t)amph) << CGC_CMC_AMPH_Pos);
}
if(main == OSC_EXCLK)
else if(main == OSC_PORT )
{
tmp |= (0 << CGC_CMC_EXCLK_Pos) | (0 << CGC_CMC_OSCSEL_Pos);
}
else if(main == OSC_EXCLK)
{
tmp |= (1 << CGC_CMC_EXCLK_Pos) | (1 << CGC_CMC_OSCSEL_Pos);
}
......@@ -318,7 +306,7 @@ void CGC_HSEConfig(OSC_Pin_Mode_t main, OSC_Speed_Mode_t amph)
CGC->CMC = tmp;
/* Set fMX */
CGC->CSC &= ~(1<<7) ; //MSTOP = 0
CGC->CSC &= ~(1 << CGC_CSC_MSTOP_Pos) ; //MSTOP = 0
if(main == OSC_OSCILLATOR)
{
......@@ -333,6 +321,18 @@ void CGC_HSEConfig(OSC_Pin_Mode_t main, OSC_Speed_Mode_t amph)
}
}
/* Clock switching needs to be executed in SRAM */
#if defined (__CC_ARM)
#pragma arm section code = "RW_FUNC_PLL" // Arm Compiler 5
#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION > 6010050)
#pragma clang section text = "RW_FUNC_PLL" // Arm Compiler 6
#endif
#if defined(__ICCARM__)
__ramfunc
#endif
/**
* @brief Enables External Low Speed oscillator (LSE/Fsub) used as CPU
* system clock and Clock source of peripheral hardware circuit.
......@@ -342,9 +342,12 @@ void CGC_HSEConfig(OSC_Pin_Mode_t main, OSC_Speed_Mode_t amph)
void CGC_LSE_CFG_AS_FCLK()
{
CGC->CKC = (1 << CGC_CKC_CSS_Pos) | (0 << CGC_CKC_MCM0_Pos);
__NOP();
__NOP();
__NOP();
__NOP();
while ((CGC->CKC & CGC_CKC_CLS_Msk) == 0);
USE_LSE_SYSTYEM_CLOCK = SYSTYEM_CLOCK_OPEN;
}
/**
......@@ -356,8 +359,11 @@ void CGC_LSE_CFG_AS_FCLK()
void CGC_HSE_CFG_AS_FCLK()
{
CGC->CKC = (0 << CGC_CKC_CSS_Pos) | (1 << CGC_CKC_MCM0_Pos );
__NOP();
__NOP();
__NOP();
__NOP();
while((CGC->CKC & CGC_CKC_MCS_Msk) == 0);
USE_HSE_SYSTYEM_CLOCK = SYSTYEM_CLOCK_OPEN;
}
/**
......@@ -369,12 +375,48 @@ void CGC_HSE_CFG_AS_FCLK()
*/
void CGC_HSI_CFG_AS_FCLK()
{
CGC->CKC = 0 << CGC_CKC_CSS_Pos ;
if (CGC->MCKC & CGC_MCKC_CKSTR_Msk)
{
CGC->MCKC &= ~(1 << CGC_MCKC_CKSELR_Pos);
__NOP();
__NOP();
__NOP();
__NOP();
while(CGC->MCKC & CGC_MCKC_CKSTR_Msk);
}
CGC->CKC = (0 << CGC_CKC_CSS_Pos) | (0 << CGC_CKC_MCM0_Pos );
__NOP();
__NOP();
__NOP();
__NOP();
while((CGC->CKC & (CGC_CKC_CSS_Msk | CGC_CKC_MCS_Msk)));
}
/**
* @brief Enables output frequency by PLL used as CPU
* system clock and Clock source of peripheral hardware circuit.
* @note
* @retval None
*/
void CGC_PLL_CFG_AS_FCLK(void)
{
CGC->MCKC |= (1 << CGC_MCKC_CKSELR_Pos);
__NOP();
__NOP();
__NOP();
__NOP();
while((CGC->MCKC & CGC_MCKC_CKSTR_Msk) == 0);
while((CGC->CKC & CGC_CKC_CSS_Msk) == 1);
USE_HSI_SYSTYEM_CLOCK = SYSTYEM_CLOCK_OPEN;
CGC->CKC = (0 << CGC_CKC_CSS_Pos) | (0 << CGC_CKC_MCM0_Pos );
__NOP();
__NOP();
__NOP();
__NOP();
while(CGC->CKC & CGC_CKC_CSS_Msk);
}
#if 0
/**
* @brief Enables External High Speed oscillator (HSE) used as MAIN system clock
* which can provided for clock output/buzzer or CPU/peripheral hardware circuit.
......@@ -383,7 +425,11 @@ void CGC_HSI_CFG_AS_FCLK()
*/
void CGC_HSE_CFG_AS_FMAIN()
{
CGC->CKC = 1 << CGC_CKC_MCM0_Pos;
CGC->CKC = (1 << CGC_CKC_MCM0_Pos);
__NOP();
__NOP();
__NOP();
__NOP();
while((CGC->CKC & CGC_CKC_MCS_Msk) == 0);
}
/**
......@@ -394,9 +440,20 @@ void CGC_HSE_CFG_AS_FMAIN()
*/
void CGC_HSI_CFG_AS_FMAIN()
{
CGC->CKC = 0 << CGC_CKC_MCM0_Pos;
while((CGC->CKC & CGC_CKC_MCS_Msk) == 1);
CGC->CKC = (0 << CGC_CKC_MCM0_Pos);
__NOP();
__NOP();
__NOP();
__NOP();
while(CGC->CKC & CGC_CKC_MCS_Msk);
}
#endif
#if defined (__CC_ARM)
#pragma arm section code // Arm Compiler 5
#elif defined (__ARMCC_VERSION) && (__ARMCC_VERSION > 6010050)
#pragma clang section text = "" // Arm Compiler 6
#endif
/**
* @brief Setting PLL used as system clock and Clock source of peripheral hardware circuit.
......@@ -451,7 +508,7 @@ void CGC_PLL_Setting(PLL_Src_t src, PLL_Div_t div, PLL_Mul_t mul)
CGC->PLLCR = tmp;
CGC->PLLCR |= 1<<0; /* PLLON = 1 */
CGC->PLLCR |= (1 << CGC_PLLCR_PLLON_Pos); /* PLLON = 1 */
for (i = 0U; i <= 2000; i++)
{
__NOP();
......@@ -459,19 +516,6 @@ void CGC_PLL_Setting(PLL_Src_t src, PLL_Div_t div, PLL_Mul_t mul)
}
/**
* @brief Enables output frequency by PLL used as CPU
* system clock and Clock source of peripheral hardware circuit.
* @note
* @retval None
*/
__attribute__((section("RW_FUNC_PLL"))) void CGC_PLL_CFG_AS_FCLK(void)
{
CGC->MCKC = 0x01;
while((CGC->MCKC & CGC_MCKC_CKSTR_Msk) == 0);
USE_HSE_SYSTYEM_CLOCK = SYSTYEM_CLOCK_OPEN;
}
/**
* @brief This function stops the main system clock oscilator (MOSC).
* @param None
......@@ -479,7 +523,7 @@ __attribute__((section("RW_FUNC_PLL"))) void CGC_PLL_CFG_AS_FCLK(void)
*/
void CGC_MainOsc_Stop(void)
{
CGC->CSC |= 1<<7; /* MSTOP = 1 */
CGC->CSC |= (1 << CGC_CSC_MSTOP_Pos); /* MSTOP = 1 */
}
/**
......@@ -489,7 +533,7 @@ void CGC_MainOsc_Stop(void)
*/
void CGC_MainOsc_Start(void)
{
CGC->CSC &= ~(1<<7); /* MSTOP = 0 */
CGC->CSC &= ~(1 << CGC_CSC_MSTOP_Pos); /* MSTOP = 0 */
}
/**
......@@ -499,7 +543,7 @@ void CGC_MainOsc_Start(void)
*/
void CGC_SubOsc_Stop(void)
{
CGC->CSC |= 1<<6; /* XTSTOP = 1 */
CGC->CSC |= (1 << CGC_CSC_XTSTOP_Pos); /* XTSTOP = 1 */
}
/**
......@@ -509,7 +553,7 @@ void CGC_SubOsc_Stop(void)
*/
void CLK_SubOsc_Start(void)
{
CGC->CSC &= ~(1<<6); /* XTSTOP = 0 */
CGC->CSC &= ~(1 << CGC_CSC_XTSTOP_Pos); /* XTSTOP = 0 */
}
/**
......@@ -519,7 +563,7 @@ void CLK_SubOsc_Start(void)
*/
void CGC_Hoco_Stop(void)
{
CGC->CSC |= 1<<0; /* HIOSTOP = 1 */
CGC->CSC |= (1 << CGC_CSC_HIOSTOP_Pos); /* HIOSTOP = 1 */
}
/**
......@@ -529,5 +573,5 @@ void CGC_Hoco_Stop(void)
*/
void CGC_Hoco_Start(void)
{
CGC->CSC &= ~(1<<0); /* HIOSTOP = 0 */
CGC->CSC &= ~(1 << CGC_CSC_HIOSTOP_Pos); /* HIOSTOP = 0 */
}
......@@ -53,6 +53,7 @@ void Sys_20ms_Tasks(void)
void Sys_50ms_Tasks(void)
{
// BlueToothService();
UpdateGraphics();
Telltales_Management();
g_u8Cursor_Posittion = Menu_Get_Current_Cursor_Information();
......@@ -82,7 +83,7 @@ void Sys_100ms_Tasks(void)
Coolant_Cal_Sevice(100u);
Services_Mileage_Callback();
// Data_Mileage_Clear();
OTAUpdateService();
RTE_GPIO_Config(RTE_GPIO_PORT05_PIN04, GpioOut_High);
//BackLight_Process();
//TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 100);
......
#new Option
#Sun Aug 18 11:51:19 CST 2024
#Sun Aug 18 15:35:55 CST 2024
IsSort=true
MergeFlashIsCompression=false
ChangeAppFilePath=
MergeCanXLSPath=
RH850_D1M1AGPIOJSONpath=
DBFFilePath=
MergeCrcTtpe=21
MergeCrcTtpe=29
MergeBootFilePath=D\:\\git\\haojin750tft\\Firmware\\utility\\Boot_Release\\HaoJin_750TFT_HJYB-7500TFT_BV1.03_20240816.hex
IsMergeChangeAddress=false
MergeFlashOutPutFilePath=
......@@ -47,7 +47,7 @@ IsMergeCreateHex=false
MergeFlashIsCreateREC=false
TTFExtractTTFpath=
MergeImageFilePath=
IsMergeCreateUpdateBin=true
IsMergeCreateUpdateBin=false
MergeImageSize=128M
CRCFilePath=
MergeFlashCompressionFormat=
......@@ -56,7 +56,7 @@ IsHexDisplay=true
MergeLineInXLSPath=
MergeFlashInPutFilePath=
MergeFlashIsInternal=false
MergeOutPutFilePath=D\:\\\u9879\u76EE\\\u8C6A\u8FDB\\haojin750TFT\\srec
MergeOutPutFilePath=D\:\\\u9879\u76EE\\\u8C6A\u8FDB\\haojin750TFT\\srec-8.18
MergeAppFilePath=D\:\\git\\haojin750tft\\Firmware\\Project\\Cmsemicon\\BAT32A279\\MDK_ARM\\Objects\\HaoJin750TFT.hex
MergeTelltalesXLSPath=
FillingByte=-86
......
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